Inside Unreal: Motion Warping and Full-Body IK

WHAT
Full-Body IK (FBIK) provides you with the tools to create reactive, dynamic characters, and Motion Warping is a new Experimental feature which allows you to manipulate root motion animations to adapt them to the world with fewer custom assets. Join us as we explore Unreal Engine 5’s new animation features!

Check out the Unreal Engine Twitch Page for the full UE5 EA Livestream schedule.

If you’re unable to make the livestream, all episodes of Inside Unreal can be viewed afterwards on-demand .

WHEN
Thursday, June 24 @ 2:00PM ET - Countdown

WHERE
Twitch
YouTube

WHO
Jeremiah Grant - Technical Product Manager - @Jeremiah3D
Kiaran_Ritchie - Senior Animation Programmer - @kiaran_ritchie
Aaron_Cox - Lead Programmer - @AaronCox_Dev
Chance Ivey - Senior Technical Product Designer - @iveytron
Victor Brodin - Product Specialist - @victor1erp

RESOURCES
New Animation Features Docs
Unreal Engine 5 Early Access
Release Notes

8 Likes

Ok Let’s skip to really interesting stuff! (;

There is Pose Search plugin in engine, which implements Motion Matching and Pose Matching.

  1. Is it intended for it to work without root motion extraction ? (just from capsule movement).
  2. Will this plugin support Distance Matching ?
  3. Will there be provided default trajectory extraction methods (ie, for standard character movement).
  4. It seems it started from supporting cut animation instead of dance cards. Will this workflow be improved as much as possible ? (since that’s the easiest animations to get your hands on).
5 Likes

@iniside
What pose search plugin ‘in engine’ are you referring? I know there are marketplace solutions in that area, but I didn’t think there was anything built in.

Question:

When UE5 EA first came out motion warping was one of the first things I jumped to experiment with, and ran into some unexpected apparent bugs. Have these been addressed?

Source: Motion warping inconsistent results(bug?)

Question: Can custom warping logic be implemented at the game level or do you have to edit the engine code to expand on functionality?

Question: I looked at motion warping when UE5 EA first came out. One of the things I noticed is that it only appears to operate for correcting the root motion position to reach a target position. This is a great start, but the hard part in most situations that require motion warping is a step further. For example, a character hurdling over low cover. How do you handle the fact that the target point is more intuitively sampled and set up with respect to where the hand plants on the object? Or jumping to a ledge. Shouldn’t you be able to set up your warp windows like “the hand should hit this target” as opposed to only working with the root. The UE5 tech demo had a great climbing demonstration, and I believe the narration over it mentioned warping. How were the warpings set up in these situations? Do you manually calculate a relative offset of where the root is in these situations before providing to the target sync? Do you have plans to move that functionality into the motion warping notify events?

So like instead of a simple target sync transform that always operates with the root, you could provide a bone name, and the warping would warp the animation such that the provided bone name hits the target transform on the relevant frame. I think all that is needed is to calculate a root offset once at the start of the warp and run the warping on that offset. I was puzzled to see that this functionality appeared to be missing.

1 Like

https://github.com/EpicGames/UnrealEngine/tree/ue5-main/Engine/Plugins/Experimental/Animation/PoseSearch

3 Likes

is there is a hope UE5 will add the option to change individual key frames for animations ?
is there is a way to add virtual bones in run time ?

Hi JSwigart,

You could implement your own warping logic, that’s exactly why we decoupled the warping logic in what we call root motion modifiers. You could implement your own game-specific root motion modifier. For now this is only possible in C++. You can look at the code to see how the different built-in modifiers are implemented and follow the same pattern to implement your own modifier.

Another thing that was recently added and is already available in the main branch on GitHub is the ability to define a warp point in your animation with a bone (or just a static transform). This sounds similar to what you are describing in your second question. You can imagine an animation where you jump and grab the edge to climb up. You can author your animation with a bone at the location of the edge which is usually the target location that you will have in game. Then you can tell the warping window that you want to use that bone, the warping code will do exactly what you are describing, it will calculate the offset to ensure the root ends at the correct location relative to the point you set in game. If you can build from source, you can try this feature on the main branch on GitHub. Otherwise, it will be available in a future official release.

Hope this helps.

1 Like

ok since this is specifically about animation and full body ik and procedural animations
i’ve already made this question but no answer in others place but hope get it here, my issue is about "self penetration, when using a animation for different proportions of body, for exemple a walk animation work for both tin and fat character or a holding arms for a female with small and large breasts those sort of self collision where you have to manually create a animation or change for each type body, i want to know if it have a way to make the animation adapate like the arms proper adjust they placement to avoid self penetration, something like this:

i really would love to see a answer for that because i feel it’s really important to reduce the work in adjust animations for each character or when you use morphs.

2 Likes

@Fernando.Coello fantastic! Now I am even more excited for this feature.

1 Like

I like Unreal Engine 5! but I don’t understand the Blueprint code well and I want to make my first game

Greetings,

Okay so I am following the documentation as found here: Full Body IK | Unreal Engine Documentation
And once I ran through it, it worked! TOO well, I had too many control points within the IK chain, and I wound up with an exploding char every time I tried to move something… Not a big deal, start over.
So I delete the cntrl rig, and all references to it

Kept it simple this time and followed along the documentation - Head, and legs, that’s it, see what I get. Nothing, wait why not?
CTRL points do nothing, I move them, yes, they do move, but the char model just sits there. I’ve redone this now five or six times, and starting to get a little frustrated, since “I” can’t figure out what may have happened can’t figure out what would be missing or if there is still reference to the first attempt that is preventing the 2-6th attempt from working.

Any ideas on this?

Thanks.

I’ve tried this out with the main branch but it doesn’t seem to work with sockets yet?
Supporting sockets seems like the best possible workflow for this type of implementation (adding and offsetting/rotating a socket to the desired local space position and then using that as your warp point).

Also please don’t forget about the dynamic scaling of “Root Motion Modifiers: Scale”.
Aaron mentioned it on the stream as a possible future improvement but it seems EXTREMELY useful, in contrast to the current static scale.

Cheers. And congrats on shipping this beast! It will surely change development practices for our studio.
Much love.

How does motion warping work with montage sections? Looping, etc

can I make animations without code?

I tried to use the trick he uses in the video where you create a control under a bone and then unparent it, but in UE5 EA.2 they don’t retain their position

1 Like

Does anyone read or answer to this forum? Have had an issue noted here for almost a week now, would like some input.

1 Like

It’s working for me when I built the engine from the Early Access branch.

One issue I have is I set up my character’s arms but there really seems to be no way to control elbows easily. If my character reaches behind, the arms start contorting and interpenetrating in a way that’s obviously not how an arm bends. There might be a way with limits but it’s not obvious how to set up limits when the upper arm bone isn’t aligned with the clavicle like a knee and upper leg joint would be.

I had some automatic pole vector computing myself for UE4 and all the standard IK nodes and it worked pretty well for arbitrarily positioned arms by basing the final pole vector off the initial chain orientation. This way, however the elbows and knees were positioned in the original animation pre IK would help influence the final elbow orientations automatically without having to specify an IK target.

Hi, thx for the video and explanations, I found it very clear and interesting.
Currently I migrated my whole project to Unreal Engine 5.
So far I migrated the foot-leg IK I was using (implemented in a postprocess animation BP) to the one explained in the video and it is working fine, but I have found several issues in the preview:

1 - When dealing with blueprint variables whenever I try to delete an used variable the editor shows a dialog asking for confirmation. In the ue5 preview of teh control rig if i delete the variables in the control rig “my blueprint” this dialog is always wrong. Sometimes the variable is not being used, but the dialog says it is being used. Other times the dialog does not appear, but the variables were being used and the get/set nodes become deleted from the graph. This happens more with vector nodes like getthisvectorZcomponent nodes.

2 - I am missing many trace functions which where available in the post process anim bp, like the box, line , sphere and multi- variants.

3 - I tried to use control rig to update ik_hand_gun, ik_foot etc with the hand_l, foot_l bones when enabling ragdoll physics on the skeleton, but control rig does not seem to work when using ragdoll physics, because these bones transforms are not modified at all with get/set transform nodes.

4 - Missing documentation on the nodes behaviour and in depth explanation of what they do.

5 - Sometines after undoing or pasting a function and recompiling the nodes overlay does not show existing connections and I am forced to close the editor and reopen it for everything to appear properly

Which I understand as normal and part of an early acces build, but I notify these issues here for everyone to be aware of and the developers to fix.

Another question I have is about postprocess anim bp. Is it is going to be replaced with the new control rig?. I have seen that you can place control rig animation nodes also in the postprocess anim bp, is this a proper way of doing it? Currently I have totally disabled the postprocess anim bp and moved its code to the control rig and the main animation bp.