Download

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).
3 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

2 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.

1 Like

@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

This post was flagged by the community and is temporarily hidden.

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.