In the previous movie, we cleaned up our two solution
no flip / pole vector leg rig using our rigging checklist.
In this movie, we’ll begin work on our IK foot by creating an reverse foot rig.
Start by opening the file "Character_Rigging_part19_start.mb"
or by using your own file from the previous lesson.
What is a reverse foot rig and why do we need it?
To answer that, we’ll first need to examine how the foot moves.
During a typical walk cycle, the foot goes through four different positions:
contact, down, passing, and up .
We start in the “passing” position, where the foot is fully planted on the ground
to establish a balance point while the other foot swings forward.
From there, the heel first lifts off the ground as the leg extends
and pushes the pelvis to its highest point in the walk cycle.
During this “up” position in the cycle, the pivot point is at the ball of the foot.
This leads into the “contact” position, where the other foot, previously in the air,
touches the ground heel-first.
At the same time, the other foot continues to lift, until the ball reaches a certain angle.
Then it too lifts off the ground.
At this point, the pivot is at the toe.
We then transition to the “passing” position again.
As this foot is fully airborne and the other is firmly planted,
the toe and ball straighten out and the entire foot rotates
in preparation to return to its “contact” position.
As the foot touches the ground, the pivot point must be at the heel
in order for the foot to rotate back in the “down” position.
Thus, to accommodate all these different foot positions,
we need to give animators power over all these pivot points.
If we look at our leg rig, the IK handles we created in part 13
to control the leg and foot joints are currently parented to the leftFoot_CTRL.
We’ll modify this setup into a reverse foot rig, to enable a new range of controls on the foot
while preserving its connections to the leg rig.
Start by creating three locators,
each representing one of the pivot spots we just discussed.
Rename them “heel_LOC”, “ball_LOC”, and “toe_LOC” respectively.
Point snap ball_LOC and toe_LOC to their respective IK joints.
And move the heel_LOC to the base of the heel.
Now we need to figure out how to parent all of these locators to get the desired pivot rotations.
First, parent all the locators to the leftFoot_CTRL.
Next, parent both the toe and ball locators, as well as all IK handles, under the heel locator.
This enables the ball and toe pivot spaces to rotate when the heel lifts.
However, in order to create a foot roll, the ankle needs to move up when the ball rotates up,
so re-parent both leg IK handles and the ball IK handle under the ball locator.
Following the same logic, to roll the foot onto the toe tip,
parent the ball locator under the toe locator.
In the new node hierarchy, notice that the control direction goes from the heel to the toe,
then the ball, then the ankle.
As one final bit of housekeeping, we’re also going to move the noFlip_knee_GRP under ball_LOC.
This is a matter of precision.
The ball_LOC currently determines the position of our left leg IK handles
more precisely than the leftFoot_CTRL as a whole.
We’ll also re-parent the IK leg "distEnd" locators here for the same reason.
Now by rotating these pivot locators, you can animate a foot's roll and heel lift,
the corner-stone motions of our walk cycle.
That said, we’ll want to add some custom attributes to our foot control
to manage the rotation at each of these pivots.
Select the leftFoot_CTRL and add three attributes:
“heelLift”,
"ballLift",
and "toeLift".
Now use the Connection Editor to connect the Rotate X attribute of each pivot locator
to the appropriate custom attribute.
Each attribute controls a separate locator.
While this gives us the functionality we require,
fiddling with three controls for a simple walk cycle lacks a certain elegance.
In the next movie, we’ll alter our current foot rig to make it more efficient for animators to use.