This might be too general a question to garner a good response, but I don’t know any other way to ask. I am finding it challenging to get 3D characters to animate in Godot. I know how to do animation in Godot. My challenge is in establishing a good tooling workflow that lets me assign animations to a rigged 3D character.
So far, my workflow has been pretty clunky. I have rigged characters (as FBX) which I then try to import into Mixamo. But, Mixamo sometimes recognizes the skeleton, sometimes not, and it has to be auto-rigged in Mixamo. That’s OK … ish, but not ideal. Then, I apply an animation to the model and export that (as FBX). Finally, I import the animated FBX in Godot, saving the animation as a seperate .res/.tres file. Finally, I load that animation into the animation tree for my character. I need to repeat this for every animation.
I could live with that, but the problem is that the imported animation loses reference to the original bones. I have tried to figure out a clever way to “remap” them, but to no avail, so far.
Surely this is a solved problem and I am just going about it all wrong?
mixamo has problems with custom skeletons. try renaming all the bones to the ones used by mixamo, and make sure to add mixamorig:. so for example, the head would be something like mixamorig:Head.
and make sure there is no Root bone, only Hips, it exports bad into fbx.
nononono.
1 - all you need is your character in T-POSE. the rest doesn’t matter. use a mixamo model in mixamo and download all the animations one by one into folders. use fbx binary and only animations. you can download one fbx with the model in case there’s exporting problems.
you need at least two folders, one for locomotion movement and one for animations that should not move, like idles.
then you need a blender addon to transfer root motions.
use this ONLY with locomotion animations. you select a folder, import and add root, and then delete all duplicate skeletons until there’s only one.
then you export into glb. ALWAYS use glb/gltf as it is the godot’s default format and also superior to fbx in every way.
from this you will get 1 single file, call it something like locomotion_animations.gltf.
then go to a new blender file and import fbx, and select all the idle fbx from the other folder.
delete duplicated skeletons until there’s only one. then add a bone, rename to root, set size to 30.0m/3.m/0.3bu, then go to hips and set parent to root.
at this step you can tweak the animations or even save the file.
you export again to glb, single file, new name.
2 - put your animation files in a folder in your godot project.
go to each and in import (over the tree) set them to AnimationLibrary, this is very much important.
open import window for each file, set the animation modes (linear/not linear), and then go to the skeleton, add a BoneMap and SkeletonProfileHumanoid.
make sure all the bones are set correctly.
if these are from mixamo they are identical so you can save the bonemap/skeletonprofilehumanoid to a file and reuse it with the others, it will save you time.
you can keep downloading more animations and creating more libraries later.
3 - take your model in T-POSE, if it’s not in T-POSE you can upload to mixamo and download again, then import to blender.
add a root bone to your character model, then export to gltf.
4 - put your character model in a folder in your godot project.
open import window of your model in godot, create new bonemap, skeletonprofilehumanoid.
5 - select your file, create new inherited scene.
save the created scene as a scene.
select the root and click clear inheritance.
close the scene.
open the scene again, this refreshes inheritance.
6 - now you can change the type of the root of the character scene with characterbody3d or something else.
add an AnimationPlayer.
7 - in AnimationPlayer editor, go to Animation -> Manage animations, it will open a dialog.
click load library, select your animation file.
8 - your animations have been successfully loaded and the character is retargeted.
this method will work with nearly any animation, so long as the skeletons are similar.
9 - use this AnimationPlayer with an AnimationTree for more complex behaviours.
Thank you for the thorough response. It will take me some time to fully digest this, but I think you’ve got me pointed in a much better direction. I really appreciate it!
Thanks! I just downloaded and am having a go at it. Looks like it does a lot more than I need it to, but that’s OK. As long as I can get it do do the simple things simply.