How does Orientation Warping "Graph Mode" work?

I’m trying to re-make the Lyra animation blueprint in my own project with my custom model. They have the same skeletal structure, the key difference being my model has Blender rolls as opposed to Unreal’s bone rolls. I’ve compensated those differences in my post processing control rig, IK retargeter, etc. Almost everything seems fine but there is a noticeable problem with the Orientation Warping (and probably Stride Warping as well). When the evaulation mode is set to “Graph”, as it is in the Lyra example project, nothing occurs. All my animations play normally but I only have cardinal directions, the diagonals do not animate properly, it will simply play whatever animation its being fed by the cycle logic.

I changed the mode to manual, which caused orientation warping to apply to the model. It worked for forward diagonals (45 and -45 degrees) but over compensated for all others. It would attempt to rotate the animation 135 or -135 degrees when running backwards to the left or right, which produced some very bad animations. I created my own logic to clamp these rotation angles between -45 and 45 degrees, which appears to have worked. I think I have reproduced proper motion as far as I can tell.


My question is why did I have to do this? Are the Blender rolls really to blame for the “Graph” mode failing to operate? I tried to activate debug draw on the Orientation Warping node but that never displayed anything. Ideally I use the same set up as Lyra but I can’t spot what the issue is

5 Likes

Same problems here. Would like to hear a solution for this from any kind soul out there.

Had the same issue on Epic’s skeleton. Turned out my issue was that the Sequence Evaluator’s pose that was then fed into Orientation Warping node had “Teleport to Explicit Time” turned on which prevented root motion data extraction that is used by Orientation Warping’s Graph mode.
Also the Orientation Warp seems to be unable to read Locomotion Angle value entered directly into its pin, instead of being passed via some variable.

1 Like

Did you ever get a solution to the Graph Mode? Or were you stuck using Manual Mode?

I have the same problem with metahumans. Even I tried to reassign the skeleton of Metahuman to the Mannequin skeleton. It didn’t work. Manual mode Orientation Warping is working but Graph mode is not. Also, I think Stride Warping is not working. What causes this issue? Can anyone help with that?

For those using the Manual Mode solution above (with the BP setup OP has), I’ve placed the above Blueprint Logic on a website so you can just copypaste it:

1 Like

Thanks for the copy paste code Pedro! BTW in the second last node row, you have 1800,0 in A <= B, which should be 180,0.

1 Like

I figured it out. There needs to be “root motion” in the animations you retargeted to your custom model; otherwise, there’s nothing for the “Graph Mode” to use to predict direction.

With the root motion present in the animation, the Graph Mode can read the direction that the root bone is traveling and then it can warp the orientation of the animations.

Here’s a video explaining Graph Mode: https://youtu.be/dij2OfgUXsc?si=v3hSlErqA8jYbnK3&t=1109

You will have to retarget each animation correctly in order to get the missing root motion. Here’s a how to video: https://youtu.be/joFpm3ZDcd8?si=eMdTZUlC76T3ZnIm

Basically, before you retarget, you have to click on the Root chain (highlighted in picture below):

Once you click on the Root chain, you’ll get a mini-menu that pop’s up saying Root Settings. When you get to the Translation Mode portion as seen below, you can choose Globaly Scaled or Absolute. The point is to move the Translation information over to the Target Skeleton so that it can use it in it’s animations.

2 Likes

This is very good hint. Thanks!

1 Like

I was able to add root motion to existing animations that didn’t have it before too by modifying the root translation and setting the root motion options I have on the left.

This is one of the ALS V4 animations and I’m able to get the full usage of the orientation warp node with these assets.