Course notes
syllabus | schedule | topics | assignments | class notes | resources | students | Digital Arts website

 

Joint Orientation

Joint Orientation

It is important for all the joints that will be controlled using FK to be oriented correctly.
IK joints do not matter because they are controlled by the Handle.
If you are switching between IK and FK, you will need them oriented correctly.

To change the display of your Joints:
Window menu - Setting/Preferences - Preferences - Kinematics
Change Joint size
Save
OR
Display Menu - Animation - Joint Size
(these do not change the actual joint size, they just change the look of them)

Open the Joint Chain in the Outliner:
Hold Shift down: click the +

To reposition the Joint:
Select the Move tool
Select the joint and hit the INSERT key (make sure the axes is selected)
Skeleton menu - Orient Joint Options to reorient the joint
      uncheck hierarchy to effect 1 joint
      check hierarchy to reorient the joint plus all joints below the one you pick
(make sure you have selected individual joints in the outliner because picking from the perspective view will not selected them.

Then ALWAYS:
Modify menu - Freeze Transformations

Orientation of Joints (IMPORTANT)
All rotation axes should be the same - rotate the axes if necessary:
The X, Y ,Z axis should always point in the same direction as the world.

The end joints do not matter because they do not point towards another joint.

*You must ALWAYS reorient your axes after you have moved or rotated them

Turn on the display of the axes:
In select Object Mode:
Edit menu - Select All by Type - Joints
(look in your Outliner to see them selected)

Display menu - Transform Display - Local Rotation Axes
(you must have the joint selected first )

Component Mode - RMB over ? and deselect the others and make sure Local Rotation Axes is selected
Make sure the ? is selected
Select the axes with the Rotation Tool and rotate it
* Go back to Object Mode when done

component

OR

Skeleton Menu - Orient Joint - Options
pick None to orient it to the world
(the last joint on the chain does not rotate anything and will not reorient using the Orient Joint Tool)

To set the orientation of the last joint:
Select the last joint and Open the Attribute Editor or Channel Box
In the Joint Orient type 0, 0, 0 in the XYZ columns

Note
If you want a joint to rotate about a particular axis, that axis must not be the axis that points
into the joint's bone. For example, a joint can not rotate about its local X-axis if its
orientation is set to XYZ.

Making Controllers

Making Box Controllers:

Create a Polygon Cube:

Scale it so it is big enough to go around the ankle (make it much bigger than the ankle)

In the PERSP View:

Create EP Curve Tool Options - Curve Degree - Linear

Hold down the V key and click each corner of the cube to make a cube with a curve

Can save it on the Shelf:
Go to the Script Editor and open it
in the History Field, select the code
MMB drag it to the shelf
Shelf Editor - name the button - Box

Hand and Ankle Controllers:

Place the box over the LeftHandRoot - scale it to fit
Edit - Duplicate to make one for the RightHandRoot

Make one for the Ankles and position them over the LeftFootRoot and RightFootRoot

Select each of them and Modify - Freeze Transformations

Name them:

LeftArm_Controller
RightArm_Controller
LeftAnkle_Controller
RightAnkle_Controller


Head and Hips Controller:

Create a box for the head and place it over your character's head

Create a box for the hips and change to Component mode and Scale the vertices to make them like this:

hipControl

Hit INSERT and move the pivot point of the head controller to the HeadRoot
Hit INSERT to turn it off

Hit INSERT and move the pivot point of the hip controller to the HipRoot
Hit INSERT to turn it off

Will need to parent them using the script.


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_foot_CTL
Position it under the left foot area

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

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



Freeze transformation
Delete history

Make the IK handle larger so we can grab it:
Display - Animation - IK Handle Size...

Select the Ankle IK Handle (select it in the Outliner or the green lines under by the ankle)



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 (INSERT) 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
Place it under the other foot
Name it - R_foot_CTL

Put the pivot point of the right foot CTL where the ankle joint is (use snap to point)
Turn off snap to point and the INSERT

Freeze Transformation

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

Name it: R_ankle_IKGP



Then rename it with GP in the name at end (R_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_foot_CTL) and Modify - Add Attribute
Attribute name: Ball_Bend
Minimum: 0
Max: 45
Default: 0
ADD
(close the window - it shows up in the channel box)



Do the same for the right Foot Controller

Select the Left Toe IK Handle in the Outliner and Group to itself
Name the new Group - L_toe_IK_GP
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 Left 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
Add
(close window)

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

Repeat the above process for the Right foot controller
Connecting up the Left Foot Controller:
In Outliner
Middle mouse drag the L_ankle_IK_GP and L_toe_IK_GP into the Left Foot Controller (L_foot_CTL)
(this makes the Foot controller the parent)

L_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_foot_CTL
Load Driver

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

In the top window in the Set Driven Key window: Click Ball_Bend
Bottom window (Driven) select Rotate X (this should be the attribute that will bend the foot up and down)



You will need to click the L_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 X
Back in Set Driven Key window - press KEY

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 word Rotate X in the Channel Box then middle mouse button (MMB) in the window to make the IK go down
Key



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)

Close the window

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


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

Click the L_toe_IK_GP in the Outliner and Load Driven
Click rotate X

Select the Driver
Make sure Toe_Bend is 0
Key

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
Key


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
Key


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_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_foot_poleVector



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


The L_foot_poleVector should be a child of the L_foot_CTL so...
In the Outliner:
MMB drag the L_foot_poleVector to the L_foot_CTL

Fix up the Right foot Pole Vector (do the same thing for the right foot arrow)

Other controller shapes:
CUBE
Copy and paste this code into the Script window and select Command menu - Execute

curve -d 1 -p 9.26493 1.180816 1.180816 -p 9.26493 1.180816 -1.180816 -p 6.903298 1.180816 -1.180816 -p 6.903298 1.180816 1.180816 -p 9.26493 1.180816 1.180816 -p 9.26493 -1.180816 1.180816 -p 6.903298 -1.180816 1.180816 -p 6.903298 1.180816 1.180816 -p 6.903298 1.180816 -1.180816 -p 6.903298 -1.180816 -1.180816 -p 6.903298 -1.180816 1.180816 -p 9.26493 -1.180816 1.180816 -p 9.26493 -1.180816 -1.180816 -p 6.903298 -1.180816 -1.180816 -p 6.903298 1.180816 -1.180816 -p 9.26493 1.180816 -1.180816 -p 9.26493 -1.180816 -1.180816 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k

 


Connecting the Pieces


In the Hypergraph:
Select Options - Layout - Freeform Layout

hypergraph options

To Parent a joint:
You can drag the CHILD on top of the PARENT using the MMB (Middle Mouse Button)

To Unparent a joint:
You can MMB drag a parented node over an empty space to UNPARENT it

Learn the Hypergraph:
RMB in the Hypergraph and look at the options

************

Using the Outliner:

To parent in the outliner, MMB drag the child onto the parent


Testing

Look in the FRONT view
  1. Legs must look perfectly straight
  2. Spine must be straight
  3. Arms must be straight
Look in the SIDE view
  1. Knees must have a slight bend to them
Adjust joints and Freeze Transformation and Orient the joints if necessary

SAVE your file before doing this next step (name it something you will remember)


Testing the binding

Select all your joints (hint: Edit menu)

Make sure all joints have been added to the Joint Layer and all geomentry is in the Geometry layer
Change the Geometry layer to Normal (not Reference)

(with Joints selected) hold SHIFT and then click the geometry (character)

Skin menu - Bind Skin - Smooth Bind

Set the geometry layer back to R (reference)

Select the shoulder joint and rotate to put arm down

Rotate elbows, knees, hips

Pinching skin means we need to paint weights.
Displacement of body parts mean your joints are not placed correctly (you will need to fix this)

You may have pinching because you do not have enough geometry in that area.

DO NOT SAVE the file.

Take note of what needs to be moved and then reopen the old file and DO NOT save this one.

If you need to move a joint, remember to Orient it after and Freeze it.

Only do one side and delete the other side and then mirror it again.
Can use Behavior when mirroring so you can control both arms at once.

If you need to add more geometry:
Use Edit - Mesh - Insert Edge Loop Tool

If you accidently saved your file with it skinned:
Skin - Detach - Skin