What are the things that we need to look for? What are the optimal location for the joints? What is our consideration?
Here's my take on the group project we've been handling for the past few weeks!
(This Character is modeled by Xin Long, and his name is Marsh)
This post will be divided to:
1. Rigging Preparation
2. Joint Placement
3. Interactive Skin Binding
4. Facial Blend Shapes and Facial Rigging
5. Connecting to the Facial Controllers with Expressions
1. Rigging Preparation
1.1. Since this whole mesh is completely a single mesh, we can optimize the poly count for facial blend shapes by readjusting our Vertex Number. To do this, First detach the head from the body. Select the edge that contains the head, and Edit Mesh -> Detach Component
1.2. The next step would be to Delete History by Edit -> Delete by Type -> Delete History
1.3. Select the head, then select the body (the order is important; select the head first because we want the vertex numbers to follow the head), and Combine back the mesh using Mesh -> Combine
1.4. Don't forget to merge the vertices together to make sure the object is one whole object again.
To do this easily, select the two edge loops faces that is connected to the detached edge on Step 1.1.
Rename this mesh to Charactername_GEO. Since my character's name is Marsh, this mesh is Marsh_GEO.
And we are done with preparing this mesh for Rigging and Blend Shape.
2. Joint Placement
Even though joint placement seems like quite a simple thing in rigging, the basics are the most important to take note of. A wrong positioning of the joint can cause you countless unnecessary corrective blendShapes and inaccurate deformations.
The fatter and softer the object is, the harder it is to place the joints and paint weight accurately.
Rounder, cylindrical objects are slightly easier to paint weight than squarish or jagged ones.
*Note that the joints of the spikes are not important as they are not helping as much with the rigging.
The steps to joint placement:
2.1. Placing the Locators
Place the locators on main positions:
Root
Pelvis
Head
Neck
Chin
*Choose Right or Left:
Thigh
Foot (Ankle)
Shoulder
Wrist
This is a step many people skipped because it seems like an unnecessary step, but I prefer to put locators so I can manage the positions well before I even place down the joints. Once I place the joints down, there's no need to re-Orient the joints.
It is best to put the joints right on the middle of the 'meat' vertices that moves with it.
Examples (Shoulder and Wrist):
There are more things to consider in the anatomical point of view, but they are holding very subtle details. (like how the elbow actually can't bend backwards so you can place the joint slightly nearer to the elbow tip, how the thumb actually has an extra joint inside the palm, or how the spines and neck joints are placed slightly to the back rather than in the middle of the body or the neck vertices)
Note that hard objects (Like fingernails, shells, carapace, teeth, spikes) are supposedly not the same geometry as the body. You can't skin a hard object easily together with the soft object it is attached to, (especially if the soft area is influenced by 3 or more joints) because your influences will break the hardness of the hard object, or rip the soft object apart, or dislocate the hard object from the soft object.
2.2. Getting Spine, Elbow, and Knee joint positions with locators.
Spine
If the character stands upright, Spine joints will be quite straightforward to place. (It can be slightly curved to follow the anatomy.) The number of joints depend on how detailed you want the deformation to be. (See how dense the body mesh is) Basically more joints will help you get more curvature for the mesh, but too many spine joints for a low-density mesh will be kind of pointless.
There are about 20 edge loops on the body-neck mesh, so I gave about 7 spine-neck joints.
The spine is located slightly to the back from the middle of the body vertices because the body is more likely to scrunch forward (bend forward). The mesh on the back will not scrunch as much, so the joints can be placed nearer to the back.
Joints should be placed closer to the side that doesn't bend a lot, but avoid placing the joint too near to the vertices as it will make the deformation very stiff on this side and inaccurate on the scrunching side. (This applies to elbows, knees, and fingers as well)
Elbow and Knees
Place the Elbow joint slightly closer to the outer elbow. Place the Knee joint slightly closer to the knee cap. (For the deformation reasons stated before.)
Because we are preparing for IKFK Arm and IK leg, we will need another locator for a pole vector we need to make sure that the Elbow Pole Vector is on the same plane with Elbow, Shoulder, and Wrist joints, and the Knee Pole Vector with the Knee, Thigh, and Foot joints.
How to get a Pole Vector accurately placed?
Create a locator, name it ElbowPV_Loc, this will be the Pole Vector Locator. Without maintain offset, Point Constraint it between Shoulder and Wrist Locators, Aim Constraint it to the Wrist Locator.
Delete the Constraints, move it in only with X axis and try to get closer to the elbow joint.
Aim Constraint the Pole Vector Locator to the Elbow Locator, Delete the constraint, and move it in X axis to behind the Elbow Locator.
This also works the same for the Knees.
Arm Twist
To get an arm twist joint location, select the Elbow locator, duplicate it and Aim Constraint it to the Wrist joint. Delete the Aim Constraint, translate it in the X axis, put it around the middle of Elbow and Wrist locators. In this case I put it right in the middle.
3. Interactive Skin Binding, Paint Weights
Interactive Skin Binding is great for cylindrical mesh objects (upper, lower arms, thighs, knees) and multiple blending joints like clavicles, shoulder, and body.
The idea is the same as Paint Weights, but the joints are using cylinders as the influence modifiers instead of us painting on the vertices.
It takes a little time to get used to, but is much more dependable and faster than normal Paint Weighting.
4. Facial Blendshapes and Facial Rigging
4.1. To do the Facial Blendshapes, first we duplicate the main mesh and translate it away. Rename this mesh CharacterName_FB_Target. Since my character's name is Marsh I'll name it Marsh_FB_Target.
4.2. Select Marsh_FB_Target, select Marsh_GEO, and Create Deformers -> Blend Shape
Rename this blendShape1 to Marsh_FB_Target_BlendShape
4.3. Select Marsh_FB_Target, delete the faces that contained the detached edge on step 1.1. Basically we're trying to just get the head mesh out from the whole body mesh.
4.4. Remember to set your input orders so the Joint Skinning works with the blendshapes. Select your mesh and click the Inputs to selected object, click All Inputs...
Your blendShape node should go below the skinCluster node so that they both could work. So middle mouse click and drag the blendShape node like shown below.
4.5. Now we can continue with the next step: Setting up Blend Shapes and Corrective Blend Shapes.
Duplicate Marsh_FB_Target and translate up left, duplicate again and translate right.
Rename the left: Marsh_FB_BS_GEO
This will be the Geometry that takes Blend Shapes
Rename the right: Marsh_FB_CBS_GEO
This will be the Geometry that takes Corrective Blend Shapes
Select both of them, select Marsh_FB_Target, and Create Deformers -> Blend Shape
5. Connecting to the Facial Controllers with Expressions
After we have created the controllers for the Blendshapes, we can start linking by adding expressions for the Blendshapes in Marsh_FB_Blend.
1. Rigging Preparation
2. Joint Placement
3. Interactive Skin Binding
4. Facial Blend Shapes and Facial Rigging
5. Connecting to the Facial Controllers with Expressions
1. Rigging Preparation
Hello, Marsh
1.1. Since this whole mesh is completely a single mesh, we can optimize the poly count for facial blend shapes by readjusting our Vertex Number. To do this, First detach the head from the body. Select the edge that contains the head, and Edit Mesh -> Detach Component
1.2. The next step would be to Delete History by Edit -> Delete by Type -> Delete History
1.3. Select the head, then select the body (the order is important; select the head first because we want the vertex numbers to follow the head), and Combine back the mesh using Mesh -> Combine
1.4. Don't forget to merge the vertices together to make sure the object is one whole object again.
To do this easily, select the two edge loops faces that is connected to the detached edge on Step 1.1.
Once you get these faces selected, hold Ctrl+Right Click and drag to To Vertices
When you got these vertices selected, go to Edit Mesh -> Merge [box]
Set the Threshold to very low so it only merges the doubled vertices that have the same positions (We're mending the edge we detached on Step 1.1.)
1.5. Delete History
And we are done with preparing this mesh for Rigging and Blend Shape.
2. Joint Placement
Even though joint placement seems like quite a simple thing in rigging, the basics are the most important to take note of. A wrong positioning of the joint can cause you countless unnecessary corrective blendShapes and inaccurate deformations.
The fatter and softer the object is, the harder it is to place the joints and paint weight accurately.
Rounder, cylindrical objects are slightly easier to paint weight than squarish or jagged ones.
*Note that the joints of the spikes are not important as they are not helping as much with the rigging.
The steps to joint placement:
2.1. Placing the Locators
Place the locators on main positions:
Root
Pelvis
Head
Neck
Chin
*Choose Right or Left:
Thigh
Foot (Ankle)
Shoulder
Wrist
This is a step many people skipped because it seems like an unnecessary step, but I prefer to put locators so I can manage the positions well before I even place down the joints. Once I place the joints down, there's no need to re-Orient the joints.
It is best to put the joints right on the middle of the 'meat' vertices that moves with it.
Examples (Shoulder and Wrist):
Front View
Side View
Top View
There are more things to consider in the anatomical point of view, but they are holding very subtle details. (like how the elbow actually can't bend backwards so you can place the joint slightly nearer to the elbow tip, how the thumb actually has an extra joint inside the palm, or how the spines and neck joints are placed slightly to the back rather than in the middle of the body or the neck vertices)
Note that hard objects (Like fingernails, shells, carapace, teeth, spikes) are supposedly not the same geometry as the body. You can't skin a hard object easily together with the soft object it is attached to, (especially if the soft area is influenced by 3 or more joints) because your influences will break the hardness of the hard object, or rip the soft object apart, or dislocate the hard object from the soft object.
2.2. Getting Spine, Elbow, and Knee joint positions with locators.
Spine
If the character stands upright, Spine joints will be quite straightforward to place. (It can be slightly curved to follow the anatomy.) The number of joints depend on how detailed you want the deformation to be. (See how dense the body mesh is) Basically more joints will help you get more curvature for the mesh, but too many spine joints for a low-density mesh will be kind of pointless.
There are about 20 edge loops on the body-neck mesh, so I gave about 7 spine-neck joints.
The spine is located slightly to the back from the middle of the body vertices because the body is more likely to scrunch forward (bend forward). The mesh on the back will not scrunch as much, so the joints can be placed nearer to the back.
Joints should be placed closer to the side that doesn't bend a lot, but avoid placing the joint too near to the vertices as it will make the deformation very stiff on this side and inaccurate on the scrunching side. (This applies to elbows, knees, and fingers as well)
Elbow and Knees
Place the Elbow joint slightly closer to the outer elbow. Place the Knee joint slightly closer to the knee cap. (For the deformation reasons stated before.)
Because we are preparing for IKFK Arm and IK leg, we will need another locator for a pole vector we need to make sure that the Elbow Pole Vector is on the same plane with Elbow, Shoulder, and Wrist joints, and the Knee Pole Vector with the Knee, Thigh, and Foot joints.
How to get a Pole Vector accurately placed?
Create a locator, name it ElbowPV_Loc, this will be the Pole Vector Locator. Without maintain offset, Point Constraint it between Shoulder and Wrist Locators, Aim Constraint it to the Wrist Locator.
Delete the Constraints, move it in only with X axis and try to get closer to the elbow joint.
Aim Constraint the Pole Vector Locator to the Elbow Locator, Delete the constraint, and move it in X axis to behind the Elbow Locator.
This also works the same for the Knees.
Arm Twist
To get an arm twist joint location, select the Elbow locator, duplicate it and Aim Constraint it to the Wrist joint. Delete the Aim Constraint, translate it in the X axis, put it around the middle of Elbow and Wrist locators. In this case I put it right in the middle.
3. Interactive Skin Binding, Paint Weights
Interactive Skin Binding is great for cylindrical mesh objects (upper, lower arms, thighs, knees) and multiple blending joints like clavicles, shoulder, and body.
The idea is the same as Paint Weights, but the joints are using cylinders as the influence modifiers instead of us painting on the vertices.
It takes a little time to get used to, but is much more dependable and faster than normal Paint Weighting.
4. Facial Blendshapes and Facial Rigging
4.1. To do the Facial Blendshapes, first we duplicate the main mesh and translate it away. Rename this mesh CharacterName_FB_Target. Since my character's name is Marsh I'll name it Marsh_FB_Target.
4.2. Select Marsh_FB_Target, select Marsh_GEO, and Create Deformers -> Blend Shape
Rename this blendShape1 to Marsh_FB_Target_BlendShape
4.3. Select Marsh_FB_Target, delete the faces that contained the detached edge on step 1.1. Basically we're trying to just get the head mesh out from the whole body mesh.
Select the faces of the body mesh and delete them.
This way, we can save a lot of poly count for the blendshapes.
4.4. Remember to set your input orders so the Joint Skinning works with the blendshapes. Select your mesh and click the Inputs to selected object, click All Inputs...
Your blendShape node should go below the skinCluster node so that they both could work. So middle mouse click and drag the blendShape node like shown below.
This is how the nodes should be read.
4.5. Now we can continue with the next step: Setting up Blend Shapes and Corrective Blend Shapes.
Duplicate Marsh_FB_Target and translate up left, duplicate again and translate right.
Rename the left: Marsh_FB_BS_GEO
This will be the Geometry that takes Blend Shapes
Rename the right: Marsh_FB_CBS_GEO
This will be the Geometry that takes Corrective Blend Shapes
Select both of them, select Marsh_FB_Target, and Create Deformers -> Blend Shape
Rename the blendShape to Marsh_FB_Blend
4.6. The next steps are to Create the Blend Shapes
To create Blend Shapes, we can duplicate the default head and start sculpting it as a facial movement, for example: Smile, Frown, InnerBrowDown
4.7. Connecting the Blend Shapes to Marsh_FB_BS_GEO
When we are done with all the blendshapes, select every facial movements, and select the Marsh_FB_BS_GEO. and Create Deformers -> Blend Shape
This will connect all the facial movements mesh to the Blend Shapes head, and it will link to the base Mesh. This way we can separate the Skin Weight and the Blend Shapes inputs to make the rig more systematic.
5. Connecting to the Facial Controllers with Expressions
After we have created the controllers for the Blendshapes, we can start linking by adding expressions for the Blendshapes in Marsh_FB_Blend.

























