Skip to content

Commit

Permalink
fix: Fix parsing animation from VRMA with scales
Browse files Browse the repository at this point in the history
setFromRotationMatrix don't work with world matrices with scales
replaced with decompose
  • Loading branch information
0b5vr committed Feb 14, 2024
1 parent d8b3127 commit 155382e
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions packages/three-vrm-animation/src/VRMAnimationLoaderPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,10 @@ export class VRMAnimationLoaderPlugin implements GLTFLoaderPlugin {
const worldMatrix = worldMatrixMap.get(boneName)!;
const parentWorldMatrix = worldMatrixMap.get(parentBoneName)!;

_quatA.setFromRotationMatrix(worldMatrix).normalize().invert();
_quatB.setFromRotationMatrix(parentWorldMatrix).normalize();
worldMatrix.decompose(_v3A, _quatA, _v3A);
_quatA.invert();

parentWorldMatrix.decompose(_v3A, _quatB, _v3A);

const trackValues = arrayChunk(origTrack.values, 4).flatMap((q) =>
_quatC.fromArray(q).premultiply(_quatB).multiply(_quatA).toArray(),
Expand Down

0 comments on commit 155382e

Please sign in to comment.