Tutorial 02

2 Leg Character.

  download material files.
Use save link as if you can’t download by clicking on link…


Step 01     Prepared your model for rigging

  1. Group all Geometry under one empty group call “mesh”. Also take the time to names others element of your scene.  “optional for this tutorials”
  1. Freeze Transformation and Delete History
  2. Create a new Display Layers named “geometry” and add the current geometry selection into it. Mark this new layer as template.

Step 02     Joint Creation

1. Create the joint for the leg and rename them.

  • lf_upperLeg_jnt
  • lf_lowerLeg_jnt
  • lf_ankle_jnt
  • lf_ball_jnt
  • lf_toe_jnt

2. Create a single joint and name it

  • Hips_jnt (Talk about C.O.G. position)

3. Move the “lf_upperLeg_jnt” to fit in the center of the “lf_leg_geo”

4. Using the mirror Joint tools

  • Using the proper setting. Mirror across “lf_leg_geo”. Choose the proper axis.
  • Take this time to rename the prefix to the right side.


Step 03     IK Handle creation and basic foot roll setup.

  1. Create 3 IK Handle
    • 1 Rp solver from “lf_upperLeg_jnt” to “lf_ankle_jnt”
    • 1 Sc solver from “lf_ankle_jnt” to “lf_ball_jnt”
    • 1 Sc solver from “lf_ball_jnt” to “lf_toe_jnt”
  2. Rename each of them like this. Matching the naming convention for the “_jnt”.
    • lf_ankle_ik
    • lf_ball_ik
    • lf_toe_ik
  3. Select the desired object. Group them, rename them and replace the center pivot of this new group to a new position

Selected object: Name for new group: New center pivot position for the new   “grp”
lf_ankle_ik lf_footRoll_grp lf_ball_jnt
lf_ball_ik and lf_toe_ik lf_toeTap_grp lf_ball_jnt
lf_toeTap_grp and lf_footRoll_grp lf_ballTwist_grp lf_ball_jnt
lf_ballTwist_grp lf_ankle_lfSide_grp Left side of the foot geometry
lf_ankle_lfSide_grp lf_ankle_rtSide_grp Right side of the foot geometry
lf_ankle_rtSide_grp lf_frontPivot_grp Front of the foot geometry
lf_frontPivot_grp lf_backPivot_grp Back of the foot geometry
3.Create a NURBS/curve and shape it as desired

  • Rename it “lf_foot_ctrl”
  • Snap in translation this object to the “lf_ankle_jnt”
  • Freeze Transformation and Delete History
  • Parent “lf_backPivot_grp” to “lf_foot_ctrl”



Step 04     Creating behaviors for our foot setup.

  1. Create new attributes to control the foot

Attributes Name:

Attributes type:

Min value:

Max value:

Default value:























 ikOffOn    (“float”)  0  1  1



Mel Notes:









2. Create SDK to control the foot behaviors

  • Select appropriates object and attributes into the appropriate section of the SetDrivenKey windows.
  • Set the value of object and set key in the SDK windows “don’t forget to select each and every object and attribute

lf_foot_ctrl.footRoll   = 0

  • lf_backPivot_grp.rotateX  = 0
  • lf_frontPivot_grp.rotateX  = 0
  • lf_footRoll_grp.rotateX  = 0

lf_foot_ctrl.footRoll   = 8

  • lf_backPivot_grp.rotateX  = 0
  • lf_frontPivot_grp.rotateX  = 0
  • lf_footRoll_grp.rotateX  = 37

lf_foot_ctrl.footRoll        = 10

  • lf_backPivot_grp.rotateX  = 0
  • lf_frontPivot_grp.rotateX  = 67
  • lf_footRoll_grp.rotateX  = 0

lf_foot_ctrl.footRoll   = -10

  • lf_backPivot_grp.rotateX  = -50
  • lf_frontPivot_grp.rotateX  = 0
  • lf_footRoll_grp.rotateX  = 0



pose 01

pose 02

lf_foot_ctrl.footRock   = 0

  • lf_anklert_rtSide_grp.rotateZ  = 0
  • lf_anklert_lfSide_grp.rotateZ  = 0

lf_foot_ctrl.footRock   = 10

  • lf_anklert_rtSide_grp.rotateZ  = 65
  • lf_anklert_lfSide_grp.rotateZ  = 0


   pose 03
   lf_foot_ctrl.footRock   = -10

  • lf_anklert_rtSide_grp.rotateZ  = 0
  • lf_anklert_lfSide_grp.rotateZ  = -65



pose 01

pose 02

lf_foot_ctrl.toeTap   = 0

  • lf_toeTap_grp.rotateX  = 0


lf_foot_ctrl.toeTap = 10

  • lf_toeTap_grp.rotateX  = -80


pose 03  

lf_foot_ctrl.toeTap = -10

  • lf_toeTap_grp.rotateX  = 80



pose 01

pose 02

lf_foot_ctrl.ballTwist   = 0

  • lf_ballTwist_grp.rotateY  = 0


lf_foot_ctrl.ballTwist   = 10

  • lf_ballTwist_grp.rotateY  = -90


pose 03  

lf_foot_ctrl.ballTwist   = -10

  • lf_ballTwist_grp.rotateY  = 90
Remember the chart above if more a guideline, more then absolute references. Base on your joint placement and character you will get different value on the rotation.
Using the connection editor create a “= relation” between concordant attributes go through unassigned attributes
  • Select “lf_ankle_ik” and click reload right
  • Select “lf_foot_ctrl” and click reload Left
  • Connect “knee” attributes with the “twist”

Using the connection editor create a “= relation” between concordant attributes go through unassigned attributes
  • Select “lf_foot_ctrl” and reload Left
  • Select “lf_ankle_ik“, lf_ball_ik, lf_toe_ik  and reload right
  • Connect “ikOffON” attributes with the “ikBlend” of each one of the selected ik_handle. X 3

  • Select “lf_foot_ctrl” and reload Left
  • Select “lf_upperLeg_jnt”  and reload right
  • Connect “fk_vis” attributes to control the “visibility” of “lf_upperLeg_jnt“.

Repeat Step 03 04 to complete the right leg


Step 05     Finalizing the rig Wrap up everything

1. From the top view using the EP Curve tools draw a linear arrow call “master”.

  • Freeze Transformation and Delete History
  • Create 4 empty group and call them (“skeleton”, “ctrl”, “pose”and “characterName” )
  • Parent “skeleton” and “ctrl” under “pose”
  • Parent “pose” under “master”
  • Parent “mesh” and “master” under “characterName”

2. Create a nurbs circle and rename it “cog_ctrl”

  • Position the “cog_ctrl” to the “hip_jnt” position.
  • Freeze Transformation and Delete History
  • Create a Parent and a scale constrain between “hips_jnt” “cog_ctrl”
  • Parent “lf_upperLeg_jnt” and “rt_upperLeg_jnt” to the “hips_jnt”
  • Parent “hips_jnt” to “skeleton”
  • Parent  “cog_ctrl”, “lf_ foot_ctrl” and “rt_foot_ctrl” into “ctrl”
  • Select “hips_jnt” and change his Draw Style from Bone to None.




Step 06     Association of mesh with the rig

They will have 3 different ways for you to associate the character geometry to the rig. Each of them will have there pro and cons. But in this case due of the simplicity on the character you can use the one you wish.

  • Parent the geometry to the closest joint in the hierarchy
  • ParentConstrain and scaleConstraint the geometry to the closest joint in the hierarchy
    Use efficient grouping to make it easier.
  • Use smoothBind and distribute the weight to the closest joint


Step 07     The final wrap up. Restrain the access to unnecessary attributes and object.

  • Lock and set the Ik Visibility to 0 for all of theme.
  • Create layer for rig. Add all “_ctrl” and skeleton object to it…
  • Lock and hide “foot_ctrl” scaling and visibility
  • “Hip_jnt” set draw style to none.
  • Lock and Hide every attributes on “characterName”
  • Be sure your SDK are similar on both side of the Body… Unless the character have a physical handicap ……


Note about the rig and workflow for animation.
This Rig is now ready for animation.The use of references model are really appreciated during production time. The usage of reference “model” with a string name as attributes will be the best way you you to create a reference in your scene.
Note:To animate the IK FK switching for this rig. You must activate the Enable IK/FK Controlinside the Maya skeleton menu.




Step 08     Changing the way the ankle affect the knee.     “OPTIONAL”
This technique is also call Knee PV no flip

You may have observe that when you rotate the “foot_ctrl” you are also automatically moving the knee position. In some case that will be a PERFECT behavior. But some time you may want to get move freedom and not affecting the knee position when you are rotating the “foot_ctrl”.
  • Breaking previous work and creating new node for the new setup.
    • Disconnect the twist attributes we did for the lf_ankle_ik.twist attributes
  • Create the Knee control
    • Create a nurbs circle call lf_kneePV_ctrl.
    • Place lf_kneePV_ctrl on the knee position. Freeze Transformation……
    • Now move lf_kneePV_ctrl
      • For Character left knee. Move 5000000 units on the left side of the knee position.
      • For Character right knee. Move -5000000 units on the right side of the knee position.
  • Create a poleVectorConstrain so the lf_kneePV_ctrl will manipulation the lf_ankle_ik.
  • A twist effect should appear as the PV now pointing on the side of the character. Simply set the lf_ankle_ik.twist attributes as below.
    • lf_ankle_ik.twist attribute to 90
    • rt_ankle_ik.twist attribute to -90
  • Group twice the lf_kneePV_ctrl on himself
    • Rename to lf_kneePV_ctrl_grp
    • Rename to lf_kneePV_ctrl_grpCons
    • Replace both pivot to lf_ankle_jnt.
  • Create two new attributes on lf_foot_ctrl
    • kneeFollow_onOff,      float,     min0, max1, default1
    • knee,                           float,     
  • parentConstrain the lf_foot_ctrl to control lf_kneePV_ctrl_grpCons.
    • Keyframe the Translation and rotation of lf_kneePV_ctrl_grpCons.
    • Using the Connection Editor. Connect lf_foot_ctrl.kneeFollow_onOff to lf_kneePV_ctrl_grpCons.blendParent1
    • Using the Connection Editor. Connect lf_foot_ctrl.knee to lf_kneePV_ctrl_grp.rotateY
  • Simply select the lf_legPV_cons set his visibility to 0, and lock the channel.
  • Parent lf_kneePV_ctrl_grpCons to a ctrl grp


Repeat Step 08part01 and 08part02 to complete the right leg



Congratulation you pass through your secound rigging tutorial. Keep practicing is the way to become better “rigger animator”. Keep a creative approach to it and have fun learning.

That’s all Folk’s


8 Comments on “Tutorial 02

  1. gosh, yeah you’re right. cause I’ve been hearing around people saying the test is going to be about foot rolls, so I checked out tutorial 02. Will head to the right tutorial for joint placement and LRA practice.

    View Comment

Leave a Reply

Your email address will not be published. Required fields are marked *