AnimPose::AnimPose(const glm::mat4& mat) { scale = extractScale(mat); // quat_cast doesn't work so well with scaled matrices, so cancel it out. glm::mat4 tmp = glm::scale(mat, 1.0f / scale); rot = glm::normalize(glm::quat_cast(tmp)); trans = extractTranslation(mat); }
float extractUniformScale(const glm::mat4& matrix) { return extractUniformScale(extractScale(matrix)); }
glm::quat glmExtractRotation(const glm::mat4& matrix) { glm::vec3 scale = extractScale(matrix); // quat_cast doesn't work so well with scaled matrices, so cancel it out. glm::mat4 tmp = glm::scale(matrix, 1.0f / scale); return glm::normalize(glm::quat_cast(tmp)); }
AnimPose::AnimPose(const glm::mat4& mat) { scale = extractScale(mat); rot = glm::normalize(glm::quat_cast(mat)); trans = extractTranslation(mat); }