Distance Matching Locomotion : Giving it a shot!

How they do it essentially boils down to physics calculations.

Basically, you know everything you need. The mass, the velocity, the friction, etc.
and you use the same calculations used by the engine to figure out a distance.

This value is then found inside the animation curves, where the curved is used one way or another to affect changes to the animation.

For a stop motion example of that: you have a mass, a current speed and a friction so you know you will stop in x meters.
The stop animation can therefore be told to start at Y frame which makes it feel like you are stopping in a timely manner.
Obviously when the aniamation “starts” is an approximation decided by artists or a readout of the distance the actor actually traveled (which is present in the root motion animation).
(less obviously this animation can have some amount of root motion and take over the physics so that foot sliding is completely gone).

if you take to CPP and create physic prediction blueprint callable functions you can make the 2 or 3 you really need (can be done in blueprint too, just like foot IK).
The ones to focus on are the start/stop, because it is used everywhere, and the jump apex / landing.

The animations are what is hard to make.
If you do go through and make them, make sure not to waste time on the mannequin… if you produce for your actual final mesh, you can always retarget to the mannequin - going the other way around has poor results because of the twist bones and lack of corrective morphs.
If you can mocap yourself the process gets much easier/faster and more accurate.

2 Likes