diff options
| author | Gai Clary <gaia.clary@machinimatrix.org> | 2026-04-13 23:45:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-14 00:45:38 +0300 |
| commit | 3ca4bf1ac0a3b26e961579a86869181104c11b5f (patch) | |
| tree | 56ba1e8dd9cf25d24210813dbbe98c68e1f14ce6 /indra/llappearance/llavatarappearance.cpp | |
| parent | 4926a066dd5c502d9d2c155a323936ea6e8cb8e0 (diff) | |
#5639 Fix glTF collision volume bind reconstruction
The glTF importer rebuilt collision volume override-rest matrices from the imported translation override and viewer-side scale only. That dropped the collision volume rotation defined in avatar_skeleton.xml and produced incorrect inverse bind matrices for rotated collision volumes, especially the torso volumes that use non-uniform scale. The result was a visible mismatch between rigged mesh imported from .glb and the equivalent .dae upload.
Diffstat (limited to 'indra/llappearance/llavatarappearance.cpp')
| -rw-r--r-- | indra/llappearance/llavatarappearance.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index d2862a5215..c8fd2cba70 100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -1647,10 +1647,10 @@ glm::mat4 LLAvatarBoneInfo::getJointMatrix() glm::mat4 mat(1.0f); // 1. Scaling mat = glm::scale(mat, glm::vec3(mScale[0], mScale[1], mScale[2])); - // 2. Rotation (Euler angles rad) - mat = glm::rotate(mat, mRot[0], glm::vec3(1, 0, 0)); - mat = glm::rotate(mat, mRot[1], glm::vec3(0, 1, 0)); - mat = glm::rotate(mat, mRot[2], glm::vec3(0, 0, 1)); + // 2. Rotation (avatar_skeleton.xml stores Euler angles in degrees) + mat = glm::rotate(mat, glm::radians(mRot[0]), glm::vec3(1, 0, 0)); + mat = glm::rotate(mat, glm::radians(mRot[1]), glm::vec3(0, 1, 0)); + mat = glm::rotate(mat, glm::radians(mRot[2]), glm::vec3(0, 0, 1)); // 3. Position mat = glm::translate(mat, glm::vec3(mPos[0], mPos[1], mPos[2])); return mat; |
