I have a SkinnedMesh
I’ve loaded from a .fbx
that I’m playing an animation on using a mixer. This all works fine, the mesh animates correctly.
However, I want to get worldMatrix
values for all the bones, however no matter how I try and get these values, they seem to always be static.
The closest I’ve gotten is creating a SkeletonHelper
, explicitly calling bone.updateMatrixWorld(true);
on each of the helper.bones[]
, then reading their bone.worldMatrix
, however that only got me the first frame of animation, despite the fact I’m reading these values every frame.
For debugging I’m using an instanced static mesh to show where the matrices I’m reading are, so my animation loop looks like:
controls.update();
if (mixer) {
mixer.update(clock.getDelta());
let i=0;
helper.bones.forEach(function (bone) {
if(bone instanceof THREE.Bone) {
bone.updateMatrixWorld(true);
instanced_mesh.setMatrixAt(i, bone.matrixWorld);
i++;
}
});
}
renderer.render(scene, camera);
All other approaches have just returned the skeleton in its t-pose. Would appreciate any advice.