diff --git a/libraries/shared/src/Transform.cpp b/libraries/shared/src/Transform.cpp index 296f0743ca..9945091ed0 100644 --- a/libraries/shared/src/Transform.cpp +++ b/libraries/shared/src/Transform.cpp @@ -43,12 +43,8 @@ void Transform::evalRotationScale(Quat& rotation, Vec3& scale, const Mat3& rotat // extract scale of the matrix as the length of each axis Mat3 scaleMat = glm::inverse(rotationMat) * rotationScaleMatrix; - scale = Vec3(scaleMat[0][0], scaleMat[1][1], scaleMat[2][2]); - if (scale.x < ACCURACY_THREASHOLD) scale.x = ACCURACY_THREASHOLD; - if (scale.y < ACCURACY_THREASHOLD) scale.y = ACCURACY_THREASHOLD; - if (scale.z < ACCURACY_THREASHOLD) scale.z = ACCURACY_THREASHOLD; + scale = glm::max(Vec3(ACCURACY_THREASHOLD), Vec3(scaleMat[0][0], scaleMat[1][1], scaleMat[2][2])); - // Let's work on a local matrix containing rotation only Mat3 matRot( rotationScaleMatrix[0] / scale.x, diff --git a/libraries/shared/src/Transform.h b/libraries/shared/src/Transform.h index d1dd04811f..6ad106063f 100644 --- a/libraries/shared/src/Transform.h +++ b/libraries/shared/src/Transform.h @@ -277,7 +277,9 @@ inline Transform::Mat4& Transform::getMatrix(Transform::Mat4& result) const { } inline Transform::Mat4& Transform::getInverseMatrix(Transform::Mat4& result) const { - return evalInverse(Transform()).getMatrix(result); + Transform inverse; + evalInverse(inverse); + return inverse.getMatrix(result); } inline void Transform::evalFromRawMatrix(const Mat4& matrix) {