3
$\begingroup$

Let's say that we have a character with a walking animation, such as this one:

enter image description here

What would be the best way to physically move the character forward in a way that matched the animation being performed?

One could possibly just eyeball it, however I believe there must be a more efficient solution - perhaps some sort of collision logic to say "if foot moves when touching a collision object, move character in opposite direction"?

Presuming there is a more efficient solution, how would I extrapolate that solution to more complicated movements - for example, a character rolling around on the ground, or a character performing a cartwheel?

$\endgroup$
  • 4
    $\begingroup$ Relevant: blender.stackexchange.com/questions/3736/… $\endgroup$ – Nicola Sap Dec 19 '19 at 11:38
  • 1
    $\begingroup$ That's a great question :) I had it for a long time and asked many people but no perfect answer. Thanks for asking again so that we can get creative ideas :) $\endgroup$ – user2824371 Dec 26 '19 at 19:21
3
+50
$\begingroup$

This isn't a perfect solution that automatically calculates everything for you, but maybe this will help. Use an empty plain axis parented to the character at the contact point to find the change in distance.

Press Shift+A to add an empty origin. Move it to the desired contact point and parent it to the character. If the axis isn't moving with the mesh when you're playing the animation, Tab into edit mode for the character mesh, and add the empty axis there. Since its now a part of the character mesh, the rig animations will affect it as well.

If you try to directly view the axis' location in the Item's property panel, you'll see that it doesn't actually change (due to that being its position relative to the parent).

To get around this, press ShiftS and select Cursor to Selected. That will move the 3D cursor to the axis' location, allowing you to see the axis' location via the 3D cursor location. To view the 3D cursor's location, press N to bring up a side menu, and click on the View tab.

By noting down the XY locations at various key points, you can find the exact change in position you want the character to follow by subtracting.

More complex animations such as cartwheels will get rather dicey as you want your character to be rotating about a different point. I'd suggest manipulating the pivot point while rotating the armature so that you can rotate the entire mesh around desired points. This can be done by clicking one of the small buttons at the top of the screen shown below.

Changing pivot point

After that, I'd use a similar method of parenting empty axes to your mesh to find the displacement at various key points.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.