Getting worldMatrix from animating SkinnedMesh bones

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.

Okay setting the instanced.instanceMatrix.needsUpdate = true; is working.

However, is there another way of getting the bone transforms without using a helper?

It should not be necessary to recompute the world matrix. Can you please try it like in this fiddle:

It prints the world matrix of a specific bone to the browser console after 1 second.