From ed7f008517fd8ead9b0fd044a796fda0d394060c Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Wed, 30 May 2018 18:12:40 -0700 Subject: [PATCH] checking edge case of if input vectors are zero --- interface/src/ui/overlays/Billboardable.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/interface/src/ui/overlays/Billboardable.cpp b/interface/src/ui/overlays/Billboardable.cpp index 4ca024f2e5..28b6f65205 100644 --- a/interface/src/ui/overlays/Billboardable.cpp +++ b/interface/src/ui/overlays/Billboardable.cpp @@ -41,12 +41,14 @@ bool Billboardable::pointTransformAtCamera(Transform& transform, glm::quat offse glm::vec3 cameraPos = qApp->getCamera().getPosition(); // use the referencial from the avatar, y isn't always up glm::vec3 avatarUP = DependencyManager::get()->getMyAvatar()->getWorldOrientation()*Vectors::UP; - - glm::quat rotation(conjugate(toQuat(glm::lookAt(cameraPos, billboardPos, avatarUP)))); - - transform.setRotation(rotation); - transform.postRotate(offsetRotation); - return true; + glm::vec3 zeroPos{ 0.0f, 0.0f, 0.0f }; + if (!(glm::all(glm::equal(cameraPos, zeroPos)) || glm::all(glm::equal(billboardPos, zeroPos)) || + glm::all(glm::equal(avatarUP, zeroPos)))) { + glm::quat rotation(conjugate(toQuat(glm::lookAt(cameraPos, billboardPos, avatarUP)))); + transform.setRotation(rotation); + transform.postRotate(offsetRotation); + return true; + } } return false; }