CSE 464 - Character Pre-Production for 3D Animation

Assignment #2: Creating the Skeleton

Install Character Design Shelf

The first thing you will need to do is install the CharacterDesign shelf in Maya. Go to the Windows start menu, paste the following path into "Search files and programs", and hit enter:

O:\unix\projects\instr\production1\install_capstone_shelves.py

A window will pop up indicating that the capstone shelves have been installed. Now when you load Maya in the lab a series of shelves containing tools used by the animation capstone will automatically update. Note that if your profile does not save you will have to repeat the above step each time you log in. This class will only use the CharacterDesign shelf, which can be found on the top right of the Maya interface.


The only tool currently available is the transparency fader. This allows you to select one or more mesh objects in Maya and create a slider that will adjust their transparency.  Starting from your Maya scene with the image reference planes from the previous assignment, in the Display Layer box click the "R" next to the reference_lyr.  This allows the reference planes to be selectable.

Next select the reference planes then click the transparency fader button on the CharacterDesign shelf:

A transparency fader control handle should pop up in the Maya scene.  Selecting the circles and moving them up and down will allow you to adjust the transparency of the image planes.  The arrow at the bottom of the fader allows you to move this control mechanism around the scene.

To finish up, click the empty box next to the reference_lyr until "R" shows up again.

 

Installing the Character Design Shelf Manually

In case you have trouble installing the automatically updating Character Design shelf, or you want it available on your home copy of Maya, there is a way to manually install the shelf. First download this zip package: Character Design Shelf A2.1. Note that each week a new package will be posted as the shelf is updated. Each Maya installation has a series of folders for custom preferences and tools, so you will be dragging files from the unzipped archive's folders to their counterparts in Maya's preference folders. Here's a list of what needs to be dragged where:

  • Files in shelvesDocuments/maya/2014-x64/prefs/shelves/
  • Files in iconsDocuments/maya/2014-x64/prefs/icons/
  • Files in scriptsDocuments/maya/2014-x64/scripts/

Note: "Documents" is where Maya's preference folders are usually found on Windows. Additionally, the 2014-x64 will be different if you're using another version of Maya.

 

Joint Placement Reference

      

Joint Tool - (Animation menu set) Skeleton → Joint Tool

Conventions for joint orientation

Axis

Orientation

Why

X

Points down toward the child

Maya auto-orients joints this way as a convention.  This minimizes gimbal lock problems when using the default rotate order.  However, there are a few special cases where joints in character rigs should be oriented differently.

Z

Primary axis of rotation

Using Z as the primary axis of rotation further reduces risk of gimbal lock. This helps IK work more reliably.

Y

Rotating the Y axis 90 degrees causes gimbal lock.  We try to minimize gimbal lock by orienting Y as the least used axis.

 

1. The Back

Click and draw the back joint chain using the Joint Tool.  Use the image for reference on where to place the joints.  Most characters will need four joints in the spine (excluding null joints).  Having four joints makes it possible to create an s-curve.  Note: the final deformation skeleton may end up having many more than four joints.

1a. Creating the back joint chain
  1. Switch to the side camera view
  2. Activate the joint tool - Skeleton → Joint Tool

    • Note: If you can't find the Skeleton menu option, you may need to change the Maya menu set.  Unlike most other programs, which have fixed "File, Edit, etc." menus, Maya has so many tools that it requires multiple sets of menus.  Click the drop down menu on the top left of the interface and choose "Animation" for this assignment.

  3. Start with the pelvis.  Place the pelvis joint slightly below where the belt would be.
  4. Next, place the spine 1 through 3 similar to where they are in the reference image.  There should be a slight curve to these joints, a relaxed posture.  Horizontally, they should be placed slightly more toward the back.
  5. Finally, place the end null joint directly above spine 3. Press "enter" when finished.
  6. In the Outliner, click the "+" next to center_root_bind_joint to expand the hierarchy. To open (or close) the hierarchy all at once hold the Shift key before clicking the plus.
  7. Tip: If the joints are too small to easily work with navigate to Display → Animation → Joint Size... to change the relative sizing of all the joints in the scene. Individual joints can be scaled by changing the Radius attribute in the Channel Box or Attribute Editor.
  8. Name the joints as shown in the images above and below


 

1b. Orienting the back joints

  1. Check for flipping on the Y axis
    • Turn on local rotation axes display for the back joints
      • Shift-select all of the back joints
      • Turn on Local Rotation Axes display
        • Display → Transform Display → Local Rotation Axes
      • The Y axis should be aiming in the same direction for all joints. Particularly they should each aim out the back. In this example, the third joint has it's Y axis pointing the opposite way, so it will need to be re-oriented.



  2. Re-orient the back joints to fix any flipping of the Y axis
    • Skeleton → Orient Joint (option window)



    • Select the joint that has the Y axis pointing the wrong way
    • With the settings shown above, click Apply.  Change the axis to negative or positive as needed.
    • Repeat this down the joint chain until all of the Y axes are pointing the same way.

  3. Orient the root joint orthogonal to world space.
    • Select center_spine_1_bind_joint and press "shift-p" to unparent it.
    • With with the center_root_bind_joint selected, press "ctrl-a" to bring up the Attribute Editor.
    • In the Joint Orient field, round off all values to multiples of 90.
      • In this example only the Y value needs to change from -6.116 to 0.
      •  
    • Parent the joint back into the hierarchy
      • Select center_spine_1_bind_joint
      • Shift-click center_root_bind_joint to add it to the selection
      • Press "p"

  4. Orient spine 3 orthogonal to world space.
    • Select center_spine_3_bind_joint and press "shift-p" to unparent it.  
    • With the joint still selected, press "ctrl-a" to bring up the Attribute Editor.
    • In the Joint Orient field, round off all values to multiples of 90.  
    • Parent the joint back into the hierarchy
      • Select center_spine_3_bind_joint
      • Shift-click center_spine_2_bind_joint to add it to your selection
      • Press "p"

  5. You can turn off the rotation axes by shift selecting the joints in the chain and once again going to
    • Display → Transform Display → Local Rotation Axes

1c. Delete the temporary null joint

  1. Select temp_spine_null_joint
  2. Press the "delete" key on the keyboard


2. The Neck

Click and draw the neck joint chain using the Joint Tool.  Most characters need three neck joints (including the head, but not the end null joint) so that it can bend into a c-curve.

 

2a. Creating the neck joint chain

  1. Switch to the side view camera
  2. Activate the joint tool - Skeleton → Joint Tool
  3. Place the neck 1 joint slightly below the collar line.
  4. Place the neck 2 joint in the middle of the neck.  Horizontally, it should be slightly more toward the back of the neck.
  5. Place the head joint just below the ear where the vertebrae would join the skull.
  6. Place the head end null joint directly above the head and press "enter".
  7. Name the joints as shown in the image.

2b. Parent the neck to the back

  1. Select center_neck_1_bind_joint
  2. Shift-click center_spine_3_bind_joint to add it to your selection
  3. Press "p"

The skeleton should now look like this in the Outliner




2c. Orienting the neck joints

  1. Check for flipping on the Y axis
    • Shift select all joints in the neck chain.
    • Turn on Local Rotation Axes display
      • Display → Transform Display → Local Rotation Axes
    • Check to make sure the Y axis points in the same direction.

  2. Re-orient the neck joints to fix any flipping of the Y axis
    • (repeat the steps shown above for the back chain)

  3. Orient the head orthogonal to world space.
    • Select center_head_1_bind_joint and press "shift-p" to unparent it.  
    • With the joint still selected, press "ctrl-a" to bring up the Attribute Editor.
    • In the Joint Orient field, round off all values to multiples of 90.
    • Parent the joint back into the hierarchy.
      • Select center_head_1_bind_joint
      • Shift-click  center_neck_2_bind_joint to add it to your selection
      • Press "p"


3. The legs

Click and draw the leg joint chain using the Joint Tool.   Even if the reference image shows straight legs, add a bit of bend to the knee to indicate the direction it will bend.

3a. Creating the leg and toe joint chains

  1. Switch to the side view camera
  2. Activate the joint tool - Skeleton → Joint Tool
  3. Place the hip joint first.
  4. Place the knee and ankle joints.  (knee should be bent, not straight)
  5. Place the final foot null joint where the heel touches the ground.  Press "enter" when finished.
  6. Create a second joint chain for the toe.  Start by placing the right_ball_bind_joint.
  7. Place the foot end null joint and press "enter" when finished.
  8. Name the joints as shown in the image

3b. Orient the foot joint in world space

  1. Unparent the foot joint
    • Select the right_foot_bind_joint
    • Press "shift-p"
  2. With the foot joint selected, press "ctrl-a" to bring up the Attribute Editor.
  3. Zero out all of the joint orient values
  4. Parent the foot back to the knee
    • Select right_foot_bind_joint
    • Shift-select right_lowerleg_bind_joint
    • Press "p"
  5. Delete the temporary foot null joint
    • Select temp_null_joint
    • Press the "delete" key on the keyboard

3c. Orient the ball joint orthogonal to world space

  1. Select right_ball_bind_joint and press "ctrl-a" to bring up the Attribute Editor.
  2. In the Joint Orient field, round off all values to multiples of 90.

3d. Parent the toe to the foot

  1. Select right_ball_bind_joint
  2. Shift-select right_foot_bind_joint
  3. Press "p"

The leg joint chain should now look like this



3e. Align the right leg in the front view

  1. Switch the the front camera view.
  2. Select right_upperleg_bind_joint.
  3. Press "w" to activate the Move Tool.
  4. Move the joint over on the X axis to align with the reference image. Note that right/left on the skeleton is always relative to the character's direction.  From the front view you would line up the upper leg joint screen left, but it would be on the character's right.
  5. Press "e" to activate the Rotate Tool.
  6. Rotate the Y axis to align with the image.

3f. Parent the upper leg joint to the back

  1. Select right_upperleg_bind_joint
  2. Shift-select center_root_joint
  3. Press "p"

3g. Mirror the right leg to the left side

  1. Skeleton → Mirror Joint (option window)
  2. Change the settings to match the screenshot below
    • Mirror across: YZ
    • Mirror function: Behavior
    • Search for: right_
    • Replace with: left_
  3. Select right_upperleg_bind_joint and press apply

 

4. The arms

Click and draw the arm joint chain using the Joint Tool.   Even if the reference image shows straight arms, add a bit of bend to the elbow to indicate the direction it will bend.

4a. Creating the arm joint chain

  1. Switch to side camera view
  2. Activate the Joint Tool - Skeleton → Joint Tool
  3. First, place the upperarm shoulder joint
  4. Next, place the lowerarm elbow joint (elbow should be bent, not straight)
  5. Place the hand joint
  6. Place the temp hand null joint and press “enter” when finished

4b. Align the arm joint chain in the front view

  1. Select right_upperarm_bind_joint
  2. Press “w” to activate the Move Tool
  3. Move the joint to align the character’s right arm
  4. Press “e” to activate the Rotate Tool
  5. Rotate the joint chain to align with the image

The arm skeleton should now look like this:

4c. Creating the clavicle joint

  1. Switch to front camera view
  2. Activate the joint tool - Skeleton → Joint Tool
  3. Click and draw the clavicle as shown in the image.  Press “enter” when finished.
  4. Name the clavicle joint right_clavicle_bind_joint



4d. Parent the clavicle to the chest

  1. Select right_clavicle_bind_joint
  2. Shift-select center_spine_3_bind_joint
  3. Press “p”

4e. Orient the clavicle joint relative to the chest

  1. Select right_clavicle_bind_joint
  2. Press “ctrl-a” to bring up the Attribute Editor
  3. Zero out all joint orient values

4f. Parent the arm to the clavicle

  1. Select right_upperarm_bind_joint
  2. Shift-select right_clavicle_bind_joint
  3. Press “p”

4g. Mirror the arm from right to left

  1. Skeleton → Mirror Joint (option window)
  2. Change the settings to match the screenshot below
    • Mirror across: YZ
    • Mirror function: Behavior
    • Search for: right_
    • Replace with: left_
  3. Select right_clavicle_bind_joint and press apply

The skeleton up to this point should look similar to these screenshots:

Save your progress up to this point as assignment2_checkpoint.ma and be sure to check in with one of the TAs during lab hours.

 

5. The hands

To create the skeleton for the fingers we will make a joint chain for a single finger, then duplicate it and re-use it for the other fingers.

5a. Preparation

  1. Before creating the finger, you may need to reposition the right_hand_null_joint
  2. Unparent the joint
  3. Move it so that it sits in the center of the palm
  4. Reparent it to right_hand_bind_joint
  5. Rename right_hand_null_joint to "right_palm_bind_joint"

5b. Create Finger Joint Chain

  1. Switch to the top view
  2. Activate the joint tool. Hold the 'x' for grid snapping, then place an even, straight, four joint chain facing down the negative X axis

  1. Name the joints as labeled above.
  2. Switch to perspective view
  3. Rotate and position it to roughly where the base knuckle of the index finger would be
  4. By only rotating in Z, rotate the child joints to put the finger in a relaxed pose
  5. Open the tool settings located at the upper right of Maya
  6. For Move Axis, change to Local

  1. Change the lengths to line up roughly where the knuckles would be by only moving the X-axis (red arrow manipulator)
  2. Select right_index_1_bind_joint
  3. Go to Modify → Freeze Transformations Options
  4. Uncheck all of the boxes except for Rotate and click Freeze Transform. This will make all rotations down the chain 0.
  1. Here is a side view of the finger in relation to the arm:

5c. Creating the Remaining Fingers

  1. Select right_index_1_bind_joint and duplicate it four times (ctrl+d)
  2. Move and rotate them so that you form the rest of the fingers
  3. Use the same technique as above to lengthen or shorten bones
  4. Rename the fingers so that index is replaced with thumb, middle, ring, and pinky for each duplicate
    Tip: To make the renaming process less tedious, you can go to Modify → Search and Replace Names... and specify a string to search for and a string to replace.

5d. Orienting the Fingers

  1. To make sure everything is oriented and positioned properly, select all the finger joint chains and their children.
  2. Rotate about the Z-axis and the fingers should form a fist, with the finger
  3. Undo the rotation and make any changes to the position or rotation of the fingers so that it will clamp into a fist when you rotate about Z
  4. Keep repeating these steps until you get the desired fist shape when you rotate about Z. The fingers should start coming together when you rotate them. It should look as follows when looking at the fist head on:

  1. The the thumb should be oriented so that when you rotate about Z, it will reach just below the start of the pinky joint chain. Below is what it looks like from underneath the hand:

5e. Completing the Hand

  1. Select the top most parent of all the finger joint chains
  2. Freeze transformations, again making sure you are only freezing rotation
  3. Parent each finger to the right_palm_bind_joint
  4. Delete left_clavicle_bind_joint
  5. Select the right_clavicle_bind_joint
  6. Go to Skeleton → Mirror Joint Options
  7. Make sure the settings match the screenshot below:


6. Finalize

  1. Select the center_root_bind_joint
  2. Go to Modify → Freeze Transformations Options
  3. Freeze transformations, again making sure you are only freezing rotation

End of Assignment 2.


Turning in your files

Like last time you will be turning your files into Collect-It on catalyst. For this assignment, turn in the following:

  1. front_view.png
  2. side_view.png
  3. assignment2.ma
    • Make sure to use Maya 2014
    • Turn in a Maya ASCII file, not Maya Binary

Your assignment is due Thursday 8/7 at 6:00 PM.

In addition, you will be required to check in with the TAs during office hours at least once for this assignment. Make sure check in with your assignment2_checkpoint.ma file.