Course notes
syllabus | schedule | topics | projects | class notes | resources | students | ARTC courses
Lecture 1: Intro to Animating with Maya Lecture 9: Character Set and Trax Editor
Lecture 2: Keyframing, Graph Editor, Playblast Lecture 10: Rigging a Sack
Lecture 3: Digital Audio Lecture 11: Inverse Kinematics on a Sack
Lecture 4: Audio, Projects, Hierarchy, Principles Lecture 12: Camera Moves and Positions
Lecture 5: Rendering, After Effects Lecture 13: Understanding Single Chain and Rotate IK
Lecture 6: Ball Bounce Lecture 14: Binding the Skin of the Sack
Lecture 7: Path Animation Lecture 15: Principles of Animation
Lecture 8: Forward K and Constraints Lecture 16: Making a Playable DVD
 Lecture 11: IK Setup for the Sack
To make the Inverse Kinematics:
Make sure you have done - Freeze Transformation on your Skeleton

Skeleton - IK Handle
Use RPsolver
Turn on sticky

Click the left hip joint, then the left Ankle

Move the root of the body to test

We need to pin foot to the floor so we will make some more IK handles:

IK Handle options - SCsolver
Click ankle then balljoint

IK Handle options - SCsolver
Click the ball joint then the toe

Open the Hierarchy in the Outliner:
Click the SHIFT and click the + on the sack_spin_root

Change name on all IKHandle1 to:

change the effector1 name to:

Change the rest to:


Do the other leg and name the joints

Double check that it is right

Select the IK handles and Effectors and Freeze Transformation
(If things get messed up, you may not have created the joint with NONE in the orientation)
Making Controllers
To make the foot controller:

In the TOP window:

Make a nurbs circle
Create - Nurbs Primitives - Circle
(if you turn off Interactive Creation, it will make it instantly for you)

Use the Select by Component Type and select the CVs and scale and move them to make a big foot shape

(don't forget to go back to select by Object Type)

Name it: L_sack_foot_CTL
Position it under the left foot area

Put pivot point of the foot CTL where the Ankle joint is
(snap to Point and move to the Ankle joint)

(don't forget to turn off the Snap to Point Tool)

Freeze transformation
Delete history

Select the Ankle IK Handle (select the IK lines)
Group it on itself so that we can change its pivot point

Then rename it with GP in the name at end

Then change the pivot point of the Ankle IK Group and move it to the Ball Joint (snap to Point)

Making the Right Foot Controller:
Duplicate the foot control and put it on the other side
Edit - Duplicate
Rotate it 180 on Y and place it under the other foot
Name it - R_sack_foot_CTL

Put the pivot point of the right foot CTL where the ankle joint is (use snap)

Freeze Transformation

Select the right Ankle IK Handle (R_sack_ankle_IK)
Group it on itself so that we can change its pivot point

Name it: R_sack_ankle_IKGP

Then rename it with GP in the name at end (R_sack_ankle_IKGP)

Then change the pivot point of the right Ankle IK Group and move it to the Ball Joint (snap to Point)

Adding an Attribute to the Foot Controllers:
Select the Left Foot Controller (L_sack_foot_CTL) and Modify - Add Attribute
Attribute name: Ball_Bend
Minimum: 0
Max: 45
Default: 0
(close the window)

Do the same for the right Foot Controller

Select the TOE IK Handle in the Outliner and Group to itself
Name the new Group - L_sack_toe_IKGP
Change the pivot point of this new group to the Ball joint

Do the same for the right Foot Controller

Adding another Attribute to the Left Foot Controller:

Select the Foot Controller and in the channel box, Right click and select Add ATTRIBUTE
Attribute Name: Toe_Bend
min (up and down): -45
Max: 45
default: 0
(close window)

In Channel box:
Select the Scale and Visibility on Foot controller
Right click - Hide

Repeat the above process for the right foot controller
Connecting up the Left Foot Controller:
In Outliner
Middle mouse drag the Group node of the Ankle and Toe into the Left Foot Controller (L_sack_foot_CTL)
(make the Foot controller the parent)

L_sack_ball_IK got left out so you need to add it to the hierarchy
(Middle mouse drag it under the foot controller)

Do the same for your right foot controller

READ: Maya Help Menu information on Single and Rotate Plane IK - [Maya Single and Rotate Chain Solvers]
Making the new Attributes control the movement of the foot
Animate menu - Set Driven Key - Set...

Foot control will be the driver:
In Outliner, select the L_sack_foot_CTL
Load Driver

In Outliner, select the group node of L_Sack_Ankle_IKGR
Load to Driven

In the top window in the Set Driven Key window: Click Ball_Bend
Bottom window select rotateZ

You will need to click the L_sack_foot_CTL in window of the Set Driven window to see attributes in the Channel box

Setting the first Key:
After clicking the name of the Driver in the Set Driven Key window, In Channel Box: set Ball_Bend attribute to 0

Click the name of the Driven in the Set Driven Key window then
In Channel Box type 0 in rotate z

Setting the second key:
Click the name of the Driver in the Set Driven Key window then
and in Channel Box Ball_Bend type 45

Click the Driven name in the Set Driven Key window and then click name of rotate z in the Channel Box then middle mouse button (MMB) in the window to make the IK go down

Test it:
In Set Driven Key window select Driver and then in Channel Box select the name Ball_Bend and MMB in window to test it (just bending the ball joint)

Set the R_sack_foot_CTL up just like you did the Left Ball_Bend controller

Setting the up the toe:
Pick L_sack_foot_CTL as the Driver
Select the Toe_Bend

Click the L_sack_toe_IKGP in the Outliner and Load Driven
Click rotatez

Select the Driver
Make sure it is 0

Setting the Maximum value:
Select Driver
In Channel Box, set Toe_Bend to 45

Select Driven
In Channel Box: rotate it down to the max you want it to bend

Test by selecting the Driver:
Select the Toe_Bend in the Channel Box then MMB drag

Setting the Maximum value:
Select Driver
In Channel Box, set Toe_Bend to -45

Select Driven
In Channel Box: rotate it up to the max you want it to bend

Test by selecting the Driver:
Select the Toe_Bend in the Channel Box then MMB drag

Do the same thing for the Right Toe_Bend
Pole Vector

In the top window - make a nurbs curve - Create menu - Nurbs Primitive - Circle
In Channel Box INPUTS add more Sections - 16
Use the Select by Components to shape it like an arrow facing forward

Snap to point (v key) and move it to the knee joint then move it out so its in front of the knee

Name the arrow: L_sack_foot_poleVector

Freeze transformation
Delete history

Hide all attributes except the Translate XYZ

Duplicate the Arrow and move to the Right knee (snap) then move it out in front
Name it: R_sack_foot_poleVector

Select the arrow for the Left leg (L_sack_foot_poleVector)
Ctrl select L_sack_ankle_IK handle then (not the group)
Constrain menu - Pole Vector

The L_sack_foot_poleVector should be a child of the L_sack_foot_CTL so...
In the Outliner:
MMB drag the L_sack_foot_poleVector to the L_sack_foot_CTL

Fix up the Right foot Pole Vector (do the same thing for the right foot arrow)
Setting up body controls
In the top window:
Make a nurbs curve
Reshape it to look like one end is the front

In the front or side window: Put the curve aligned with the root joint in the waist
It must be bigger than the geometry of the sack

Name the curve: sack_root_CTL

Freeze Transformations

Hide scale and visibility

Make root joint (sack_spine_root) a child of the body controller (sack_root_CTL)

Create another circle for mid torso
Move this curve to the level of the next spine joint up from the root

Name it sack_mid_torso_CTL

Freeze Transformations
Delete history

Duplicate the curve and move it up to the next level and name it sack_top_torso_CTL
Freeze Transformation

For each curve - hide all attributes but the rotate xyz

Select second circle up (sack_mid_torso_CTL)
Window - General Editor - Connection Editor
Clear all - if you had something else selected this would let you clear it out before loading new things.

Make sure the curves attributes and the joint rotation are all set to 0 in channel box
(translate may not be 0 on the joints - that's OK)

Select the curve for the mid (sack_mid_torso_CTL)
Reload Left
Select the spine joint spine one above the root (sack_spine_mid_joint)
Reload right

On left, select Rotate
On right, select Rotate

The joint rotate in the channel box should turn yellow

Clear All
Select top circle and Reload Left
Select joint 2 above the root (sack_spine_midtop_joint) and Reload Right
Connect Rotate to Rotate

Close the Connection Editor and test it in the window by rotating the circles
Type 0 in channel boxes on each circle to get back to original positions

Parent the curves appropriately:
     sack_root_CTL is parent of sack_mid_torso_CTL
(MMB drag the mid torso controller into the root controller)
     sack_mid_torso_CTL is parent of sack_top_torso_CTL
(MMB drag the top torso controller into the mid torso controller)

Select the Clavicle joint (center of top of body)
Keep Scale x and all Rotation in channel box - hide all others

[13] To make it easy to animate the arms
Make arm controllers and group them:
Turn off Create menu - Interactive Creation and make Nurbs circle
In the top window make a circle in the center of the world
Name it L_sack_clavicle_CTL

Rotate Z 90 degrees
the side view is a circle

Scale it down then Freeze Transformation
Delete History

Group the circle to itself
Name the group node: L_sack_clavicle_CTLGP

Select the new group L_sack_clavicle_CTLGP
Shift (in window) or Ctrl (in Outliner) select the joint on the left side of the top center joint (L_sack_clavical_joint)
Edit - Parent

Change all numbers in channel box for the group to 0 and it should jump up to the joint and orient itself right.

Hide all but rotation and scale X on the GRP and curve of controller
Delete the history on both

Open Window - General Editors - Connection Editor
Select L_sack_clavicle_CTL then Reload Left
Select L_sack_clavical_joint then Reload Right
Connect Rotate to Rotate
Scale X to Scale X (you must open the + to get to it)

Clear all
Close window

Make another circle for the shoulder in the TOP window
Scale it and rotate on Z 90
Freeze Transformations
Delete History

Make sure it looks like a circle in the side window

Name it L_sack_shoulder_CTR
Leave rotate and scale x - hide others
Group to itself and name the group L_sack_shoulder_CTRGP

Select the new group L_sack_shoulder_CTRGP
Shift (in window) select the shoulder joint (L_sack_shoulder_joint)
Edit - Parent

Select the L_sack_shoulder_CTRGP and set to 0 in Channel Box (except for scale)

Connection Editor
Clear All
Reload Left L_sack_shoulder_CTR (not GP)
Reload Right L_sack_shoulder_joint
Connect Rotate to Rotate and Scale x to Scale x

test it by rotating it

Make circle for elbow
Rotate 90 on Z
Freeze Transformation
Delete history
On this control curve hide all but scale x and rotate
Name it L_sack_elbow_CTL

Group on itself
Name it L_sack_elbow_CTLGP

Parent the GROUP to elbow joint (select group then joint)
Set the Channel Box values to 0

Connection editor rotate and scale x

Do the same thing for the Right Arm Controllers

The complete rigged character:

Adding Elements to Layers
If you have not made layers for each of the following items, do so:

Select all the objects in your environment and Right Mouse Button on the Label in the Layers
Add Selected Objects

Select all your body controllers and add to the Body_Controllers layer
Select all other parts of your rigged sack and add them to the right layer

Because of the way things are parented, you will have joints also disappear when you turn off Body_Controllers
You can add joints to a separate layer but it will also make the arm controllers disappear - its OK