Retargeting Mixamo animations fails

Godot Version

4.2

Question

I am trying to use some animations from Mixamo on a third party model.
Here is what I have done:

  1. Import the model glb file. In the import settings, create a bone map with standard humanoid profile. All the bones are green (except a few missing non-critical ones that are gray) and everything looks fine.

  2. Import the mixamo glb file with the animation. This was converted to glb in Blender with default export settings. In the Godot import settings, create a bone map with standard humanoid profile. All the bones are green and everything looks fine. The animation plays fine in the Godot import preview. Import as animation library.

  3. Create a new inherited scene from the model glb. Add an AnimationPlayer to the scene tree. In the animation manager, load the animation library from step 2.

What am I missing in these steps? Because the resulting animation looks entirely bonkers, appendages flailing wildly and the root transform rotating and translating all over the place. It is so strange because each file looks fine on its own, and the bone maps of both look compatible, and yet no luck.

I’ve been struggling with this for days now, trying all sorts of combinations of settings and animations and different models, looking at numerous tutorials seemingly doing the same thing as me and ending up with entirely different results. I feel like I’m going crazy.

So I had to follow a couple different tutorials to get synty (third party asset) humanoids working with mixamo animations. In the end I had to use very specific import/export settings for blender. So that may be worth a Google.

However, also ensure that in your animation player the transform values are getting reset to what is expected, I’ve had whacky results if I try to change a rotation and don’t reset the position/rotation.

That’s my two guesses.

Thanks. I can’t seem to find that, do you by any chance remember what they are, or what the link to the tutorials is. I found some tutorials that imports the model to Mixamo and uses the resulting file with the animation included. But I cannot do that, for some reason my model gets a bit corrupted after passing through the Mixamo stage, the transparent face texture that is supposed to overlay the skin replaces it instead, so that the face is transparent… So I need to apply separate Mixamo animation files to the original model file.

Either way I think I’m getting closer. It depends a lot on what model I use in Mixamo. Originally I used X bot, but the feet of the animation was gliding across the floor when retargeting it, probably because my original model has different body proportions. So that’s when I tried importing my original model to Mixamo and using that as a base for the animation files. But that’s when the retargeting started fully failing in Godot. I think I see a difference in the animation files exported using built-in Mixamo charcters and my own uploaded character. With Mixamo characters, the root animation tracks are applied to the root bone (hips), as expected. However, when using my own uploaded character, the root animation tracks is applied to the parent node, while the hip bones have no animation at all. Perhaps that is the problem? If so how can I force Mixamo to apply the root animation to the root bone instead of the parent node?

Either way, I found that if I went back to using built-in Mixamo characters but with different ones that kind match my model’s proportions betters, the result is also better. The retargeting works, the feet are still not fully grounded but it’s better than nothing, so I can probably use it for the time being.

For the record, I found the best workaround I’ve got so far.

Building on the discoveries in the previous post…
I uploaded my character model to Mixamo as an .obj file instead of .fbx. Then the armature was not included, and I was led through the Mixamo auto-rigging process of placing the markers on the body and let mixamo generate a new armature.

When using that character on Mixamo with the newly generated armature, downloaded animations finally used the hip bone instead of the armature node, and that made re-targeting in Godot work. The actual auto-rigged armature of the resulting file wasn’t so good, but that’s fine because I’m not actually using that rig, just the exported animations which I will retarget in Godot. This retargeting works decently because the proportions are roughly the same as the original character due to the auto-rigging steps. Much closer than any built-in Mixamo characters at least.