MAYA CHARACTER RIGGING PART 3: BODY CONTROLS,
CLUSTERS, CONNECTION EDITOR, COMPONENT EDITOR,
and BLENDSHAPES FOR FACE ANIMATION
[A] BODY CONTROL
In the Top View create a NURBS Circle larger than your character hips. Name it Body_Control. In the Perspective view snap [v] it to the Root Joint. Apply Freeze Transforms and then Parent the Root Joint to the Body_Control (select the Root, [shift]+select the circle, hit [p]).
[B] ROTATION JOINT CONTROLS: Hips, Neck, Head, Clavicles:
Create NURBS circles to act as Controls, snap to Joints (locate hips inside and parent to Body_Control). Point Constraint Control to Joints and Orient Constraint Joints to Control (Must turn on "Maintain Offset"!). Select and RightClick in the Channel Box to Lock and Hide the Translate (move) attributes from all rotation Controls. A "pad node" is a Group on the Control, with Constrains applied to and from the Group, to add some buffer.
[C] CHARACTER CONTROL: Create a NURBS circle and locate it at 0/0/0, name it Character_Control, and then parent Body, Feet, and Hand Controls to the Character Control circle. All controls should ultimately be parented under this Character_Control both so that it can be used as the main mover and to clean up the Outliner.
Create a Spline IK for the spine:
- CREATE IK: Identify bottom joint Spine 1 (NOT the Root!) and top joint Chest (where the arms meet, might be called "Clavicle" in some rigs). Activate the IK Spline Handle Tool (with an "L") and click first on Spine 1 and then Chest to create the Spline IK.
- NAMING: Rename the IK handle: Back_IKhandle and in the Outliner middle-mouse drag it under the Root Control (i.e., parent to Root Control). Find the Curve1 part of the Spline IK and rename it Back_Spline.
- CLUSTER: With the Back_Spline curve selected create a menu Create Deformers/Cluster. It will appear as a small "c" at the middle or bottom of the curve.
- ADJUST INFLUENCE: Open Window/General Editor/Component Editor. To see just the spline go to Display/Hide/All and then Display/Show Geometry/NURBS Curves. Select the Back_Spline curve and in the Component Editor go to the "Weighted Deformer" tab, rightClick on the spline to choose the component mode Control Vertex, and carefully [shift]+select each of the vertices going down the spline. In the Component Editor, set the Cluster1 influence of CV=0, CV=0.3, CV=0.6, and leave CV=1.0. Close the Compoenent Editor.
- TEST: Display/Show/All. In the Outliner select the Cluster1Handle and rotate it to see increasing rotation down spine.
- CREATE CONTROLLER: Rename Cluster1Handle "Spine_Cluster." Create a Locator. In the sideview move it behind the character back. Freeze Transforms. Add floating word identifier: with Locator Selected, go to menu Create/Annotation, type "Back Control" and hit [OK]. Move back a bit. Name the Locator "BackControl" and in the Outliner middle-mouse drag it under the Hip. Select BackContol Locator, [shift]+select BackIKHandle. Constrain/Point Constraint (open option box just to be sure Maintain Offset is on, hit [add]).
- ATTRIBUTES: Select the Locator and Modify/Add Attributes: BackBend (-5,10, 0) and BackTwist (-10,10,0). Window/General Editors/Connection Editor. Select the BackIKHandle and hit Reload Right. Connect BackBend to "Roll" and BackTwist to "Twist." Open Animate/Set Driven Key/Set. Load BackControl as the Driver and Spine_Cluster as the Driven (BackBend will be Rotate X and BackTwist wil be Rotate Z).
- At BackBend = 0 (in Channel box), select in Set Driven Key: BackBend and Spine_Cluster Rotate X (below) and hit [key] for default straight pose.
- At BackBend =-5, rotate Spine_Cluster backwards max and hit [key].
- At BackBend =10, rotate Spine_Cluster forwards max and hit [key].
- At BackTwist = 0 (in Channel box), select in Set Driven Key: BackTwist and Spine_Cluster Rotate Z (below) and hit [key] for default straight pose.
- At BackTwist =-10, rotate Spine_Cluster to the right max and hit [key].
- At BackTwist =10, rotate Spine_Cluster to the left max and hit [key].
- MODELING: Inner "eye" sphere has concave iris, main texture, and flat circle for the pupil (with separate edge normal smoothing). Outer "lens" sphere has convex lens and is transparent, specular and reflective. Delete back circle to select inner sphere when attached.
- CONTROL: Create a NURBS Circle for the Eyes_Contol, position in front of the face at eye level and Point Constraint to the Head Control (Maintain Offset!). Aim Constraint the eyes to the Eyes_Control so they rotate to follow the Eye_Control movements.
Individual eye Controls Circles can be prented to the dual-eye control, with each eye's Aim Constraint set to the indivuidual Controls.
You can use Set Driven Key on BlendShapes or Cluster movement to make the eyelids move to match the movement of the Eyes. Other eye expressions (blinking, etc) can work with Set Driven Key Attributes on this controller or elsewhere.
[F] IMPORTANT CLEANUP:
- REMOVE UNUSED ATTRIBUTES Select a Control Circle and in the Channel Box select the attributes you do NOT wish to be animate-able. RightClick to "Lock and Hide" them. This is critical to avoid accidental/mysterious keyframes!
To Unhide: Window/General Editors/Channel Control, and move items form the non-visible middle section to the visible left column.
- LAYERS: Put all Controllers into their own layer, so you can lock everything else from being selected. Put all Joints into a layer and continue to have a layer dedicated to the meshes (body, head and eyes). When you create target heads for BlendShapes, make a layer for the targets as well.
[G] FACE ANIMATION:
BlendShapes allow us to sculpt different expressions for character animation and then create sliders to animate between the original and new sculpts. BlendShapes only work if the original and "target" meshes are identical, so if new details are cut or merged after creating a BlendShape, the BlendShape and targets must be deleted and redone. NOTE that Mudbox or Zbrush can be used to create target sculpts quickly, if exported at lowest (original) tessellation. The process of creating BlendShapes:
- Detach the head at a reasonable location, like the top or bottom of the neck. Ideal is for the seam to be hidden where flesh meets clothing.
- Note the SmoothBind Skin will still be applied to head vertices. Delete the skin, which deletes from both body and head. This is so they can be applied independently, and after (above) the BlendShapes node in Channel Box History.
- Create 1 copy of the head and alter for a BlendShape target.
- Name the target head for its action, for example MouthOpen or EyeBlinkRight.
- Select the changed face, [shift]+select the original face (The selection order is very important—select the original face last!). In the Animation module, open Create Deformers/Blend Shape option box, use default settings except set the node name, for example "HeadBlend."
- To animate the BlendShape: menu Window/Animation Editors/Blend Shape.
- Add new targets with the Add Base button or in BlendShape menu Edit/Create BlendShape, and then drag them out from under the original.
Create only one BlendShape Node! Have multiple nodes? The simplest solution may be to delete the BlendShape nodes and retarget all target meshes into a new node.
To remove a BlendShape target: If the mesh still exists: Edit Deformers/BlendShapes/Remove [+options], then check 'Specify target,' type Target name. Also specify the specific BlendShape node. You can also add a new target with the 'Add' option box, but it is generally easier to use the BlendShape "Add Base Button".
What expressions should you make make? Feature films use hundreds of sculpts. For a simple animation or a short film, consider just 8-9 target head sculpts: right and left eye blinks, Ah, Oo, and Ee mouth poses, and 3-4 full face expressions important to your intended film, like surprised, angry, sad, and happy.
(2) CREATING A FACIAL RIG
See Jason Osipa's book "Stop Staring" for Face Control Systems: For each part of the face you want to control, create a NURBS Rectangle and a Locator, and position to the side. The movement of the Locator inside the Rectangle can be Connected to various BlendShapes to create intuitive controls for a singe face feature. This grid of squares can be locked to a dedicated camera.
- Position and scale the rectangle and Locator. Apply Freeze Transforms and Delete History. Parent Locator to the Rectangle.
- Open Window/General Editors/Connection Editor. Select Locator, [Reload Left]. In the BlendShape editor hit [Select] and in the Connection Editor hit [Reload Right].
- Connect two related BlendShape weights to the Locator Translation. For example, the wide open mouth "Ah" can be the Connected to the vertical Translate Y motion and the small, pursed lips "Oo" can be the horizontal Translate X. To make these Connections, open Translate on the left and Weight on the right, hit "Translate Y" and "Ah," and then "Translate X" and "Oo."
- Now move the Locator around the rectangle and watch the two BlendShapes combine.
- Trap the Locator in the Rectangle: Select the Locator and in the Attribute Editor under Limit Information/Translate turn on X, Y, and Z. Set X and Y to the limits you want for the locator's movement, and set Z to 0/0/0 so it cannot be moved at all.
(3) PAINTING WEIGHTS ON THE HEAD:
Typically, the BlendShapes node will do all face animation, and the Jaw Joint will not be used. Therefore, it is helpful to remove the Jaw Joint from influencing the face, as well as any other Joints except for the head. Use the Paint Weights tool to quickly paint strong influence for the head and remove the inluence of other Joints on the face, and use the Component Editor for any final vertex clean-up.
NOTE: Be wary of using the Flood option, as the vertices where the head mesh joins the body mesh need to have identical weightign of you will see tearing and holes in the mesh there during animation.
(4) CLUSTERS FOR FACE ANIMATION:
Clusters are essential for the Spine, but are also helpful anywhere we may want to animate a group of vertices. Clusters create transform nodes for groups of vertices, allowing soft-select animation.
NOTE: Clusters are part of the object history. If history is deleted, Cluster is removed.
- Select a region of vertices (you can select around, or use menu Edit/Paint Selection Tool to "paint" the vertices you want). [Note: when applied, cluster object will be in the center of this selection, so the selection is to choose cluster object location. For example, for a top eyelid consider 3 controllers]
- Open menu Create Deformers/Cluster options, choose "relative," apply.
- To revise selection, use menu Edit Deformers/Paint Cluster Weights to adjust the influence of each Cluster. To completely remove selected vertices from a Cluster, go to Window/General Editors/Component Editor, and under the "Weighted Deformers" tab select all the relevant vertices in the desired Cluster column and set their value to zero.
- To connect a Cluster to a Joint on a rig, put the Cluster into a group, position the group pivot at the Joint's pivot, and parent the group to the Joint. Groups fix the problem of double transformations when you move the parented hierarchy. REMEMBER: Cluster type must be "relative" for this to work.