[UE5] Retargeted root motion animations have innacurate pelvis / hip placement

Hey,

So I’m learning the new animation retargeting process in UE5 (with IK Rigs and IK Retargeting), and everything seems to be working well except for an issue with root motion animations.

In most retargeted root motion animations, the pelvis drifts slightly away from the root bone over the duration of the animation. This is most easily noticed in looping walk/run cycles. In a forward run cycle for example, the last frame of the animation has the character further back relative to the root bone than the first frame of the animation. This causes a distinct hitch every time the animation loops when the pelvis snaps back to its original position. The offset may only be a few units, but it’s still very noticeable.

The direction of the offset seems to correspond with the direction of the root motion. If the root moves the character forward, the pelvis will be offset backwards on the last frame. If the root is moving left, the character will be offset to the right on the last frame.

All of my tests so far have been retargeting from the UE4 Mannequin to the UE5 Manny. I tried using the original IK Rigs and Retargeters for these characters as well as creating my own and get the same results.

Has anyone else experienced this? Anyone know a fix?

9 Likes

Here’s a demonstration of the issue. This is a test animation in which ONLY the root bone is animated. The root moves the character forward 1000 units over 30 frames. Root motion is enabled in the animation so we won’t see the root motion in the preview window, only how the character moves relative to the root.

After retargeting, animation has been added to the hip bone. By the end of the animation, the hip is offset by about -9 units.

RootMotionDemo1

And here’s what it looks like in a real animation. Notice the whole body hitches forward with each loop. The original un-retargeted animation is a perfect loop - the first and last frames should be identical.

RootMotionDemo2

If anyone else is experiencing this or has any thoughts/ideas, please chime in! This makes it difficult to use any root motion animations that move the root away from 0, 0, 0…

4 Likes

I don’t have anything useful to add, but I am also curious to know how to solve this problem. I will be needing to retarget a lot of animations soon, and this issue will be quite a hindrance.

When/if you do retarget some root motion animations, please let us know if you experience the same issue!

I’ve now tested retargeting to 5 characters: the UE5 Mannequin and four characters from the Marketplace. So far the issue is happening with the UE5 Mannequin and only one of the Marketplace characters. The other three characters retarget just fine.

The three characters that don’t experience this issue have the pelvis bone in the exact same location as the original UE4 Skeleton. The two characters that have the issue have slightly different pelvis bone locations…

2 Likes

Well, I think I have the same problem here with my retargeted root animation. I get the impression that the pelvis jerks/jumps at the end of each loop. The original animation is fine, no jerking at all. My skeleton is also based on the mannequin (old) - CC3 .

https://www.youtube.com/watch?v=Kk8NHfuqYOY&t=2s

Since your post is a bit older - have you found a solution for this problem?

encountered same problem, wondering if anybody can resolve this problem

Sadly I haven’t come up with any solution to this. I don’t know if we’re just missing something, or if UE5’s root motion retargeting is broken…

If I ever find a solution to this, I’ll post it here right away. If anyone else has any insight, please let us know!

I searched the entire internet, all videos and forums in order to find a solution. Just now I found this topic and I see that several people have this problem. Do you have any ideas for solving the problem? What have you tried?
Upd. I found this Unreal Engine Issues and Bug Tracker (UE-148891)
Upd 2. 5.0.2 version is available.

1 Like

Thanks for the link, but sadly this issue is still happening for me in 5.0.2. I don’t think the bug you linked is the same thing we’re seeing here. That bug says root motion isn’t being retargeted at all - in my experience, root motion is being retargeted correctly, but the hip/pelvis bone isn’t being retargeted correctly relative to the root bone.

So far I’ve tried rebuilding the IK rig and retargeter assets, and messing around with some of the options in both of them, with no luck.

Since several of us are seeing this, I’m just going to submit a bug report and see what Epic says. Hopefully they’ll either confirm it’s a bug or just tell us what we’re doing wrong. I’ll write back if/when I hear anything.

3 Likes

Same issue here, thanks for creating a bug ticket! Looking forward to the reply :slight_smile:

i am facing a challenge…i want to retarget my skeletal mesh to use the unreal mannequin animations. The problem i am facing is that my character skeleton does not have a pelvis born an tht is making my root behave funny like on the video…any help would be appreciated on how to retarget without a pelvis bone

Bumped into the same issue. Was curious if it’s been fixed since 5.0 but seems to still be a problem on //UE5/Main as of CL 20484801.

Can you share the bug report number you submitted? I will happily +1 that.

I will as soon as I have it! Epic first has to check the report and reproduce the issue before they’ll add it as a formal bug report. It’s been almost two weeks since I submitted it, which is about how long it took them to process the last report I sent them, so hopefully we’ll have it soon.

1 Like

I posted this on my thread - but will post again here as I think we’re dealing with the same issue. This has solved some issues with mine:

Key points: Dest SkMesh must have root bone retargeting option set to Animation Scaled && both IKRigs must have a chain that includes the pelvis (and those chains mapped). I found the default UE4 Mannequin IKrig does not have pelvis set up by default - so I just made a 1 bone chain and it worked. Pelvis and Root are locked.

*Update - further testing & @Faulkin’s comments lead me to believe this is not an ideal solution for all cases. I’m not sure to put that on this method or on growing pains in the the UE5 retarget system.

3 Likes

I’ve been struggling with this issue as well.

As suggested by @TheWolf , I tried adding a single bone IK chain to the pelvis and setting the Translation Mode to Globally Scaled. This fixes the looping issue on the root motion animations, but causes the animation to be offset vertically when source and target characters have different heights. If you’re in a pinch, you can go with this solution and should be able to compensate for this offset in the animation blueprint.

2 Likes

I was having different issues than what is stated in this thread; however, after changing the skeletal mesh for both skeletons to be in the T-pose by default, my issues were resolved. (I edited the poses outside UE and imported them over the existing skeletal meshes in the project to reset the default from the A pose to the T pose.) When retargeting from T pose to T pose, I don’t have any issues.

I don’t know if this will solve the drift problem, but I haven’t noticed any drifting (or other problems) when I take this approach. The more I use T poses, the more I realize I hate the A pose…

1 Like

Followed the steps suggested by @TheWolf and instead of creating a 1 bone chain for the pelvis, I added pelvis to the root bone ik chain and it seems to have solved this issue completely for me.

2 Likes

This issue has been almost completed resolved for me by changing the root chain to a 2 bone chain containing root + pelvis. no chain for the pelvis alone. only issue now is that my animations are floating above a ground a few inches. The vertical offset exists when retargeting from ue5 manny to metahuman in my case.

YES!! So here is what I did to come to what I believe is a 95% fix for this solution. I am batch converting hundreds of animations and I did this in a way that it works for all.

Ignore the vertical offset due to some sort of lost data during the retargeting process.

Now, you need to add a vertical offset of “Z = -10”, But export to .fbx and re-import with z = -10 on the import options. click import all.

(In my case the Metahuman, stretched taller and become drastically deformed. < the re-import button causes this. you have to actually right click > asset actions > export, in order to avoid metahuman stretching. This “cleans” the animation of various Metahuman related problems.

Now when you enableRootMotion inside of the animation, you need to set the option to AnimFirstFrame to keep the Z offset intact.

Good luck soldiers we are on the frontline.