Rotating the IK foot
To rotate the foot using the IK control, we are going to add some custom rotate attributes that will drive the rotate channels of the l_ankle_loc. To do this, select l_leg_IK_ctrl and go Modify > Add Attribute. Add the following attributes, rotX, rotY and rotZ with a Data Type of Float. Leave the Minimum, Maximum and Default parameters empty.
Now go Window > General Editor > Connection Editor. Select l_leg_IK_ctrl and hit Reload Left to load this control into the Outputs window. Then select l_ankle_loc and hit Reload Right to bring it into the Inputs window. Then connect rotX (Outputs) to rotate (Inputs) and then rotY to rotate and rotZ to rotateZ.
Using the Connection Editor to connect the custom rotate attributes to the l_ankle_loc rotation attributes
Foot rolling and more
Now we will take advantage of the foot locators to drive the bulk of the movement for the foot. First we need to add some attributes to hook everything up. Select l_leg_IK_ctrl and go Modify > Add Attribute. Then create the following attributes with the following parameters. All should have a Data Type of Float.
Long name: footRoll, Minimum: -10, Maximum: 10, Default: 0
Long name: heelOffset, Minimum: 0, Maximum: 10, Default: 0
Long name: ballOffset, Minimum: 0, Maximum: 10, Default: 0
Long name: toePivotOffset, Minimum: 0, Maximum: 10, Default: 0
Long name: heelTwist, Minimum: -10, Maximum: 10, Default: 0
Long name: toeTwist, Minimum:-10, Maximum: 10, Default: 0
Long name: sideToSide, Minimum:-10, Maximum: 10, Default: 0
Adding custom attributes to drive the reverse foot
Now, we will use Set Driven Keys (SDKs) to drive the locators with the newly created attributes. Open up the SDK window by going Animate > Set Driven Key > Set and load l_leg_IK_ctrl as the Driver object. Then select l_heel_loc, l_ball_loc and l_toeEnd_loc and hit Load Driver. We'll start with these 3 locators as they will drive the foot as it goes back onto its heel, rolls onto the ball and then onto the tip of the toes. This will be all the major movement needed for a run, walk and so on.
Make sure the Foot Roll attribute on the l_leg_IK_ctrl is at 0 and all the rotate channels for the locators are also at 0. Then in the top-right window of the SDK tool, highlight Foot Roll and in the bottom-left window, highlight all the driven objects. Then in the bottom left-hand window, highlight Rotate X and hit Key. We have just set a key for the default pose.
Next, set the Foot Roll attribute to -10, then select the l_heel_loc and set the Rotate X attribute to around -50. Then highlight all 3 driven objects in the SDK Window and hit Key again. Going from 0 to -10 on the Foot Roll attribute should now roll the foot back onto the heel. Now set the Foot Roll attribute to 5 and use the Rotate X on the l_ball_loc to roll the foot onto the ball. I set the Rotate X to around 40. Again, highlight all 3 driven objects in the SDK Window and hit Key.
Now set the Foot Roll attribute to 10 and zero out the rotations on the l_ball_loc. Then, set the Rotate X on the l_toeEnd_loc to a value of around 60. Highlight all 3 driven objects once more and hit Key on the SDK tool. The Foot Roll attribute should now drive the entire motion needed to plant the foot and for the foot to take off. Leave the SDK tool as it is as we will continue to use these attributes next.
Using the Foot Roll attribute to drive the main motion of the foot
Now we will use the Heel Offset, the Ball Offset and the Toe Pivot Offset attributes to allow the animator to work on top of the Foot Roll attribute, or use these 3 independent attributes instead of the one. We'll start with the Heel Offset. First make sure all the attributes on l_leg_IK_ctrl are at 0. Then in the SDK tool, highlight Heel Offset in the top-right side, highlight l_heel_loc in the bottom-left side and Rotate X in the bottom-right side window.
With everything in its original pose, hit Key on the SDK tool. Now increase the Heel Offset attribute to 10 and then use the Rotate X on the l_heel_loc to rotate the foot back onto the heel. I set it Rotate X to -50; this is the same amount as we did using the Foot Roll attribute. Hit Key on the SDK tool.
Using the same method, repeat the process for Ball Offset and Toe Pivot Offset.
The Offset attributes allow the animator to make fine adjustments to the Foot Roll