Tutorial 04


 La Moto

For this tutorial we will explore joint used for something else then soft deformation. In this case joint parenting will bring us to deform object based on LRA object. Then the used of IK Handle will be helpful to follow object and create specific behaviors
 download Video of this tutorials.
 download material files
Step 01            Prepared your model for rigging
  1. Group all Geometry under one empty group call “mesh”. Also include this new created group to a new display layer call “moto”.
  2. Rotate the motorCycle to face the +Z axis.
  3. Freeze Transformation and delete History
  4. Double check the modeling if it’s fit your need……..”Suspension…”
  5. Establish the need for the rig
    • What do you need to control??? (Main Moto Body, Front Wheel, back wheel, suspension?, Light).
    • Easy controller to make it easy to understand and animate.
    • Create a setup easily expandable
Step 02            Draw joint bases on Motor cycle need.

  • Draw 4 joints for the back suspension and wheel setup.
  • Watch out for last joint position. “Should be place at exact center of back wheel”
  • Rename them… “back_wheel_jnt_01” …………….
Tip to align joint position to center of the wheel:

  • Select the backWheel group.
  • Use Modify / Center Pivot to place its center appropriately.
  • Point constrain the joint to the backWheel position!
  • Select the destination object first: backWheel
  • Select the source object to constrain: back_wheel_jnt_3
  • Press point constrain and be sure maintain offset option is uncheck.
  • Then simply delete the constrain node as we don’t need anymore….

“We simply use a point Constrain to match the position of both object”.

  • Draw 3 joints for the front wheel suspension and wheel pivot.
  • Rename them as follow
  • front_wheel_jnt01
  • Upper_front_wheel_jnt01
  • Lower_front_wheel_jnt01
  • Watch out for joint position for:
    • Upper_front_wheel_jnt01
    • Lower_front_wheel_jnt01.
Use previous trick or snapping tool to archive your goal.
  • Now Using to Insert Joint Tool insert two new joint between Upper_front_wheel_jnt01, Lower_front_wheel_jnt01.
  • Then rename them as below in the picture.
  • Now un-parent  Lower_front_wheel_jnt02 and Lower_front_wheel_jnt01.
  • Then re-Parent them as shown below…..
Note: Done this way we are sure them both extremity are pointing at each other.
Finalize the joint creation:

  • Simply parent front_wheel_jnt01 to back_wheel_jnt_01
Step 03            Create Locator and the IK setup…
Create 3 Main Locator:

  • Place the locator as shown in the picture below.
  • Freeze Transform and delete History.
  • Rename your object to follow below outline naming convention.
Create 3 Main IK Handle:

  • Create 3 “RP” IK Handle as picture below showing.   (IK Should use Sticky setting)
  • Rename your IK Handle to follow below outline naming convention.
Wrap up the Locator and IK setup part 01:

  • Parent  backSuspension_ikHandle            to                     backWheel_loc
  • Parent  back_wheel_jnt_01                     to                     body_loc
  • Parent  Lower_front_wheel_jnt01             to                     frontWheel_loc 
  • Group together upperFrontSuspension_ikHandle and lowerFrontSuspension_ikHandle
  • Rename this new group frontSuspensionIK_grp.
Tips to reposition IK center pivot:
In order to make a proper suspension setup for our front wheel, we will need to temporally disable the IK solver nodes in our Maya scenes.

1. Go to Modify / Evaluate Nodes /  Ignore all 

2. Move the 2 IK center pivot   

3. Go to Modify / Evaluate Nodes /  Evaluate all.

Wrap up the Locator and IK setup part 02:

  • Point constrain upperFrontSuspension_ikHandle to  Lower_front_wheel_jnt01
  • Point constrain  lowerFrontSuspension_ikHandle  to Upper_front_wheel_jnt01

Now simply test the result using out 3 created locator. Simply translate them around but  remember to bring them back to the 0,0,0 position before your continue this rigging tutorials.


Step 04            Make our geometry follow our rig.
In order to make our geometry follow our joint and IK setup. It may be important to understand why I want to keep the geometry aside of my rig….. It can be simpler to parent my motor cycle geometry under my joints. But in case I need to replace some body part of extend my rig it may become really difficult or tiring to un-parent …change setup then parent again!

  • Parent Constrain         backGrp              to       back_wheel_jnt_03
  • Parent Constrain         frontChock          to       Lower_front_wheel_jnt01
  • Parent                           frontWheel           to        frontChock
  • Parent Constrain         moto_body         to       back_wheel_jnt_01
  • Parent Constrain         handle               to      Upper_front_wheel_jnt01
Once again play and observe your setup? Is everything seems wrong??? If  yes please seek help to understand where you get wrong or redo previous steps…..Else remember to reset your controller to 0,0,0.
Step 05            Complete the basic setup and cleanup:
  • Parent           frontWheel_loc           to                     body_ctrl
  • Parent           handle_ctrl                to                     body_ctrl
  • Parent           body_loc                   to                     body_ctrl
  • Parent           backWheel_loc           to                     body_ctrl
  • Group           body_ctrl                  and                  mesh group.
  • Rename this new group motorcycle
  • Select body_ctrl and add his content to a new layer call rig
  • Select back_wheel_jnt_01 and LocK his visibility to 0.
Step 06            Wheel controller and extra behavior:
In order to control our motorcycle wheel we will create two type of controller possibility.ManuelAnimator will need to manually key Frame the wanted rotation for the wheel rotation.

  • Create two new attributes on the body_ctrl controller
  • frontWheel                  float, no min, no max, default 0
  • backWheel                  float, no min, no max, default 0
  • Use the connection editor to create an equal relationship between each of these new attributes and our current wheel geometry setup.
  • body_ctrl.frontWheel             =          frontWheel_geo.rotateX
  • body_ctrl.backWheel             =          backWheel_geo.rotateX

Automatic Each time the bike will move forwards or backwards an automatic rotation will be apply to our wheel setup.

  • Select the  frontWheel and create a group with it call frontWheel_grp
  • Select the  backWheel and create a group with it call backWheel_grp


  • Now open the scripts editor and simply paste and create the expression below.
  • Window / Animation Editor / expression Editor


Step 07            Motor Cycle handle setup.
  • Select handle_ctrl object, then highlight the rotate in the channelBox.
  • Click edit / Set Driven Key
  • Now refresh the driver with handle_ctrl.
  • Now select upperFrontSuspension_ikHandle and lowerFrontSuspension_ikHandle . Add Them as Driven object.
  • Now simply SDK your objects like you want “3 poses”
    Neutral example: 0, 0, 0
    Right example: 35, 50, -50
    Left example: -35, -50, 50
As our rotation for handle_ctrlcan’t rotate more then the SDK value we have set…. It can be a nice moments to limits the rotation Y value.  
Also the handle_ctrl will not be used for others thing then the rotation in y of the handle. So you can now Lock and Hide the unwanted attributes…  

Step 08            Body controller and extra behavior:
In order to finish our setup for the body. It may be important to understand the goal we want to achieve.

  1. Wheally
  2. Stunt drifting
  3. Secondary motion on Motor Cycle body???
  4. Should I use existing controller or create new attributes?
  5. How many more control should I have!!!! ???????
1. Wheally:

  • Group together handle_ctlr, body_loc, backWheel_loc, frontWheel_loc.
  • Rename this new group wheally_grp.
  • Move the Center Pivot of this new group

  • Select body_ctrl and add a new attribute call
  • wheally        float, min = 0, max = 1, default 0
  • Now use SDK to connect and create a behavior between those two object and attributes.
  • body_ctrl. wheally
  • wheally_grp.rotateZ
2. Stunt drifting”

  • Group together body_loc, backWheel_loc,.
  • Rename this new group stuntDrifting_grp.
  • Move the Center Pivot of this new group below the Bike handle position

  • Select body_ctrl and add a new attribute call
  • stuntDrifting                           float, min = -1, max = 1, default 0
  • Now use SDK to connect and create a behavior between those two object and attributes.
  • body_ctrl. stuntDrifting
  • stuntDrifting_grp.rotateZ
Section up to You: A lots of others setup can be added to our MotorCycle. Remember. It just depend of what you need. Do not over rig a props or character who doesn’t need it

Re position the center pivot of body_locjust below the tanks gas, Observe the rotation in Z                    Is this behavior suit your need??Observe the translation in Y   ???       ……                If yes just add those into your setup.Can you use special function in the graph editor + SDK …….


Re position body_ctrl????


Add a spot light in front of the bike to rig the light systemsAdd extra attributes to control the main light function that the animator may use often…..

Step 09            Idiot proofs your rig:
So far we are done! But currently our rig can be break out really easily….So a good practice at this time will be to hide object and lock the unwanted attributes.
Here a list of thing to hide for this tutorial.

  • Set all the IK .visibility to 0. Then lock the attributes
  • Set the  skeleton.visibility to 0. Then lock the attributes
  • Hide all attributes on our _ctrl and _loc object
  • Fix layer 1 rig, 1 geometry… Add color if needed
But most important:Test your rig before you implement it into a production.Move your rig around… Rotate, translate it… Is everything still all right???


Congratulation you pass through your first props 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

Leave a Reply

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