In this portion of the tutorial you learn to improve the skinning by adjusting the Weight setting for vertices with respect
to rig bones, thus determining how the rig animation affects the character mesh. You start with the lower half of the character,
beginning with the feet.
Set up the lesson:
Start skinning the character:
NoteMuch of the information in this procedure and the following one provides background information on how Skin works. We recommend
you read over it now, but don’t worry if it’s not fully comprehensible. Continue working through the tutorial, following the
steps and reading the explanations, and after you’ve gained some hands-on experience with adjusting Skin, return here and
read these explanatory sections again. They’ll probably make a lot more sense the second time around.
- Scrub the time slider or play the animation and check for problem areas. For example, around frame 70 the knees become narrower, and thus look unnatural.
Even more blatant is the distortion of the shoulder around frame 210.
ImportantLoss of volume, such as the narrowing of the knees when bent, is the main thing to correct for when adjusting character skinning.
A potential second issue is the interpenetration of the mesh around bent body joints, but that tends to be less noticeable
in the final animation, and can be accounted for to an extent by attributing it to folds in the character’s clothing. This
tutorial focuses on correcting for volume issues.
- Return to frame 0.
- Make sure (Select Object) is active . Select the Emma object and go to the Modify panel. On the Parameters rollout, click Edit Envelopes.
The character mesh turns gray except for a color gradient around the pelvis region. The gradient shows the weighting of the skin vertices assigned to the pelvis. By default, EmmaRigPelvis is the first entry in the Bones list on the Parameters rollout, so its values are the first to be displayed when you turn
on Edit Envelopes.
The term “weighting” will be explained shortly.
TipThe Skin modifier has quite a few parameters spread out among several rollouts. In some cases you might want to see more settings
than can fit comfortably in a single column. To expand the command panel, position the mouse cursor over the left edge so
it becomes a horizontal, two-headed arrow, and drag leftward until you see two columns.
- Try clicking some of the other entries in the list to see the weighting of vertices in other parts of the skin mesh. Alternatively,
click the bone representations in the viewport; each is displayed as a straight line with a (non-mesh) vertex at either end.
As you do so, the highlighting in the list on the Parameters rollout switches to that bone.
ImportantA bit of background info on how the Skin modifier works is in order here. When you add bones to Skin, the modifier looks at
the mesh to which it’s applied and automatically assigns each vertex to one or more bones based on proximity. It also calculates
a Weight value for each bone assigned to a vertex to specify the degree to which moving the bone affects the vertex; again,
this is based on proximity. If a vertex is close to one bone but relatively distant from any others, it’s assigned to that
bone with a weight value of 1.0, which means 100%. In other words, the vertex responds to movement of that bone only, and
moves in exactly the same direction and distance as the bone.
If, however, a vertex is, say, equidistant from two bones but far from any others, Skin assigns both bones to the vertex and
gives each a Weight value of 0.5, or 50%, for that vertex. In such a case, the motion of both bones contributes equally to
that of the vertex. If only one of the bones moves, the vertex moves half that distance. This is how the Skin modifier accommodates
for the motion of a character mesh around bending joints such as knees and shoulders.
The Weight values for a highlighted bone appear by default on the mesh as a gradient, with red representing higher weights,
decreasing to orange, yellow, green, and then blue for the lowest values. Vertices use the same color scheme, and since you’ll
be adjusting weights at the vertex level, it’s usually best to have the viewport set to Smooth + Highlights + Edged Faces
display mode (toggle with F4) or Wireframe mode (toggle with F3).
Incidentally, the Skin modifier determines which vertices are affected by a bone or bones by creating an “envelope” around
each bone, which is a capsule-shaped 3D volume that you can edit interactively to adjust the vertex weighting at a high level.
However, you have better control by adjusting Weight values for individual vertices and groups of vertices. This is a more-common
practice in professional environments such as game-development studios, so it’s the one this tutorial focuses on. This method
is a bit more painstaking, but can produce optimal results reasonably quickly.
Make no mistake, however: Skinning a character is a detail-oriented task, and requires lots of experimentation and trial-and-error,
so it benefits from a liberal supply of patience. This aim of this tutorial is to demonstrate the overall process, but it’s
impractical to describe every step in detail in such a context. In other words, we can’t show you exactly what to do every
step of the way, but instead provide guidance and examples; the rest is up to you.
- Save your work under a different filename, such as MyEmma3.max.
We won’t keep reminding you, but it’s important to remember when going through a complex method such as skinning a character
to save your work incrementally as you go so you can easily return to a previous version if things start to go wrong.
Examine some Skin modifier options:
You edit a vertex’s weight by changing its Weight value with respect to a particular bone. In order to do that, the vertex
must be assigned to two or more bones, because Weight is a relative value. For a given vertex, if its Weight value with respect
to bone A is, for example, 0.6, and its Weight value with respect to bone B is 0.4, then bone A’s motion has half again as
much influence over the vertex’s motion than does that of bone B. The total of Weight values for each vertex must always equal
1.0. So, when skinning a character using this method, you need to know which bone or bones a vertex is assigned to and the
Weight values for all vertex-bone assignments.
NoteBest practice when skinning a character, which this tutorial follows, is to focus on one body part at a time. When you're
done with that part, mirror the changes to the other side, as appropriate. To be more specific, you select a bone, make sure
most of the surrounding vertices are set to a Weight value of 1.0, and then adjust the weights in the bending areas. You can
think of this as “blocking out” the weighting, much as you block out an animation by working on isolated segments of the character’s
movement before integrating the overall motion.
For example, in this tutorial you’ll start with the left leg, working upward from the foot bone, and then mirror (copy and
flip) the vertices’ settings to their counterparts on the right leg. You can always go back later and tweak the weights anywhere,
but you work most efficiently by concentrating on a specific area at any given time.
- Even though you won’t be editing envelopes directly in this tutorial, it might help you better understand how Skin works by
taking a quick look at this feature of the modifier. By default the envelopes are set not to display in this scene, but you
can enable them by going to the Display rollout and turning off Show No Envelopes.
As a very brief explanation, each envelope comprises two concentric capsule-shaped volumes; vertices within the inner volume
are fully affected by that bone, and then the weighting falls off increasingly for vertices that lie outside the inner volume
and inside the outer volume. Select some of the different bones to see their envelopes, and then turn Show No Envelopes back
on again.
Using envelopes is a fairly crude, high-level method of setting vertex weights in Skin, and is suitable mainly for saving
time when skinning fairly simple bone-and-mesh setups.
- Turn Show No Envelopes back on, as you won’t be using envelopes in this tutorial.
- While you have the Display rollout open, take a look at the other options here.
Show Colored Faces is on; you’ve already seen its effects.
- If you turn on Color All Weights, you can see the vertex weighting throughout the character mesh, not just for the current
bone.
That’s not what we want for this tutorial, so turn it back off.
- If you turn off Draw On Top Envelopes, you can no longer see the bone representations superimposed on the mesh, so keep that one on.
- Try the other options if you like, but when you’re done be sure to restore them to their previous settings, as shown here:
Begin adjusting vertex weights:
- Back on the Parameters rollout, turn on Select Vertices.
This setting is off by default, but it needs to be on for adjusting vertex weights, so always turn it on before starting a
skinning session using the method described in this tutorial.
The “stretching” animation begins with the feet and moves up the body, so you’ll follow the same progression in adjusting
the skinning.
- Zoom in on the calves and feet, and make sure the display is set to Smooth + Highlights + Edged Faces, as shown in the following
illustration.
- Scrub back and forth through the first 50 frames or so of the animation. Notice how the bending of the feet also affects the
bottom portion of the calves. This is not realistic; it happens because the default envelope assigned by Skin to this bone
is a bit too large.
- Select each of the foot bones in turn: EmmaRigLCalf, EmmaRigLAnkle, and EmmaRigLToe.
End with EmmaRigLAnkle selected. The shading (orange, yellow, and blue) indicates that most of the vertices’ weights for this bone are less than
0.5, which is undesirable.
- On the main toolbar, from the Selection Region flyout, choose the Lasso Selection Region tool.
This is the best tool for region-selecting a contiguous group of vertices with an arbitrary outline.
- Drag a region around the foot and ankle vertices, as shown:
Because the Backface Cull Vertices switch is off, this also selects most of the vertices facing away from you. Depending on
the view angle and where you drag the region, a few vertices might not be selected. To make sure all foot and ankle vertices
are selected, orbit around the model to double-check. Add any vertices you missed to the selection, and remove any vertices that shouldn’t
be selected.
To undo the orbit, press Shift+Z.
TipTo add vertices to a selection, Ctrl+select them, and to remove vertices from a selection, Alt+select them.
- On the Parameters rollout, in the Weight Properties group, set Abs. Effect to 1.0.
Absolute Effect is the absolute weight setting.
The entire foot turns red, as a visual result of the weight setting change. This way you know that no other bones can influence
these vertices.
You can confirm that the toe animation no longer affects the foot mesh by scrubbing the animation. You’ll fix that next.
- Select the toe bone (EmmaRigLToe).
The foot is gray, indicating no weighting for this bone, but some blue coloring is evident in the shin, indicating influence
that the toe should not have over this area.
- Drag a region around the blue vertices (it doesn’t hurt to select too large an area), and then set Abs. Effect to 0.0.
This removes any remaining leg vertices from the influence of the toe bone.
Next you’re restore the vertices at the front of the foot to the influence of the toe bone.
- Drag a region around the front of the foot, just above the third lace (raised portion at the top of the shoe). Again, orbit around the model to make sure the selection is correct. To undo the orbit after the selection is correct, press Shift+Z.
TipA good way to check quickly whether your selection is correct is to use
(Zoom Extents Selected). For example, if you inadvertently selected vertices on the other side of the character, the resulting
view will be wider than expected.
- Set Abs. Effect to 1.0.
The selected vertices and surrounding mesh turn red. Now, when you scrub the animation, the break between the weighted and
unweighted vertices for the toe bone is readily apparent, as compared to the right foot. At the greatest amount of bend, around
frame 10, the fourth lace (unweighted) sits directly below the third lace. If you select the ankle bone, you can see that
there’s no transition between the weighting at the front and the rear of the foot.
The way to resolve this is to create a transition mid-foot by weighting those vertices between the two bones.
- Return to frame 0 and then select the vertices for the two uppermost laces.
- Drag upward slowly on the Abs. Effect spinner so you can see the color change as the vertex weighting increases. Stop when
you see a yellow-orange color, around 0.4.
When you scrub now, the transition looks better. However, the uppermost lace is too low.
- Select the vertices of the uppermost lace, select the ankle bone, EmmaRigLAnkle, and drag the Abs. Effect spinner gradually upward.
As you do, you see the lace move upward due to the increasing influence from the ankle bone. Stop around 0.6 or 0.7.
TipFor a useful guide while adjusting clothing vertices, keep in mind the material of the clothing. For example, the sneakers
might be made of canvas, which is a fairly stiff fabric, so creasing that might not occur with a softer fabric might be permissible
for canvas. Also, with medium-resolution models like this one, there might not be enough vertices for a fully natural look,
so a certain amount of compromise is necessary.
- Continue adjusting the lace vertices around the bend until you get a reasonable-looking effect.
NoteAdjusting the laces is a good example of the back-and-forth type of adjustments required for good skinning. First you make
the gross settings for the front and rear portions of the foot, then you go in and select one lace at a time and adjust it
so it looks good with the rest of the laces in the bend.
- Next, looking at the bottom of the foot, you might notice a fairly wide gap between the set of vertices at the bend and those
immediately behind them. Again, select the offending vertices and raise the Abs. Effect spinner value gradually until the
shoe looks more realistic.
TipIn general, when adjusting vertex weights for a skinned character, try to keep polygon sizes consistent; this allows for minimal
distortion when the character is animated.
- Advance to animation to frame 20, where the foot is bent the furthest in the opposite direction.
There’s a fairly sharp bend at the bottom of the foot, but there’s not much you can do about it because of the relatively
low resolution of the character mesh. Even if the budget allowed for more polygons in the mesh, they would probably go into
the face, which has higher priority, so this type of distortion is usually tolerated in commercial applications such as games.
Weight the rest of the leg:
- Zoom out and select the ankle bone, EmmaRigLAnkle. Check the animation that it affects, approximately from frame 30 to 50.
It looks all right, but the ankle influence goes fairly far up the calf, which is incorrect.
- Select all of the affected calf vertices. It doesn’t matter if you go too high, but be sure not to select any of the ankle
vertices.
- Select the calf bone, EmmaRigLCalf, and set Abs. Effect to 1.0.
This removes the calf vertices from the ankle bone’s influence.
- Select the loop of vertices at the top of the ankle and set them to 1.0 for the calf bone as well.
TipThis is a good place to take advantage of the Skin modifier’s loop-selection tool. Select two adjacent vertices on the loop
of edges around the ankle and then, near the top of the Parameters rollout, click the Loop button. This automatically selects
all the vertices in the same edge loop as the two vertices you selected.
Lower than this is where the ankle bends, so you need to weight the vertices between the ankle and calf bones.
- Select the next loop down and set the calf weight to 0.5.
This loop is now weighted half for the calf bone and half for the ankle bone.
- Next, zoom out, if necessary, so you can see both legs.
Some vertices on the right leg are influenced by the left calf bone, which you can easily correct for.
- Drag a region around the affected vertices in the right leg. Toggle wireframe display mode and orbit around the model to make
sure you get all of them.
- Set Abs. Effect for the selected vertices to 0.0.
Similarly, the calf has a bit too much influence over the thigh vertices of the left leg, which is part of the cause of the
loss of volume in the knee when it bends. You’ll deal with this in a bit, but first take a look at the thigh.
- Select the thigh bone: EmmaRigLThigh.
Again, the default volume of influence is too large.
- Go to frame 0 and select all the vertices on the right side of the mesh (your left side) and set their weights to 0.0.
Great precision isn’t necessary here; the main thing is to remove the right-side vertices from the influence of the left-side
bone.
Start using the Weight Tool:
In this section you’ll continue to block out the leg weighting, using the convenient, powerful Weight Tool dialog.
Given a selection of vertices with the same bone and weight assignments, Weight Tool lists all bones that affect the vertices
along with the corresponding Weight values. It also lets you edit the Weight value for the current vertex selection and bone
assignment, setting either an absolute Weight value or adjusting the weights of the vertices relative to their current values. In addition, Weight Tool provides controls for copying and pasting Weight values and controls such
as Ring and Loop for modifying the vertex selection.
NoteIf you select multiple vertices with different Weight values and bone assignments, the Weight Tool dialog shows the settings
for the vertex with the lowest sub-object ID. To see settings for more than one vertex at a time, use the spreadsheet-like
Weight Table.
- Near the bottom of the Parameters rollout, click (Weight Tool).
The Weight Tool dialog opens. Drag it to a convenient, out-of-the-way location. You can keep it open as you work.
- Select different vertices while keeping on eye on the list at the bottom of the Weight Tool dialog.
The list shows the selected vertex’s bone assignments and the Weight value for each assignment. Note that the Weight values
always add up to 1.0. If, for example, you change the Weight value for a particular bone for a vertex that’s influenced by
three different bones, 3ds Max changes the values for the other two bones in the opposite direction, in proportion to their current values.
Note also that the Set Weight value doesn’t change; this is a write-only field.
- Select all the vertices in the lower half of the knee area, down to the bottom of the Capri pants.
- Make sure the calf bone is highlighted in the Weight Tool list, and then click the 1 button on the Weight Tool dialog.
This sets the Weight value for all selected vertices to 1.0 with respect to the calf bone. Note that the weights for the other
two bones in the list are now 0. You can get rid of 0 weights in the entire mesh by clicking Advanced Parameters rollout Remove Zero Weights, but thats not necessary at the moment.
- Select the thigh vertices above the knee, select the thigh bone, and click the 1 button on the Weight Tools dialog.
- Just to clean things up, select the calf bone in the right leg and any vertices in the left leg that it influences and set
their weights to 0. Do the same thing for the right thigh bone.
NoteAfter you select the right-leg calf or thigh bone and then region-select the affected left-leg vertices, it’s possible that
the bone doesn’t show up in the Weight Tools dialog list because the selected vertex with the lowest ID isn’t influenced by
that bone, but that’s okay. Just go ahead and click the 0 button on the dialog; 3ds Max still recognizes that you’re setting the weights for the selected bone.
This goes toward the general philosophy that you work more efficiently by keeping things as clean as possible as you go, rather
than going back and trying to optimize them later. It’s analogous to the modeling practices of paying attention to edge flow
and making as many polygons as possible quadrilateral, avoiding triangles or n-gons.
Fix the knee:
- Go to frame 40 and adjust the view so you can see both knees.
This is a good before-and-after view. The right knee is “before,” showing marked volume distortion, while the left knee, after
blocking out the thigh and calf weights, looks more realistic.
However, if you look closely at the back of the left knee when the leg is bent, it’s apparent that a good deal of fine-tuning
remains to be done. This requires a lot of tweaking, experimentation, and examining the results, and, again, it’s not practical
to give every detail of the process here. We will, however, give you an example to start you off.
- Start by selecting the calf bone, if necessary, and then select the uppermost loops of vertices around the top of the knee.
These aren’t technically loops (they merge and split off), so select them manually, combining region selection and clicking,
rather than with the Loop tool described preceding.
- Go to frame 40, where the leg is bent the most at the knee, and reduce the weighting gradually until the vertices are better
positioned.
TipOne good way to do this is to repeatedly click the – button all the way to the right of the Set Weight button. Each click
subtracts 0.05 from the current Weight value of each selected vertex. Likewise, each click of the + button next to it adds
0.05 to the weights.
If you’d like to take a look at the completed, fully skinned model, open the included file configuring_skin_finished.max. In that file you can example the weighting for all vertices that we came up with through extended trial and error.
In general, what we ended up doing was weighting the vertices in the lower half of the knee mainly to the calf, and, starting
halfway up the knee, giving gradually more weight to the thigh. Some manual tweaking was required to accommodate for the “wrinkle”
vertices at the back of the knee.
- As you’re going through and adjusting vertex weights, you’ll probably encounter bones for which the selected vertex has a
0 weight. To keep things simple, if you’re not planning to influence that vertex with the bone, make a practice of clicking
the Remove Zero Weights button on the Advanced Parameters rollout. This affects the entire mesh, and helps keep things as
simple as possible.
Weight the pelvis:
After you finish skinning the left leg, it’s time to move up to the pelvis.
- Select the pelvis bone: EmmaRigPelvis.
Following the practice of blocking out the weighting, the fact that no red is visible is not a good sign.
- For the reason why, select the thigh bone and note that it has an inordinate amount of influence over the pelvic vertices.
- With the thigh bone still selected, select all vertices between the bottom of the pelvis (including the top of the side pouch
on the pants) to the top of the belt, inclusive.
- Select the pelvis bone and set the Weight value to 1.0.
- Scrub the animation and stop around frame 67.
The schism between the weighting of the pelvis and thigh is glaringly obvious. Fortunately, fixing this is relatively easy.
- Go to frame 0 and select the vertices at the crease between the leg and pelvis, at the front of the body only. Make sure not
to select any vertices on the rear end.
- Go back to frame 67 or so and then reduce the weighting so the vertices move up and out of the deep crevasse they were in,
giving a more natural look to the bend.
Complete the leg and mirror the weights:
In this section you’ll correct the weighting on the vertices in the character’s rear end, and then quickly fix the weighting
on the right side by mirroring the vertex weights from the left side.
The first thing to fix is some unwanted influence of the first spine bone on some pelvic vertices.
- Select the EmmaRigSpine1 bone and note that several vertices in the front of the pelvis area, on the left side, are highlighted.
The bone also influences vertices on the right side, but because you’ll mirror all the vertex weights from the left side to
the right, that’s not a concern.
- Select the highlighted vertices on the left side (don’t worry about selecting too many) and then click the 0 button on the
Weight Tool dialog.
- Next, select the nine vertices in the lower crease, near the bottom of the rear end, as shown in the following illustration.
TipYou can select the vertices by clicking each in turn, holding down Ctrl after the first one. Another, slightly easier way, is to turn on Backface Cull Vertices in the Select group on the Parameters
rollout, and then region-select the vertices. Make sure the Weight Tool dialog shows “9 Vertices Selected” and be sure to
turn off Backface Cull Vertices after making the selection.
Currently these vertices are weighted only for the pelvis bone, so you need to add weighting for the thigh bone.
- Select the thigh bone, set the vertex weights to 0.5, and adjust from there. For example, the lowest three vertices on this
crease stick out too much, so you need to increase the thigh-bone weighting for them compared to the other six vertices.
- Continue working on the vertices in the rear end, adjusting them so you get a realistic, rounded effect, like this:
As before, when in doubt, refer to the finished scene, configuring_skin_finished.max, for specific guidance.
- Also adjust the vertices in front, at the crease between the thigh and pelvis. And while you’re at it, set weights to 0 for
any torso vertices influenced by the thigh bone.
- When you’ve finished weighting the pelvis vertices, go to the Mirror Parameters and turn on Mirror Mode.
The bones and vertices now use color coding: blue for the left side and green for the right. Centered items, which cannot
be mirrored, are colored red.
A few notes about the Mirror Mode settings:
- The axis normal of the plane about which the vertex weights are mirrored. The default setting, which you’ll use for this tutorial,
is X, which means the YZ plane. The plane appears as an orange wireframe in the viewport.
- The distance along the X axis to move the mirror plane. The default value, 0, centers the plane to the character, so for this
tutorial it’s the desired setting.
- The amount of leeway for the detection of symmetry. If this is too high, mirrored weights might go to the wrong vertices,
but if it’s too low, the Skin modifier won’t be able to detect symmetrical bones and vertices. You’ll experiment with this
setting in the next step.
- Right-click the Mirror Thresh. spinner to set it to 0, so that all the bones turn red, and then increase it until all the
leg bones and arm bones turn blue and green.
The default value is 0’0.5”, but in our scene we were able to reduce this to 0’0.19”, which potentially allows for greater
accuracy in mirroring weights. Your results might vary slightly.
To do the actual mirroring, you use the five buttons under the Mirror Mode button. From left to right, they mirror selected
vertices only, all bones from either side to the other, and all vertices from either side to the other. For this tutorial,
you’ll use Paste Blue To Green Verts, the button outlined in red in the following illustration:
- On the Mirror Parameters rollout, click (Paste Blue To Green Verts).
All of the weighting you’ve done for each vertex on the left side of the character has now been copied to the vertices’ counterparts
on the right side, instantly correcting the skinning throughout that side. The left-side vertices, previously blue, are now
yellow to indicate that they’ve been mirrored:
- Exit Mirror Mode by clicking the Mirror Mode button, and then scrub the animation through the first 100 or so frames.
The animation looks mostly good on both sides of the character’s lower half. However, there’s a slight problem around frame
80, when the leg bends back, where the crease between the leg and buttock is a bit too deep.
- Select the crease vertices and increase their weights gradually with respect to the thigh bone until the folding looks better.
TipA tool that can potentially help in a situation like this is Blend, which evens out, or averages, the weighting of selected
vertices. First save your work as a backup, then select the vertices in and around the area of the crease and then, at a frame
where the crease is in effect, click Blend on the Weight Tool dialog a few times. If it looks better, great. If not, load
the saved file and weight the vertices manually.
When you’re satisfied with the results, mirror the vertices to the other side.
Another important consideration is the center line of vertices around the pelvis, which are currently weighted 100% for the
pelvis. In reality, these areas would be pulled around by the movement of the legs, so they need to be weighted accordingly.
- Select the three center vertices at the bottom-front of the pelvis, select the right thigh bone, and click the 1 button on
the Weight Tool dialog. Then select the left thigh bone and click the .5 button. Finally select the pelvis and gradually increase
its weight for the vertices, checking the animation as you go, until it looks right.
That way you give equal weight to both thigh bones, maintaining that balance as you then bring the pelvis into the equation.
- Similarly, weight the vertices on the character’s left side of those center vertices slightly toward the left thigh bone,
and the ones next to those a little bit further toward the left bone. When everything looks good, mirror the vertices to the
right side.
Save your work:
- Click (application button), choose Save As, and save the scene as MyEmma4.max.