Approach for Root Bone Animation

Hello everyone, first time posting here after using ragdoll for about a month! Love the ease and intuitiveness of it!

I was curious what was an acceptable workflow for using ragdoll and FBX export for root-motion in UE5 is? I am running into the issue where I am doing a ragdoll solver using only geo (no skeleton or rig) and when I attempt to utilize root motion within UE5, i am getting incorrect results (I believe UE5 requires the root bone to have no rotation on it, just translation, but when using geo this is does not seem to be an option).

Is it always a requirement to create a root-bone as a minimum instead of doing all geo when trying to use root motion in UE5?

Thanks,

Jocque

1 Like

Hey @jocque, welcome to the forums! :partying_face:

You might have to educate us on what a “root bone” is? Maybe you can show what you have coming out of Maya, what you end up with in Unreal and what you instead expect to see?

Thanks Marcus! I am very new to animation, so I will do my best :stuck_out_tongue:

From my understanding, the root bone is the sole controller of absolute location, like a marker on the ground below between the character’s feet and is used in gaming for moving characters around the map. That means it should not rotate but only translate… if may base geo (chest or pelvis or whatever in the character) could act as a root bone, then I would not need a rig/skeleton I believe. But when I back to keyframes all of the geo have rotation and translation…

The UE documentation around root motion is below:

I think part of the issue on my end is that I am still learning both animation and then placing it inside of unreal.

Jocque

Any chance we can see these results?

Here is an example of the issue:

Walking upright and great in Maya…

Then tilted over off the ground in UE5…

The root data (cylinder named robo) is here:

The location data seems to be fine, but since the cylinder rotates a little bit during the walk as the robo is leaning forward) this translates into the root bone rotation and in UE5 rotates the whole animation…

Lastly, here is an example of when a root bone should rotate (for a turn in place animation such as one of the pre-canned UE5 animations):

Great, I can see it’s not looking right, but it’s still not clear what the input should be. And bear with me, because I’ve never heard of a root bone animation before.

That pre-canned animation, is that correct and what you are looking for? Without Ragdoll, how would you go about creating that?

here are my 10 cents… let’s see if I understood.

For that type of set up what I would try is:

  • As first attempt, after the RAGDOLL record has been done and you are happy with the Clip, then… use any Worldbake tool to extract the translation and transfer it to whatever grp/root you want. Then export your FBX. ( use Parent CNS on your HIP Joint, to lock the animation on a Locator, then Use other locator with Point CNS to extract the positions. If Yt is not needed kill it from the Graph editor). Then reverse the CNS and bake it back.!

inside RagDoll: (Would do the same process but with markers and attach CNS)

  • Create an external Market that Follow the Translation of the COG, using Attach CNS bunt only translations, and also check the advance attrs of the marker it might helps. The idea is to create and interactive Point CNS that allow you to retarget those translation values into your grp or joint.

Hope make sense…i sound very complicated. ! but basically is like reversing CNS and extracting channels.

Cheers!

Without ragdoll I would have created a full rig with a root bone and animated it more traditionally… we were trying to see if we could get quick animations without a rig in the end…

Thank you Andrei! I will try your suggestion… I think I am following it. I was attempting something akin to your second paragragh (inside of ragdoll), so hopefully your comments steer me appropriately down the path, much appreciated!!

1 Like

Soooo… I think I may have a solution similar to what you proposed, but a little different.

  • I imported the final baked animation FBX
  • Created a 1 unit cube (called root)
  • I moved it inside of the centre of mass (torso etc. to hide it)
  • Used a maya point constraint (between the root and torso)
  • Grouped the animation and the cube together

Exported everything and so far it seems to be working… need to do more tests, but very promising.

2 Likes

Updates, needed some tweaking for successful root animation in UE5 (without skeleton), full process is below:

  • Created a ragdoll animation using only geo as bones/rig were not required
  • Baked and exported FBX of animation
  • Imported the baked animation FBX into a new maya file
  • Created a 1 unit cube (named root)
  • Moved root cube inside of the centre of mass (torso etc. to hide it)
  • Used a maya point constraint (between the root and torso so cube would follow torso)
  • Grouped the animation and the cube together
  • Exported as baked animation FBX
  • Remported newly baked FBX
  • Deleted all translation keyframes from Torso (kept rotation)
  • Deleted all rotation keyframes from Rootcube (kept translation)
  • Moved all geo as child under Root cube
  • Exported Final FBX with Root cube as root/parent of the geo

It was necessary to delete the translation from the torso otherwise two sets of translations would be occuring (one on the root AND also the torso due to the point constraint that was baked).

This works, but I am sure there is probably a simpler way to hone this / speed up the process, but I will use this for now!

Jocque

4 Likes

Great that it works and thanks for sharing the process. Would it be possible to record yourself performing the steps, such that we can see what you get at each step? It would help when trying to figure out whether there’s a quicker way.

Actually, further testing on this and the following works even better… more or less the same process as above but you use a Maya group instead of a cube for UE root animation.

• Created a ragdoll animation using only geo as bones/rig were not required
• Baked and exported FBX of animation
• Imported the baked animation FBX into a new maya file
• Group the geo
• Group the geo again
• Move the geo next to the lower group (renamed to Root) in the hierarchy (so the Root, and geo are on the same hierarchy level)
• Used a maya point constraint (between the torso and the root so root would follow torso)
• Exported as baked animation FBX
• Remported newly baked FBX
• Deleted all translation keyframes from Torso (kept rotation)
• Deleted all rotation keyframes from Root (kept translation)
• Moved all geo as child under Root group
• Exported Final FBX with Root group as root/parent of the geo

2 Likes