Tutorial 05

 Biped rigging 102.

 download material files
 download rigging 101

In this tutorial my goal is to give you the easiest rig ever done. But still have all the nice function ability. IK/FK Arm and Leg. IK/FK spine stretching. This rig can be use later for your production as main or secondary character as its really easy to setup when you get the basic of it. Base on production and animator requirement, lots of others type of setup can be made but this rig for sure will deliver a good performance. You can also download rigging 101. and review the step for it. You may discover that they are similar and different. Rigging102 also explores the creation of a double joint hierarchy. One set of joint for the skinning call bindJnt, and the others set of joint to be mainly use as controller. Rigging 102 will naturally use Maya selection joint priority as FK ctrl also getting  advantage of the Maya IK/FK solver system to easily blend between two systems.

Here some others advantage of this technique:

  • You can do your final paintWeight before you do any rigging. This ensures you a good deformation even before rigging any body part.
  • You can send your character to others 3D package easily for rendering of compositing purpose.
  • Can be quickly used to receive motion capture data.

If you are doing this tutorial for your own character, you will need all the controller and joint mention below. Remember Ctrl should have proper center pivot and you joint required proper LRA to be easy to animate. Mirror your joint using the behaviour method.

Remember some basic will not always be cover in this tutorial as you are expected to know them by now.

LRA setting to apply to your joint:

  • X as Primary Axis
  • Z as Secondary Axis
  • Choose Positive or negative to the desired rotation result you want.

7 controller: Remember to freeze transformation.

  • upperTorso_ctrl
  • hip_ctrl
  • cog_ctrl
  • lf_arm_ctrlIK
  • rt_arm_ctrlIK
  • lf_leg_ctrlIK
  • rt_leg_ctrlIK

8 joint for spine:

  • cog_jnt
  • spine_jnt01
  • spine_jnt02
  • spine_jnt03
  • spine_jnt04
  • spine_jnt05
  • spine_jnt06
  • spine_jnt07

3 joint from neck to head: Parent neck_jnt to spine_jnt07 after LRA is Set.

  • neck_jnt
  • head_jnt
  • headEnd_jnt

2 joint from jaw: Parent jaw_jnt to head_jnt after LRA is Set.

  • jaw_jnt
  • jawEnd_jnt

5 for Leg X2: Parent lf_hip_jnt to cog_jnt after LRA is Set.

  • lf_hip_jnt
  • lf_knee_jnt
  • lf_ankle_jnt
  • lf_ball_jnt
  • lf_toe_jnt

5 for Arm X2: Parent lf_clavicle_jnt to spine_jnt07 after LRA is Set.

  • lf_clavicle_jnt
  • lf_shoulder_jnt
  • lf_elbow_jnt
  • lf_wrist_jnt
  • lf_palm_jnt


20 joint for fingers X2: Except for the thumb_jnt01 will be parent to wrist_jnt. Parent all finger jnt_01 to palm_jnt after LRA is Set.

  • lf_thumb01_jnt
  • lf_index01_jnt
  • lf_middle01_jnt
  • lf_ring01_jnt
  • lf_pinky01_jnt
  • lf_thumb02_jnt
  • lf_index02_jnt
  • lf_middle02_jnt
  • lf_ring02_jnt
  • lf_pinky02_jnt
  • lf_thumb03_jnt
  • lf_index03_jnt
  • lf_middle03_jnt
  • lf_ring03_jnt
  • lf_pinky03_jnt
  • lf_thumb04_jnt
  • lf_index04_jnt
  • lf_middle04_jnt
  • lf_ring04_jnt
  • lf_pinky04_jnt

Note: A lots of time we will use the comet scripting tools as they are more convenient than  the one in Maya. Keep the folder call _OthersRiggingTools and his content to an easy access location as we will use them often.


  • * In the front View achieve a straits line from lf_hip_jnt till the lf_ankle_jnt.
  • *In the front View achieve a straits line from lf_shoulder_jnt till the lf_palm_jnt.
  • *In the top View achieve a straits line from lf_elbow_jnt till the lf_palm_jnt.


Step 01 Prepared your model for rigging

  1. Group all Geometry under one empty group call mesh. Also take the time to names all objects element of your scene. REMEMBER: The feet of the character touching the grid.
  2. Freeze Transformation and Delete History where is needed.
  3. Look at all the ctrl object provided to you. Pay attention to the object pivot position. In this tutorial the crtl have been created and place for you, that will not always be the case.
  4. Create 3 new Display Layers for organizing. Named them geometryrigskeleton. Add your character geometry to the appropriate layer.
  5. Duplicate the joint hierarchy to get two series of joint. One will named bindJnt_ and the others one ctrlJnt_. Use modify / prefix hierarchy names to rename both joint structure correctly. Pay attention all children should also be renamed when you using prefix hierarchy names.
  6. Place the appropriate bindJnt_ “skeleton layer” and ctrlJnt_ and controller “rig layer” to their own Display layers.
  7. Using the bindJnt_cog_jnt create a skinCluster on the character main body part. That can also be the time to do a really good paintWeight session to ensure proper character limb deformation.
  8. Using select Hierarchy select all ctrlJnt_and increase the radius so the ctrlJnt_ are a bit bigger then the bindJnt_.



    • To do a good paintWeight for you character you need proper foundation. “joint placement, LRA “. If you can’t obtain a proper deformation now, you probably wouldn’t later…..
    • Take the time to have good deformation by placing and studying the joint placement and set a proper LRA for them, then you carry on with your rigging.
    • The others way around are painfull. Discovering when your rigging is done  that your joint are badly deforming due of joint placement.


  • DIE DIE must keep the stance pose.               T,R,S      0,0,1
  • Name everything it’s easier that ways.
  • LRA, Joint Placement, Rotation Order.
  • Ctrl object have proper pivot for object they will deform.



Step 02 Crete a master structure to parent everything                  

  • 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_grpctrl_grppose_grp and characterName )
  • Parent skeleton_grp and ctrl_grp under pose.
  • Parent pose under master.
  • Parent mesh and master under characterName.
  • Lock and Hide all attributes of characterName in this case it will be call ENRIKE.
  • Parent bindJnt_cog_jnt to skeleton_grp.
  • Parent ctrlJnt_cog_jnt to ctrl.



Step 03 Working our double joint hierarchy.

Now its time to make our ctrlJnt actually controlling our final binding joint bindJnt. Create a ParentConstrain for each bindJnt to follow his ctrlJnt counterpart. Or you can use the scripts below.


  • Do be sure both series of joint have the proper prefix naming on all joints.
  • Ensured that your have removed the “1” at the end of your duplicated joint so both
    series are 
    similar in naming.


WARNING: Test and be sure that if you move a ctrlJnt his counterpart are currently moving too.



Step 03.5 Breaking the hierarchy.

To be able to easily rig our character by body part. We must un-parent and hide the below object. You may have to re-parent Them to the ctrl_grp for clarity sick.

  • ctrlJnt_neck_jnt
  • ctrlJnt_lf_clavicle_jnt
  • ctrlJnt_rt_clavicle_jnt
  • ctrlJnt_lf_hip_jnt
  • ctrlJnt_rt_hip_jnt



Step 04                  Spine and Head setup.

In this tutorial we will learn how to create a spine setup that can be animated in both FK and IK methods simultaneously and having some Stretch and Squash effect.
    1. Create an Ik Spline Handle between ctrlJnt_cog_jnt and ctrlJnt_spine_jnt07.
      DO NOT USE the Auto Parent curve and the  Auto Simplify curve options from the Ik Handle Tool. 

      • Rename ikHandle1 and curve1.
        • spine_ik
        • spine_ik_crv
      • Group them together and rename this new group noDefofmation.
    2. Create 2 single extra joint (Change the radius to do not mistaken them with previous joint)   radius 3
      • Ctrl name                                              Pivot Position
      • hip_jntCtrl                                                   ctrlJnt_cog_jnt
      • upperTorso_jntCtrl                                 ctrlJnt_spine_jnt07
    3. Select the two _jntCtrl and the spine_ik_crv then create a Bind Skin to deform the spine_ik_crv. Use default setting for the Bind Skin and set Normalize weight to interactive.
    4. Using the  two ctrl below. Use the zeroOut technique and align the ctrl to get a better position base on the joint alignment of the spine.
      • Apply the zeroOut technique for the hip_ctrl to be align like ctrlJnt_cog_ctrlFK.
      • Apply the zeroOut technique for the upperTorso_ctrl to be align like ctrlJnt_spine_ctrlFK07.
      • parent hip_jntCtrl to hip_ctrl.
      • parent upperTorso_jntCtrl to upperTorso_ctrl.
        Description: 002
        NOTES: please rename the zeroOut node as…. upperTorso_ctrl_zeroOut  and hip_ctrl_zeroOut.
    5. On the spine_ik. Apply the advance twist options.
    6. Or watch the video explaination
    7.  Now create the FK spine. Using the ctrlJnt_cog_jnt and his children.
      •  Duplicate ctrlJnt_cog_jnt
      • Select and UN-parent all children to the worlds…
      • Now parent together.
        • ctrlJnt_spine_jnt01
          • ctrlJnt_spine_jnt03
            • ctrlJnt_spine_jnt05
              • ctrlJnt_spine_jnt07
      • Rename them as picture below
        Description: 003
      • Delete all unnecessary joint
      • Set the LRA correct if needed
        (Primary: X, Secondary: Z)
    8. The Head and Neck Creation and parenting to our spine rig. In this tutorial we will simply use the neck and head joint as ctrlFK.
      • Unhide and rename all ctrlJnt_neck_jnt and children as follow.
        • neck_ctrl
        • head_ctrl
        • jaw_ctrl
        • jawEnd_ctrl
        • headEnd_ctrl
      • Parent neck_ctrl to upperTorso_ctrl.
      • Set the .radius for both jawEnd_ctrl and headEnd_ctrl and spine_end_ctrlFK to 0.
    9. Spine and Head setup partial cleaning.
      • parent upperTorso_ctrl_zeroOut to spine_End_ctrlFK.
      • parent spine_01_ctrlFK to cog_ctrl
      • parent hip_ctrl_zero_out to cog_ctrl
      • parent ctrlJnt_cog_jnt to hip_ctrl
      • Group cog_ctrl and ctrlJnt_cog_jnt. and rename this group spineFKIK_setup.
      • Parent spineFKIK_setup to ctrl_grp node.
      • Set the visibility to 0 and lock the visibility for ctrlJnt_cog_jnt.
      • Lock the TRSv for all zeroOut Grp
      • Lock the TSv for spine_01_ctrlFKspine_02_ctrlFKspine_03_ctrlFK.
      • Set spine_End_ctrlFK  joint radius to 0 .
      • Hide hip_jntCtrl and upperTorso_jntCtrl then lock the visibility.
        Description: 004


Step 05  Leg Setup.

Our leg setup is pretty easy. It will be the same as we have done in previous tutorials but this time instead of using SDK to control the foot behaviors. We will use EXPRESSION to control our foot behavior and others IK/FK
connection and visibility.

  1. Create our leg FK setup. Using the ctrl_jnt, we will use them to become our FK controller.
    • Using the search and replace options. Rename all children of  ctrlJnt_lf_hip_jnt.
      Description: 007
    • Select lf_hip_ctrlFK and group it on himself to become lf_legFK_setup
    • Parent lf_legFK_setup to hip_ctrl.
    • Lock TRS for lf_legFK_setup .
  2. Create our leg IK setupBy following the table below group, parent, rename and replace the pivot of those object.
    1. Create an IK(RP solver) from lf_hip_ctrlFK to lf_ankle_ctrlFK.           Rename as lf_ankle_ik.
    2. Create an IK(SC solver) from lf_ankle_ctrlFK to lf_ball_ctrlFK.          Rename as lf_ball_ik.
    3. Create an IK(SC solver) from lf_ball_ctrlFK to lf_toe_ctrlFK.                Rename as lf_toe_ik.
  3. Selected object: Name for new group: New center pivot position for the new   “grp”
    lf_ankle_ik lf_footRollPivot lf_ball_ctrlFK
    lf_ball_ik   lf_toe_ik lf_toeTapPivot lf_ball_ctrlFK
    lf_toeTapPivot   lf_footRollPivot lf_ballTwistPivot lf_ball_ctrlFK
    lf_ballTwistPivot lf_ankle_outSidePivot Left side of the foot geometry
    lf_ankle_outSidePivot lf_ankle_inSidePivot Right side of the foot geometry
    lf_ankle_inSidePivot lf_frontPivot Front of the foot geometry
    lf_frontPivot lf_backPivot Back of the foot geometry
Description: footRoll
      • Parent lf_backPivot to lf_leg_ctrlIK.
      • Manually create extra attributes to the lf_leg_ctrlIK
        Or if more familiar with scripting use the MEL notes below to create the attributes.

        Attributes Name:

        Attributes type:

        Min value:

        Max value:

        Default value:






































        Mel Notes:



  • Setting up our FK to IK switch
      • Using any desired shape. Create an icon call lf_leg_xtraCtrl.
  • Position his center at the lf_ankle_ctrlFK
  • Freeze and delete history.
  • On lf_leg_xtraCtrl create new attributes.
    Attribute Name       Min                        Max                       Default                  Type
  • fk2ik                                   0                              1                              1                              float
  • fkVisibility                         0                              1                              0                              float
  • ikVisibility                         0                              1                              1                              float
  • ParentConstrain and ScaleConstain the lf_leg_xtraCtrl so he will always follow the lf_ankle_ctrlFK. REMEMBER TO DESELECT ALL BEFORE NEXT STEP.
  • Select lf_leg_xtraCtrl  and lock and hide all TRSV.
  • Parent lf_leg_xtraCtrl  to ctrl_grp.
    1. Create the Knee control
        • Create a nurbs circle call lf_kneePV_ctrl.
    2. Place lf_kneePV_ctrl on the knee position. Freeze Transformation……
    3. Now move lf_kneePV_ctrl
        • For the left knee. Move 5000000 units on the left side of the knee position.
        • For the right knee. Move -5000000 units on the right side of the knee position.
    4. Create a poleVectorConstrain so the lf_kneePV_ctrl will control the lf_ankle_ik.
    5. 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
    6. Group twice the lf_kneePV_ctrl on himself
        • Rename to lf_kneePV_ctrl_grp
        • Rename to lf_kneePV_ctrl_grpCons
    7. Replace both pivot to lf_ankle_ctrlFK.
    8. parentConstrain the lf_leg_ctrlIK to control lf_kneePV_ctrl_grpCons.
    9. Keyframe the lf_kneePV_ctrl_grpCons in Translate and rotation.
    10. Using the Connection Editor.
        • Connect lf_leg_ctrlIK.kneeFollow_onOff to lf_kneePV_ctrl_grpCons.blendPar1.
    11. Set the  lf_kneePV_ctrl_grpCons.visibility to 0. Now lock the visibility of it.
  • Leg setup partial cleaning.
      • Group together, lf_kneePV_ctrl_grpConslf_leg_ctrlIK.
  • Rename this new group lf_legIK_setup.
  • Parent lf_legIK_setup to ctrl_grp.
  • Turn off the visibility and lock his value for: lf_ankle_iklf_ball_ik and lf_toe_ik.
  • Now, create a new expression call lf_leg_expr, paste the expression below to complete the leg setup. This expression replace the SDK needed to control the leg.


For the right leg.

  1. Repeat all previous step for the rt_ leg
  2. Use the scripts editor to search and replace all lf_ to become rt_.
  3. In your newly created rt_leg_expr Simply inverse the min and max value for the footSide2Side expression.



Step 06 Arm Setup.

Creation of a IK / FK rig for the arm to be manipulated. Using a simple MEL expression, we will implement a forearm twist setup for more realist deformation of our character on our bindJnt.

  1. Create our Arm FK setup using the ctrl_jnt we will use them to become our FK controller
    • Using the search and replace options. Rename all children of ctrlJnt_lf_clavicle_jnt.
  2. Description: 005
  3. Group lf_clavicle_ctrlFK to become lf_armFK_setup.
    • Parent lf_armFK_setup to upperTorso_ctrl.
    • Lock TRS for lf_armFK_setup .
  4.  Create our Arm IK setup
    • Using the zeroOut technique. Align the lf_arm_ctrlIK to the joint.
    • Create an IK(RP solver) from lf_shoulder_ctrlFK to lf_wrist_ctrlFK. Rename as lf_arm_ik.
    • Create an IK(SC solver) from lf_wrist_ctrlFK to lf_palm_ctrlFK.        Rename as lf_hand_ik.
    • Parent lf_arm_ik to lf_Arm_CtrlIK_zeroOut.
    • Parent lf_hand_ik to lf_Arm_CtrlIK.
    • PointConstrain lf_arm_ik to lf_Arm_CtrlIK.
    • On lf_Arm_CtrlIK , create a new attribute call elbow.
  5. Setting up our FK to IK switch
    • Using any desired shape. Create an icon call lf_arm_xtraCtrl.
    • Position his center at the lf_wrist_ctrlFK
    • Freeze and delete history.
    • On lf_arm_xtraCtrl create new attributes.
      • Attribute Name       Min                        Max                       Default                  Type
      • fk2ik                                     0                              1                                    0                           float
      • fkVisibility                        0                              1                                    1                           float
      • ikVisibility                        0                              1                                    0                           float
    • ParentConstrain and ScaleConstain the lf_arm_xtraCtrl so he will always follow lf_wrist_ctrlFKREMEMBER TO DESELECT ALL BEFORE NEXT STEP.
    • Select  lf_arm_xtraCtrl and lock and Hide the TRSV.
    • Parent lf_arm_xtraCtrl to ctrl_grp.
  6. Arm setup partial cleaning.
    • Group on himself lf_Arm_CtrlIK_zeroOut to become lf_armIK_setup.
    • Parent lf_armIK_setup children of the ctrl_grp node.
    • Turn off the visibility and lock his value for: lf_arm_ik and lf_hand_ik.
    • Lock the TRS for the object lf_arm_ctrlIK_zeroOut.
  7. Use the expression to connect the ikblend, IK/FK visibility and other elbow control to our attributes.

Notes: For the right side use the scripts editor to search and replace all lf_ to become rt_.

Description: 006


Step 07.1  Fine-tune the spine deformation.
(Not really necessary if you do step 7.2. but it can help)

Now that all our body part are connected together. We can now observe the spine deformation..!Rotate and observe the deformation.If you observe weird deformation adjust the spine_ik_crv skinCluster.
  1. Edit the spine skinCluster action
    • Hide everything except the spine_ik_crv.
    • Select all cv component of it…. 0 = lower cv
    • Go to windows / General Editors/ Component Editor…. Then click on Smooth Skins tab.
    • Edit the numeric value of the influence to suit your need.
  2. Adjust the upperTorso_ctrl pivot to get proper rotation base on your spine setup.
    Description: 008


Step 07.2  create a smoother effect by adding a smooth effect on spine_ik_crv.

    • Select spine_ik_crv.
    • Go to the Modeling Menu / Curves / Smooth Curve Last one in the Menu
    • Play with the smoothness setting for a better smooth effect
    • Add a new attribute on hip or upperTorso_ctrl call smoothness.
    • Using the Connection Editor connect the new created attribute to control the the smoothness of the spine_ik_crv.
    • Remember… As long as you are rigging you may want to return this value to 0 to avoid potential mistake.


Step 07.3  Spine stretching 

    • Select spine_ik_crv.
    • In a mel command Line wrote.
      • arclen -ch 1;
    •  Create a multiplyDivide node and rename it divideByHimself. Set the node action to divide.
    • Connect curveInfo1.arcLength to dividebyHimself.input1X.
    • Copy the value from dividebyHimself.input1X to dividebyHimself.input2X.
    • Create a multiplyDivide node and rename it divideBy1. Set the node action to divide.
    • Connect dividebyHimself.outputX to divideBy1.input1X.
    • Now simply connect divideBy1.outputX to all “spine**_jnt.scaleX”

OPTIONAL: Spine stretching enhancement TIPS:

  • Using curveInfo1.arcLength as a driver. You can create body blendShape and use SDK to manipulate the deformation when stretch and squach append.
  • Create an influence object to represent to rib cage. Parent or parentConstrain the object to the upperTorso_ctrl.


Step 07.4 MasterScale

If you use the master to scale the character you may observe that the scaling effect does not really affect the spine. the problem come from the fact that our spine setup use a skinCluster to move the object around. Here is how to solve the issue.
  1. create a multiplyDivide node call spineScale_master.
    • Set operation to divide.
  2. Using the connection Editor connect
    1. Connect master.scaleY to spineScale_master.input2X.
    2. Connect curveInfo1.arcLength to spineScale_master.input1X
    3. Connect spineScale_master.outputX to spine_divideByHimself.input1X

OPTIONAL: If you are using the Spine stretching Step 07.3 you will need to execute the below step for every blendshape created.

    • Connect spineScale_master.outputX to “blendshapeName”+”targetname”.input


Step 08                  Finger Setup                        Repeat step 08 to complete the right side.


The setup for the finger will use simple attributes to control our finger position using SDK. They may have multiple way of rigging the fingers but here we will keep it really simple but still allowing the animator a wild range of motion for the finger control.

    1. Select the lf_arm_xtraCtrl and add the attributes as below using the scripts.
    2. Now simply use SDK and control your finger. “Can take a while”
    3. Hide all Finger when you are done with the SDK (lf_palm_ctrlFK and lf_thumb_ctrlFK01).
  • Modified the upper scripts to suit your need.
  • Create a 4 poses SDK for more realistic deformation.
  • In the graph editor you can change the fcurve with a proper interpolation for better result.
  • Ensure both side finger SDK value are the same degree of rotation.
  • Hide the finger as they will not be used by the animator as the SDK will move them.


Step 09 Basic Eye setup and basic preparation for facial rigging.

Here we will create a basic setup to control the eye direction. Using constrain we will be able to turn on or off the eye following the head or the eye stay absolute to the world!
  1. Structure of controller
    • Create 3 icons for the eye as the picture aside. (FT and delete History)
    • Parent this Icon as shown in the picture.
    • Create a new group with a new center pivot call “eye_ctrl_GRP”…
      Description: 009
    • Use centerPivot for all group and ctrl.
    • Organize your eye geometry. Use center Pivot on the new created group as it will be the base of deformation. Depend on your eye type or setup. You may have different hierarchy. But the basic are. Make the eye geometry7 follow our rig. Remember you don’t need any skinCluster on the eye geometry
      • Eye_geo_grp
        • lf_eye_geo_grp
        • rt_eye_geo_grp
          Description: 010
    • Parent Constrain the eye_geo_grp to the head_ctrl.
    • Scale Constrain the eye_geo_grp to the head_ctl.
    • Control the eye direction.
      • AimConstrain lf_eye_ctrl.  To the lf_eye_grp (Geometry group of the eye).
      • AimConstrain rt_eye_ctrl.  To the rt_eye_grp (Geometry group of the eye).
    • Parent constrain eye_ctrl_grp to follow the head_ctrl.
    • Parent eye_ctrl_grp to the ctrl_grp node.
    • Setkeyframe in TR on eye_ctrl_grp.
      • Select the eye_ctrl and add to it a new attributes call followLookAt this new attributes should be a “float” attributes. From 0 to 1 default 1
      • Use the connection editor to connect eye_ctrl.followLookAt to eye_ctrl_grp.blendParent1.
      • Parent eye_ctrl_grp to ctrl_grp.
        Description: tut04_30
    • Gum and Teeth parenting to the rig
    • ParentConstrain and ScaleConstrain the top_teeth to be driven by head_ctrl.
    • ParentConstrain and ScaleConstrain the bottom_teeth to be driven by jaw_ctrl.




Step10                   Forearm Twist

To obtain a more realistic feeling for the fore arm deformation. Or use Pose Space Deformation.

  1. Duplicate, bindJnt_lf_elbow_jnt
    • Move it in local translation…. About 2 unit or depend of your character topology.
    • Rename it to bindJnt_lf_foreArm_jnt
    • Delete all duplicated children,
    • Parent bindJnt_lf_foreArm_jnt to bindJnt_lf_elbow_jnt.
    • Create a pointConstrain “with maintain offset on” so bindJnt_lf_foreArm_jnt  will be translate with bindJnt_lf_wrist_jnt .
    • Repeat step a to e for the right side.
  2. Create an expression call skinning_expr and you can paste the text below.

3. Now add influence of the two new created joint bindJnt_lf_elbow_jnt and bindJnt_rt_elbow_jnt to the appropriated geometry.

Tips: The skinCluster normalize Weights should be set to interactive and not post.



Step 11                  More Paint weight

  1. Remove unnecessary influence like ( headEnd, jawEnd,  lf_rt_toe_jnt, and all finger tips)… ALL tips Set the radius to 0 to hide them.
  2. Temporally deactivate all the constrains. Go to Modify / Evaluate Nodes / Constrains
  3. Do the paint weight as you wish
  4. Paint from the inside out
  5. Remember to delete all animation created on the skeleton_grp… bindJnt
  6. Re-activate the constrain… Go to Modify / Evaluate Nodes / Constrains.
  7. Create simple animation to see the extreme poses in motion.    Keep frame one as stance pose


Stretchy leg and arm…… (required Step 07.4 MasterScale and it’s optional. )

Please download jd_stretch102.py.

  1. Source  jd_stretch102.py
  2. Unlock all ik Visibility for (lf_ankle_ik, rt_ankle_ik, lf_arm_ik, rt_arm_ik)
  3. Now Before sourcing and executing the scripts. Execute in a PYTHON command line


The stretch setup will have created new node. Simply parent them as follow
    • parent lf_ankle_ikStretch_grp to ctrl_grp
    • parentConstraint  lf_leg_ctrlIK_StretchStart_loc to follow the hip_ctrl
    • parentConstraint  lf_leg_ctrlIK_StretchEnd_loc     to follow the lf_footRollPivot
    • parentConstraint   lf_leg_ctrlIK_StretchEnd_locXtra to follow the hip_ctrl
    • Using the connection editor lf_leg_xtraCtrl.fk2ik  to control lf_leg_ctrlIK_StretchEnd_locBlender.blender
      • If you are using the double joint hierarchy
        • Use the connection editor lf_hip_ctrlFK.scale   will control     bindJnt_lf_hip_jnt.scale
        • Use the connection editor lf_knee_ctrlFK.scale   will control     bindJnt_lf_knee_jnt.scale
    • Repeat similar parenting for the rt leg.


    • parent lf_arm_ikStretch_grp to noDeform Grp
    • parentConstraint  lf_arm_ctrlIK_StretchStart_loc to follow the upperTorso_ctrl
    • parentConstraint  lf_arm_ctrlIK_StretchEnd_loc to follow the lf_arm_ctrlIK
    • parentConstraint  lf_arm_ctrlIK_StretchEnd_locXtra    to follow the upperTorso_ctrl
    • Using the connection editor lf_arm_xtraCtrl.fk2ik     will control     lf_arm_ctrlIK_StretchEnd_locBlender.blender
      • If you are using the double joint hierarchy
        • Use the connection editor lf_shoulder_ctrlFK.scale   will control     bindJnt_lf_shoulder_jnt.scale
        • Use the connection editor lf_elbow_ctrlFK.scale   will control     bindJnt_lf_elbow_jnt.scale
    • Repeat similar parenting for the rt arm.
    • Fix paintWeight to get better deformation.



Step 12                  General cleanup before PUBLISHING your rig for animation.

Before and doing anything else… TEST TEST TEST

  • Notice any weird behavior?
  • Translate and rotate the master and observe.
  • Rotate the cog_ctrl 180 degree in y… set the feet to match the others direction… Does your character going to be ok for animation???
  • Test all newly created attributes and ensure consistency.
  • Test Spline and Head.
  • Test the legs.
  • Test the arms
  • Test FK 2 IK switching.

If all those questions have been verified. Great save your work so you can continue to work from this point later.But now we need to make your rig BULLET PROOF. So we will hide those object and attributes who can be dangerous if they are manipulate by mistake.

  1. Expand all the hierarchy
  2. Set all the IK Handle visibility to 0 and lock the visibility attributes.
  3. Lock all attributes TRSV for all zeroOut grp.
  4. Lock and hide appropriate TRSV for all ctrl in you scene… IK and FK.
  5. As the animator will not need the bindJnt skeleton group. You simply hide the skeleton_grp node.
  6. Set proper Rotation Order for all controller in your scene
  7. Select all _ctrlFK element and lock and hide the TSV. Really important to protect the joint.
  8. Color code your rig. (Blue = left side, red = right side)

So your rig is ready for animation. Still before going to prod ask an animator to do a test animation to see….

Create Controller and convert the joint to real controller. 



About the bindJnt pay attention is they receive a keyframe in TRS the link to the ctrlJnt will be brake and you won’t be able to see proper result as long as you don’t delete the animation you set in TRS.To animate the IK FK switching for this rig. You must activate the Enable IK/FK Controlinside the Maya skeleton menu.



Time guideline for each step:

Step 01      Prepared your model for rigging                                                                                     20min
Step 02      Create a master structure to parent everything:                                                        05mins
Step 03      Working our double joint hierarchy.                                                                             04mins
Step 04      Spine setup                                                                                                                            20mins
Step 05      Leg Setup.   Both leg                                                                                                            35mins
Step 06      ArmSetup.   Both arm                                                                                                          25mins
Step 07       Fine-tune the spine deformation.                                                                                     35mins
Step 08      Finger Setup        Both arm                                                                                                  30mins
Step 09      Basic Eye setup                                                                                                                        07mins
Step10        Forearm Twist                                                                                                                         05mins
Step 11      More Paint weight                                                                                                                   30mins
Step 12     General cleanups before PUBLISHING your rig for animation.          20mins

Total:                                                                                                                                                                     216mins

                                                                                                                                                                                  3.6 hours



Leave a Reply

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