Retargeting issues

I’ve been attempting retargeting in ThreeJS using the animation mixer and I’m having some issues with it. Firstly I want to only copy the rotation properties to the target skeleton, without position and scaling. Second I’ve noticed that the rotations are applied relatively so if the target skeleton has bones with different roll or orientation, the rotation will not work as expected. I’ve attached a video showing retargeting working as expected in Blender then how it appears in ThreeJS. The first avatar has bone roll and orientation exactly the same as the animator skeleton so it works as expected. The second avatar has some bone orientations different to the animator and it bends it in weird ways.

Has anyone been able to get retargeting happening perfectly yet? I’ve read all other threads on the subject and couldn’t find a solution.

You may find it easier to retarget using code.

In blender you can save the models and animations as separate glb.

Provided the skeleton of the model matches the skeleton of the animation, you can apply the animation clip to the model.

In this example below, I load 6 files. 2 are different models, the rest are animations.

I apply the animations to both models as they are loaded. I also clone part of one animation and apply it to the other model.

Sharing animation clips : https://sbcode.net/threejs/sharing-animationclips/

image

1 Like

That’s what I’ve done in the video I posted. I also used the exact code example from the link you posted. The issue is with retargeting to bones that have different orientation. It works fine in Blender but not in threejs.

did you make these models yourself? If so, try uploading the robot to mixamo so that it re creates the skeleton, then export the animations you want to use.
I’ve just discovered that sharing animations works best when both models limbs are very similar dimensions.

The armature cannot be changed for these models. The rigging must remain as it is. So my question is whether its possible in realtime within threeJS to alter the orientation and roll of the bone