Improved walk on uneven ground (no foot sliding)

Hey guys! new user here :D.

I was trying to make an animation of a character walking, when i noticed the famous foot sliding problem, and the fact that is very tedious to animate on an uneven ground. So, i started messing around with blender. This is what i have got so far.

here is the improved walk.blend (552 KB) it talks by itself :wink: there is a demo animation in it.

this semi-automatic method allows to:

  • animate a character walking without feet sliding
  • make your character walk on an uneven ground
  • animate soft body turns or changes of direction, as the character turns around on his feet, like real life, instead of rotating on his center point, what looks like standing on a spinning table or something

Unlike most rigs, the foot controller bones are not parented to the root bone, but the root bone IS parented TO the foot controller bones (via a Child Of constraint to each foot controller, with an influence of 50%)

My method uses 6 extra bones, 2 for “step” controllers (parents of the leg ik’s) which are constrained to the ground via shrinkwrap (project), they also move the root bone. 2 more bones for foot ik, and 2 more bones for toes floor.

the leg ik bones have a floor constraint to the step bones. this prevents heels from passing through the ground.(remember that step bones are shrinkwrapped to the ground)

the toes floor are for… well, i dont have to explain that :wink: these are children of the step bones, and are also shrinkwrapped to the ground.

and last, but not least, the foot ik bones. These are children of the lower leg or shin bone, and they have a floor constraint to the toes floor bones.

additional information:
for a walk animation, there is absolutely no need to move the foot ik bones (only raising and lowering it, no forward or sideways motion)

*The upper leg does NOT inherit rotation
*there is no need to animate every feet raise/low. Just animate the steps with the right timing, create an action for leg ik bones with the same timing, and increase the repeat value on the NLA editor. Same applies for arms and hands motion.
*DO NOT try to use this method with empties or objects. it only works for armatures.

sorry if bad english :slight_smile:

edit: the rotation option in the child of constraints of the root bone (x, y, and z) is DISABLED, instead, i use a driver on the y rotation with two variables, one for each foot. see details in blend file.

Please tell me any ideas to improve it, or any issue if you found it.


improved walk.blend (554 KB)

As you can see in the animation, when the character walks on stairs, it moves like constant interpolation :spin: is there any way to fix it?

At first, i didn’t know how to change the rotation type, so i had to use quaternions. Now i know (Ctrl R) so the driver is a lot simpler

Hi there.
I do not know how to improve your model, but I’m trying to learn how to animate objects on uneven floor, and your model will help me a lot to try to understand better.
Thank you very much for sharing the .blend file.

Cool. Always good to find someone working on this type of thing. :slight_smile:

Very … very… very … cool… Thanks for the effort on this so far… will study your blend file and see what is going on may have questions to come before I can help with any issues you have… looks like your way ahead of me on this so…