SkeletonUtils.retarget() doesn't work with mixamoRig skeleton (inverted feet, backward hands)

I have a system where I can apply different animation into a mixamo-based model. It works fine for most humanoid model, but now I have a case where the model has significantly different body proportion.

The structures are very similar as they all use mixamorig. But if apply the same animation, the short or taller models will produce strange movement (as expected, since they use different proportion).

This is a very known animation/rigging problem called “retargeting”. The idea of retargeting is that you are able to modify the target of the animation data so that it’d work properly with different body proportion. See: GitHub - sketchpunklabs/ossos: Webbased Character Animation System

Meanwhile, THREE.Js has something of a simpler function of this inside SkeletonUtils, retarget() and retargetClip(). To make things simpler, I try to retarget an animation between two models with exactly the same skeleton (to isolate for issue):

  • Source: Mixamo YBot.
  • Target: Another Mixamo YBot.
  • Anim: Mixamo YBot Breakdance.

So in this case, it should output a very similar animation data, as the source and target skeleton are identical in everything.

But, if I try to use the retarget() from SkeletonUtils, this is what I get:

Meanwhile if I use the retargetClip():

The animation if I don’t use retargetClip():

1 Like

This is awesome, I am having this trouble with characters at different height, having a multiple animation folder for each character scale.