Parent Binding
The simplest type of binding is to parent geometry to joints. Parenting geometry to joints is very fast and needs no tweaking, but requires the pieces of a model to be separate. Ex: An arm would be split into an upper part and lower part. There are scenarios where this is appropriate for example a ring on a finger or the eyes of a character.
- Create a Simple Scene
- Parent the Geometry
- Test the Joint Rotations
- – Select the bones and rotate them to see the results.
- Note: Selecting bones have a higher selection than geometry. This is true if the joints are not parented to the geometry otherwise both will be selected.
Rigid Binding
Rigid Binding works like parent binding except it affects the geometry. Rigid binding works, by the vertices closer to a certain joint, will be more inclined o follow that joint.
- Create a Simple Scene
- – Change to the top view
- – Draw three joints defining an arm.
- – Select the first joint and duplicate and move them side by side.
- – Switch to perspective view.
- – Create a polygonal cylinder and a NURBs cylinder
- – Place each cylinder so it entirely covers each joint chain.
- – Set the polygonal cylinder’s Subdivision Height: 10
- – Set the NURBs cylinder’s Span:10
- Rigid Bind
- – Select the first joint chain, then SHFT + SELECT the polygonal cylinder.
- – Apply Rigid Bind. ANIMATION || Skin > Bind Skin > Rigid Bind.
- – Select the second joint chain, then SHFT+SELECT the NURBs Cylinder.
- – Apply Rigid Bind. ANIMATION || Skin > Bind Skin > Rigid Bind.
- Test the Joint’s Rotations
- Edit Membership Tool
- Change the rigid binding defaults so certain points follow a joint. The Edit Membership Tool allows you to specify the points on a geometry that are affected by the joint.
- – Select ANIMATION || Edit Deformers > Edit > Membership Tool
- – Click on the middle joint of the polygonal cylinder.
- Note: you will see all the highlighted vertices affected by the joint.
- – Remove points: CTRL + CLICK DRAG MARQUEE OVER POINTS
- – Add Points: SHFT + CLICK DRAG MARQUEE OVER POINTS
Flexors
Flexor is a type of deformer used with rigid bound surfaces. A flexor can smooth out the binding region between the bones, preventing the geometry from cracking. Flexor points can be keyed to modify their positions as bones rotate. Ex: you can modify an elbow shape when an elbow bends.
- Create a Flexor
- – Reset the previous bones to their default positions.
- – Select the middle joint for the first joint chain.
- – ANIMATION || Skin > Edit Rigid Skin > Create Flexor
- (Option window pops up)
- Create Flexor Options
- – Flexor Type: Lattice
- – Position the Flexor: On
- – Click [CREATE]
- (The flexor is created at the joint’s position and is selected so you can position it correctly.)
– Translate and scale the flexor to cover the bending region
- Test the Joint Rotations
- Set Driven Keys
- – Zero the rotation of the bones.
- – Select ANIMATION || Set Driven Key >Set
- Notice: A window with two section appears.
- – Select the middle joint. This joint will be the driver. The driver modifies whatever it is connected to. In this case it would be called the driven.
- – In the Driver section, while the joint is still selected, load the middle joint by clicking on load driver. This assigns the middle joint as the driver. Next, highlight/select the Rotate Y attribute on the right.
- Note:This says when the middle joint’s RotateY-axis is modified, also modify the driven objects. MAKE SURE YOU HAVE THE RIGHT ATTRIBUTE HIGHLIGHTED FOR YOUR DRIVER TO MODIFY THEN DRIVEN.
- – Assign the driven objects to be affected by the middle joints Y-rotation. Select the flexor and press F8 to go into component mode.
- – Select ALL the flexor’s lattice points and click [LOAD DRIVEN] in the Set Driven Window.
- – Highlight all the driven attributes in the Driven section.
- – Click [KEY] button to set normal position
- – Return to Object mode. Rotate the middle joint on the Y-axis by about 80 degrees
- – Select the flexor and press F8 to go back to component mode.
- – Move the flexor point to make a nice elbow shape on the cylinder.
- – Select all the points on for the lattice.
- – Click [KEY] to set the bent position.
- (Note: The points may not move exactly as expected since they are using local space of the middle bone)
- Test Joint Rotations
Lattice Binding
Lattice binding is another option to achieve nice skinning. Lattice binding can create a very smooth binding using the simplicity of rigid binding.
- Detach the Skin
- – Select the polygon cylinder from the previous exercise.
- – ANIMATION || Skin > Detach Skin
- Notice: If your joint was bent, the geometry will snap back to a straight cylinder once you detach the skin from the joint.
- – Select the middle joint and zero it’s rotation back to default.
- – Delete a flexor. Select the flexor and press delete.
- Create a Lattice
- – Select the polygonal cylinder.
- – Create a Lattice: ANIMATION || Create Deformers > Lattice.
- Note: A lattice is created and fits the geometry perfectly, so it may appear as if nothing is present.
- With the lattice selected, display your Channel Box. Change he value of he T Divisions to 9. CHANNEL BOX || Shapes > T Divisions: 9.
- Rigid Bind the Lattice
- Test Joint Rotations
- Adjust the Lattice
- Edit The Membership
- It is now much easier to adjust the membership of the lattice points rather than adjusting the vertices of the geometry.
- Driven Lattice
Smooth Binding
Most advanced type of skinning is smooth binding. Smooth binding allows a geometry’s vertex or CV to be affected by multiple bones according to a percentage.
MY NOTES:
- Set-up the Scene
- – Switch to top view.
- – Create a joint with three points to resemble an arm.
- – Create a polygon cylinder.
- – Position the elements so the joint resides inside the polygon.
- – Select the joint’s first point and SHFT+SELECT the polygon.
- – ANIMATION || Skin > Bind Skin > Smooth Bind.
- – Rotate the second joint’s Y-axis 90.
- – Select the polygon and apply Paint Weights tool. ANIMATION || Skin > Edit Smooth Skin Bind > Paint Skin Weights Tool > □.
- – My Settings: Mostly default.
- Hopefully, this solves the problem. You should see this.
UPDATE:
- Restarting Maya and recreating a polygon with a joint. Seemed to have fixed it. IMPORTANT: If you delete all by type > history, This will disable paint weights tool. Also, NURBs seem to have a better tolerance to the paint weights tool.
Book’s Notes:
- Set-up the Scene
- – Switch to top view.
- – Create a joint with three points to resemble an arm.
- – Create a polygon cylinder.
- – Position the elements so the joint resides inside the polygon.
- Smooth Bind
- – Select the joint’s first point and SHFT+SELECT the polygon.
- – ANIMATION || Skin > Bind Skin > Smooth Bind.
- Test Joint Rotations
- – Select the middle joint and rotate to see it’s influence.
- – Rotate the joint to y-axis 90 degrees
- Edit Smooth Bind Influence
Binding the Penguin
Since the penguin is composed of deformable objects, you will bind it’s geometry using Smooth Binding. You will also bind the eyes and claws.
- Open The Last Scene
- – Open a scene with just the penguin geometry and the skeleton chain.
- – Save file as Skinning.
- Set Preferred Angle
- When binding geometry to a skeleton, you need to test the rotations. By doing so you should be able to return the skeleton to it’s default position quickly. MAYA has two commands called Set Preferred Angle and Assume Preferred Angle. These commands allow you to set the default skeleton pose then return to that pose whenever you want.
- Note: The preferred Angle also defines the bending angle for IK handles.
- – Select the pelvis joint.
- – RMB over the pelvis joint > (window pop)
- – Select Set Preferred Angle.
- NOTE: These Commands are also available in the Skeleton Menu.
- Assume Preferred Angle
- – Rotate several joints.
- – Select the pelvis joint
- – (on the stage) RMB over the pelvis > (window pop)
- – Select Assume Preferred Angle
- Notice: The skeleton returns to it’s preferred angle.
- Bind The Body
- – Select the Smooth Bind Options window. ANIMATION || Skin > Bind Skin > Smooth Bind > □.
- – Select all the following joints below using SHFT + CLICK
- NOTE: I noticed I was missing a joint for the second eye. So I added a joint using : ANIMATION || Skeleton > Insert Joint Tool.
- pelvis, spine, spine1, neck, neck1, head, jaw, tail, lClavicle, lShoulder, lElbow, lWrist, rClavicle, rClavicle, rShoulder, rElbow, rWrist, lHip, lKnee, lAnkle, lToes, rHip, rKee, rAnkle, rToes.
- – SHFT + SELECT the body geometry.
- – Click [BIND SKIN]
- Notice: Skeleton chain changed to a multiple colored joint chain. See below.
- – Rotate the pelvis joint to see if it’s attached.
- Smooth Bind the Eyeballs
- – Select the lEyeball geometry.
- – SHFT + SELECT the lEye joint.
- – ANIMATION || Skin > Bind Skin > Smooth Bind.
- – Repeat to the other eye.
- – Rotate the eye joints to see if they follow.
- Rigid Bind the Eye Lids
- – Select the lEyelid and rEyelid geometry.
- – SHFT + SELECT the head joint.
- – Rigid Bind the eyelids to the head joint: ANIMATION || Skin > Bind Skin > Rigid Bind > □.
- Rigid Bind Options:
- – Bind To: Selected Joints
- – Click [BIND SKIN]
- – Rotate the head joints to see if the eyeLids follow.
- – Repeat this step with the hair geometry.
- Make Sure Everything is Bound
- Reset The Skeleton Position
– Undo to bring the skeleton back to it’s original position.
– Or… Select the pelvis joint, then ANIMATION || Skeleton > Assume Preferred Angle. - Save
- – 030512_10-skinning_02.ma
- Paint Skin Weights Tool
- Once the geometry is bound to the skeleton, you’ll need to refine the weighting so every joint bends the geometry as expected. Use the Paint Weights Skin Tool. This tool works like a paint brush. You paint white to symbolize the geometry being fully influenced by the joint and black not being influenced at all.
Joint Degrees Of Freedom and Limits
Your character is unable to achieve every possible. Similar to a human body, a joint has restrictions on being able to rotate or limits to how far a joint can rotate. You can control how far a joint can rotate.
- Degrees of Freedom
- By default all three joints are free to rotate. If you can you can limit the degrees of freedom on a joint. In this case of your model we can’t have your elbows and knees bending in all three directions.
- – Select the lElbow joint.
- Note: Which axis should be allowed to bend?
- – In the case of your penguin’s elbow it should rotate on the Y-axis.
- ( Note:The Rotate Tool must be in Local Mode.)
- – Open the Attribute Editorand scroll down to the joint section.
- Joint Limits
- A joint limit allows you to set i min and max value for a joints to rotate. In the elbows case. we need to stop rotation when the arm is extended and when it is fully bent.
- – Select the lElbow joint.
- – Rotate the joint to bend it on the Y-axis and stop right before the geometry penetrates the upper arm.
- – ATTRIBUTE EDITOR || Limit Information (tab)
- Remainder of Skeleton Limits
- – Set the freedom and limitations for the rest of the skeleton.
- Save Your Work
- Books File: 10-bigzSkinning_03.ma
- myFile: 030612_10-skinning_03.ma