Reverse Foot Tutorial
or
How To Make a Foot That Looks Like a Foot Work Like a Foot Works
 
 First Things First
Everone models different, but to make your life easier, make sure your model's feet are
pointing forwards, and not 45 degrees apart...if you try this process of rigging with a
reverse foot and your model's feet are at angles, your results will be all over the
place--it won't work.
Also make sure your knees are bent forward...
Also, before you startworking with IK in anyway, shape, or form, check this out:
Make sure that Enable IKFK Control is UNCHECKED.  If it's got a check next to it, then IK
is basically turned off.  By default, there is a check next to this, so make sure you get
rid of it before you start.  Your IK will act funny if you don't do this.
 
 BONE UP...
Using the side view, lay out your bones, starting out at the top with the hip, then the
knee, ankle, ball, and toe.  For the Ball and Toe joints, hold 'X' to snap to the grid.
Then you can move them into place by selecting the joint and hitting 'insert'.  Move the
Ball joint to where the toes will bend.  Move the toe joint to the most extreme point of
the toes, makeing sure you leave the joint outside the geometry.  (now's a good time to
name the joints, too!)
Orient your joints by selecting the top-most joint (in this case, it's the hip), then
going into the Skeleton menu->Orient joints, and selecting the options box.  Choose 'YXZ'
and 'Orient Child Joints'.  This will set the joint's natural orientation with Y pointing
to the next joint in the sequence.  The X and Z axies might or might not fall into place.
 It's a good idea to follow the world's orientation as close as possible.  In this case
(see the image below) X is pointing to the right, so we will rotate the axies on Y to get
X pointing correctly.  Z will fall into place.  Enter Subcomponent and choose the
Question mark to edit the orients.  You can rotate them manually into place, or you can
use these quick scripts:
 
X Y Z don't forget this at the end!
rotate -r -os 90 0 0 ;
rotate -r -os 0 90 0 ;
rotate -r -os 0 0 90 ;
rotate -r -os 90 0   0 ;
rotate -r -os 0  90  0 ;
rotate -r -os 0  0  90 ;
Copy and paste the appropriate one into the script editor and execute.
It's a good idea to orient the Toe joint as if there was another joint in front of it.
Get into that habit for the future.
Using the Front view, slide your joints into place and then duplicate the joints for the
oppisite leg using Mirror joint in the Skeleton Menu.  In this case, the right leg is the
orgional, and using Mirror Joint, I created the left.
 
 TEST TIME!
To make sure we're in the right place so far, let's test our legs.  The orients for the
legs look like so...
So if we rotate each joint on the X axis, then the result will look like a curled
bunch...To do this, select the Toe joint, then the Ball Joint, Ankle, Knee, and then Hip.
 Then rotate on the X axis.  Do you see this:
If you do, then cool!  On to the next step.  If you don't, retrace your steps and see
what you did wrong...
 
**A quick note:  From here on, I'll be working on one leg only.  The steps following will
have to repeated on the other leg.  Duplicating the joints is the only shortcut...**
 OKay, IK...
There are a million articles and books in the world with explain Inverse Kinematics, so
I'm not going to bother here, but you'd want to at least have a basic understanding
before you continue.  Go on...I'll wait.
Back?  Okay, let's go...
Viewing Perspectivly, choose the option box for the 'IK Handle Tool' in the Skeleton
Menu.  Reset the settings, making sure you see 'RP Solver' in the little drop-down box.
Using the tool, first click the Hip joint, and then click the ankle Joint.
Poof!  An IK is born!
Go back into the option box, and now select 'SC Solver'.  Click the Ankle Joint, and then
the Ball Joint.  Another IK is born.  One more:  Using the 'SC Solver' again, choose the
Ball joint, and then the Toe Joint.  You should be seeing this:
(If you don't see the handles--the little lines sticking out of the joints--your IK scale
might be too low.  To Fix this goto Display->IK Handle Size and increase the size until
you can see them.)
 Building the Control Foot
Now we will look in the side view, and a little to the right...Using the grid, build the
control foot in this exact order:
1. Heel
2. Toe
3. Ball
4. Ankle
Follow the image, and make sure you snap ALL joints to a grid line using by holding the
'X' key.  You can move them into place later...
Orient your joints in the same manner as before...Don't skip this step, it's extremely
crucial that these joint follow the same orientation.  Name your joints!
When you create this foot, it will be in the center of the scene.  Your other joint
chains have been moved off sides to thier final places.  Don't move them by eye.  Let
Maya do the work!  Choose the Control Foot Heel Joint, hold 'V' and choose the X Axis
Translate arrow.  Move your mouse over the regular ankle joint, and Maya will snap the
Reverse foot into place.
Here, you can take another short cut...duplicate the Reverse Foot and do the snap to the
other ankle...
Now, to make life easier.  Put the regular joint chains on a layer, and set them to
Refrence.
Looking in the side view, select the Reverse Foot Heel Joint and slide it over until the
joint is on the geometry's heel.  This is where the character will roll the foot on the
backside.
Go into your Perspective view....
Now we can move the other joints into their places.  Choose a joint, hit insert, hold 'V'
and snap the joint into its proper place.  You'll be looking at:
 
 Adding Constraints
I hope you have a clear head right now, 'cause the next few steps can be a tad confusig.
So go get a coffee or sumtin'...I'll wait.
Back?  What?  None for me?  Fine, whatever.  On we go...
Next, we're gonna add constraints to the IK, so that when you move the reverse foot, the
IK's will follow.  And since the IK's are driving the regular joints, they will follow as
well.  Clicking order in the next few steps is very important, so pay attention!
I hope you still have your regular joints on that Refrenced Layer (or you can hide them
if that makes things easier).
*Select the Ankle joint (reverse foot), hold shift, then select the ankle's IK handle.
Contrain-> Point.
*Select the Ball Joint (reverse foot), hold shift, then select the ball's IK handle.
Contrain->Point
*Select the Toe Joint (reverse foot), hold shift, then select the toe's IK handle.
Contrain->Point
Okay.  Let's see if that worked out like we wanted it to.  Select the Heel Joint, and
move it back and forth on the Z axis.  When moved back, the toe will stay on the ground
until it can't anymore.  When moved forward, the toe will point to the ground.  Match to
the image below:
Use Undo to get the foot back into place.
 Controling the Control Foot
Rigging 101: "Never key a joint."  Yep.  Okay, so let's create a visual icon that will
allow us to a) control then many features of our foot in one easy to reach place, b)
visually tell us which foot we're dealing with, and c)  Allow us to key with out touching a joint (no duh).
K.  Create->Text.  Choose your font, and give it the input of 'r L'  (That's small r, and
a capital L).  You can use whatever you like, this is just my prefered method.  Click
Create.  Now go into your Hypergraph and pull the curves out of the hierachy, like so:
Name them: RightFootControl and LeftFootControl
(Here we're only working on the left leg, so the RightFootControl curve, we will just
push off until we do the other leg).
Rotate the LeftFootControl curve so it's reading parellel to the foot, and then 'V' snap
it to the Heel joint.  Now push it back on the Z axis a bit (about the length of the foot
itself is a good place).  Grab the heel joint, hold shift, grab the LeftFootControl
curve, and hit 'p' to parent the joints under the curve.  You'll see this:
(You may or may not get a Transform Node.  Ignore it.)
With the LeftFootControl curve selected, take a look at your channel box.  You'll see all
kinds of numbers for Translate's, Rotate's and Scales.  Now, if you move this curve, then
later want to put it in the right place, you'll have to remember all these numbers.
Pish-posh.  We can do better than that.  With the curve still selected, goto
Modify->Freeze Transforms.  Now, all Translates and Rotates are zeros, and all scales are
ones.  Now...in the future when you want your default pose, you can just hit zeros
across, and you'll be back to this spot.  Go ahead, move the foot, watch it go, then zero
it out. Neat, eh?
All done!  NOT.
So far, you have a basic reverse foot rig.  The control foot drives, the IK, the IK
drives the deform foot (what you'll sking your model to later).  You could leave it at
this if you wanted to.  But there's things you do with your feet that this rig cannot
duplicate just yet.  You can step up on your tip toes, and rotate your foot on top of
your toes, you can lift your toes while your feet are on the ground, and you can wiggle
your knee.  These items, we add next.  Be warned, though, there's some expressions to be
written, so if you're squeamish about this, have someone near to hold your hand.  Also,
if you haven't named your joints yet, have them smack you in the back of the head.  Name
your joints before continuing.
Adding Attributes
Choose the LeftFootControl curve, and goto Modify->Add Attribute.  For this rig, we're
only intrested in the Data Type and the Atribute's name.  For all the attributes we're
going to add, they will be Floats.  So make sire the Float radio button is selected.
Then, in the Attribute Name box, enter these names, hitting 'Add' after:
KneeTwist
ToeWiggle
BallRotate
ToeX
ToeY
ToeZ
In the LeftFootControl curve's channel box, you should see this:
Allrightie, starting at the top, we're gonna work with the Knee Twist.  To start this one
off, step on into your top-orthographic view, and using your favorite curve (I'm using a
Linear EP Curve here) create an icon you'd recognize as what your knee is pointing to.
Center your pivot to it by clicking Modify->Center Pivot.  Hop on over to your
Perspective view, hold 'V' and snap it to the knee joint.  Happy?  Good.  Now push it
front-ways on the Z axis.  Looking at this?
 
Name this curve your 'KneePointControl'. After you've done that, select the
KneePointControl curve, hold shift, and click on the ankle's IK.  Contrain->Pole Vector.
Test it out by moving the KneePointControl curve back and forth on the X axis.  The knee
should follow.  If not, then go back and find out what you did wrong.  The rest of you,
zero out your transforms and follow me...
 
...K, now we need to get that KneePointControl curve to follow the foot, because usually
your knee points in the same direction your toes do.  TO do this, select your
KneePointControl curve, and group it to itself by clicking Control-G.  Now, hit 'insert'
and snap the group's pivot to the ankle (both ankles are in the same spot, so it doesn't
matter which one).  Hit 'insert' again to get out of the pivot-moving mode.  Open up your
hypergraph for this next step...got it?  Okay, select the regular ankle joint (not the
reverse foot ankle joint), hold shift, and in the hypergraph, select the KneePointControl
curve's group.  Constrain->Point.
Translates will turn blue...
Looking at something like this?
Ignore the purple warnings you might get at the bottom.  If these bother you then enter
'cycleCheck -e off' in the scipt editor, and they will go away.
 
Okalee-dokalee...now on the Y axis, push the KneePointControl curve down to foot level.
Between the ankle and the floor is good.  Freeze your Transforms (modify->Freeze
transforms).  Time to connect the attributes from the LeftFootControl curve to drive this
thing.  Click this:  Window->General Editors->Connection Editor
Move the window aside so you can select the LeftFootControl curve.  Hit 'reload' on the
left side of the Conection Editor.  Select the KneePointControl curve and hit 'reload' on
the right side of the conection editor.  On the left, scroll to the bottom and highlight
'KneeTwist'  On the right side, scroll down and find Translate.  hit the + to expand and
see the X, Y, and Z's.  Choose the Translate X to highlight.  They will both turn
italics, and Translate X on the KneePointControl curve will turn yellow.
Test your work by selecting the LeftFootControl curve, and giving KneeTwist a jiggle.
The knee should move obligingly.  Zero it out, and select the KneePointControl curve for
the last time.  Select all the attributes, and lock them.  Press the Up Arrow on your
keyboard to get the group above, and lock all of those atributes, and the constraint's as
well.  You're done with the knee twist control!  (Have a drink, eh?)
Let's Wiggle Some toes!
Just to scare you right off the bat, this might be the most difficult part of the
tutorial.  But if you got the KneeTwist thing to work, then I'm sure you can do this.
Relax, after this tooth-pull, the rest is cake, I promise.
Right, let's get bloody...
Create a new layer, put your reverse foot joints on it, and hide it.  If your regular
joints are still refrenced, turn that off at this time so you can select those joints.  I
hope you have your joints named, because the next steps require that the name's be
correct...
As it stands, the SC solver IK in between the Ball joint and the Toe joint is controling
the rotations of the Ball joint.  If you try to rotate the Ball joint, Maya won't let
you--the IK is in control.  Well, what if you need to have control sometimes?  Well,
you'd shut off the IK.  But having to shut it off manually, and remember to turn it back
on later is a huge pain in the foot, per say.  So, let's do this little digger:
If my ToeWiggle value changes from 0, then shut off the IK, and let the Ball joint get
whatever value ToeWiggle is.
Otherwise, if Toewiggle is 0, then reset the ball joint's rotation back to 0, and turn
the IK back on.
Pretty straight forward, eh?  Well, now we have to tell this to Maya in a way that Maya
will understand.  An expression will do just fine here.
In my situation my ball joint is named 'Ball_Joint' and my ankle IK is named 'ikHandle3'
(remember, these names are case sensitive!).  The IK we're shutting off is the very last
one in the chain, the one in the toe.  Now we can translate our intentions into a script:
 
if (LeftFootControl.ToeWiggle != 0) 
 { 
 ikHandle3.ikBlend = 0; 
 Ball_Joint.rotateX = LeftFootControl.ToeWiggle; 
 } 
else 
 { 
 Ball_Joint.rotateX = 0; 
 ikHandle3.ikBlend = 1; 
 }
(it's easiest to write this all up in a text editor)
Time to cut and paste...
Click Window->Animation Editors->Expression Editor
Copy your script from where you're writing it, and paste it in the Expression Editor.
Click Create.  In the status bar, you should see "result: expression 1" (expression 1 is
the default name of your new expression, feel free, no...feel compelled to name it
something appropiate).
NOw when you change the value of Toe Wiggle on your LeftFootControl curve, the toe will
rise and fall.  Remember, at this time the IK is turned off, so the toe will not respond
as usual.  Turn it back to 0, and the toe will go back to normal.
Still with me?  Excellent.  The rest is so easy...I promise.
Ball and Toe
The control foot is controling, so we'll hide the deform foot layer and show the reverse
foot.  Open your Connection editor by clicking    Window->General Editors->Connection
Editor
Select the LeftFootControl curve, and Reload Left.  Select the Rvs_Ball, and Reload
Right.  Find BallRotate on the left side (it's near the bottom of the list), and select
RotateX on the right side.  You can tell what axis to rotate by looking at your gizmo in
your perspective view.  With both itmes highlighted, and italicised, the connection is
done.  Test it by changing BallRotate on your LeftFootControl curve.
Toe Rotations follow the same method exactly.  This time, reload right after selecting
the Rvs_Toe joint.  Match these:
ToeX->Rotate X
ToeY->Rotate Y
ToeZ->Rotate Z
Test these connections out before continuing...
 
Do the Pelvic Thrust...
In your side view, create one joint...name it, "Pelvis". Select the hip joint, hold
shift, click the Pevlis joint and hit 'p'.  Now, your hip bone is connected to
the...pevlic bone.  Rotate the hip joint and see what happens...now undo that, to set it
back to zero rotations.
 
 Guess what....come closer....no, seriously...come closer to the screen, I wanna whisper
this into your ear...closer....closer...now....
YOU'RE DONE!!!
K...all you have to do now is parent the geometry to the joints (only the deform joints,
not to the Reverse joints....I'll assume you know know to do that.
 
Congratulations....Now, go apply all that to the other leg, and you're read to go for a
walk!
If you wanna see this fil in it's completed form, then download this file:
RVS_FOOT_TUT.mb
Well, now, this idea is nothing new, so I can't take credit for the entire process, but I
did write this tutorial, so if you go passing it around, just make sure you leave my name
on it, please.  Thanks!  Enjoy!
 
 
 
TROUBLESHOOTING
---------------------------------
PROBLEM:  When I move the foot using the LeftFootControl curve, and then hit undo, the
KneePointControl curve doesn't return to its proper place...
SOLUTION:  Zero out the FootControlCurve's Translate values, or wiggle the control a bit.
 This is a problem with Maya's cycle check.  It doesn't refresh the screen properly.
This will not be a problem in key'd animation.
PROBLEM: I give ToeWiggle a value and the toe moves.  When I zero out the value, the toe
doesn't return to it's default position.
SOLUTION: Yet it does, Maya's just lazy.  Wiggle the foot, and Maya will wake up and put
the toe where it's supposed to be.  This will not be a problem in key'd animation.
PROBLEM:  I click on the screen, and things get fuzzy.
SOLUTION: Goto sleep for about 8 hours.