Root Motion seems impossible with animation tracks created in Godot

Godot Version

4.4.0

Question

I know how to setup root motion for premade assets. I am not even talking about the specific code needed to see correct movement from the character controller. All I wanted to achieve so far is looking at an animation with root motion in an animtree or an animplayer with a correctly set root node through a rootmotionview. If root motion is set up correctly, the character should stand in place and the fake floor it displays should be moving. So far I haven’t found any way to achieve that for an animation track created in godot. Even when you have a model with a dedicated root bone at its base and you translate it the exact same way you would in blender, it never picks up on the motion of the root bone as root motion. When I asked ChatGPT, it said that there is some internal engine code running when importing animations that flags root motion track as such from behind the scenes, but we all know it is very commonly hallucinating. But I seriously have no idea why it is not working, so I am inclined to believe it might actually be impossible without knowledge of some internal process running for the imports. Is anyone aware of how this works, or can spot some mistake in my setup?



For anyone struggling with something similar: I have found why it was not working for me. I had to set specific import settings for the character. For the skeleton in the retarget section I had to Create a bone map and in that bone map assign the correct bone to the root bone (which is usually done automatically when creating the bone map). Only if the root bone is correctly assigned to the root section of a bone map will root motion work (or at least in my case it did not work unless that was implemented.).

It is not enough to have only one root bone. In Blender, all GLOBAL MOVEMENT must be placed in this root bone and local animations must be placed in the other bones. Godot uses the GLOBAL movement of the root bone to move your character. And you also have to configure the player’s movement via code with move_and_slide, changing the velocity of this root bone to the characterbody.