Skinning

Relevant to Blender v2.31

Once the Armature - the 'character skeleton' - is ready it is necessary to parent the character 'skin' to it. Skinning is a technique for creating smooth mesh deformations with an armature. Essentially the skinning is the relationship between the vertices in a mesh and the bones of an armature, and how the transformations of each bone will affect the position of the mesh vertices.

When making a child of an armature, several options are presented:

Parent to Bone

In this case, a popup menu appears allowing you to choose which bone should be the parent of the child(ren) objects. This is great for robots, whose body parts are separate meshes which are not expected to bend and deform when moving.

Parent to Armature

Choosing this option will deform the child(ren) mesh(es) according to their vertex groups. If the child meshes don't have any vertex groups, they will be subject to automatic skinning. Indeed a second menu appears, asking:

  • Don't create groups - does nothing else, automatic skinning is used;

  • Name Groups - creates empty vertex groups whose names matches the bone names, but no vertices are assigned to them;

  • Create from closest bone - you want to create and populate automatically vertex groups.

Parent to Armature Object

Choosing this option will cause the child(ren) to consider the armature to be an Empty for all intents and purposes.

If you are going for character animation then most of the times you will parent your character to the Armature using the "Armature" Option. You are strongly advised to use the Name Groups option. This will provide you with the groups already created, saving the tedious operations of creating an naming them, and possibly avoiding typing errors.

The Create from closest bone feature is currently under heavy development. It will use the "Bone types" which can be defined via the menu right of the IK Tog Buttons (Figure 16.4, “EditButtons for an Armature”) for optimal result.

Currently only the Skinnable and Unskinnable options are working. The first option makes Vertex Group be created (and populated, if this is asked for) for the given bone, the second option causes that bone to be ignored in the skinning process.

Note

The current vertex assignment algorithm creates non-optimal vertex groups, hence it is highly recommended to check each group, one by one.

If a mesh does not have any vertex groups, and it is made the child of an armature, Blender will attempt to calculate deformation information on the fly. This is very slow and is not recommended. It is advisable to create and use vertex groups instead.

Weight and Dist

The Weight and Dist settings next to the IK are only used by the automatic skinning which is a deprecated feature because it requires lot of CPU, produces slow downs and worse result than other methods.

Vertex Groups

Figure 16.6. Vertex Groups

Vertex Groups

Vertex groups are necessary to define which bones deform which vertices. A vertex can be a member of several groups, in which case its deformation will be a weighted average of the deformations of the bones it is assigned to. In this way it is possible to create smooth joints.

To add a new vertex group to a mesh, you must be in Edit Mode. Create a new vertex group by clicking on the New button in the mesh's Edit Buttons Mesh Tools 1 Panel (Figure 16.6, “Vertex Groups”).

A vertex group can be subsequently deleted by clicking on the Delete button.

Change the active group by choosing one from the pull-down group menu.

Vertex groups must have the same names as the bones that will manipulate them. Both spelling and capitalization matter. This is why automatic name creation is so useful! Rename a vertex group by SHIFT-LMB on the name button and typing a new name. Note that vertex group names must be unique within a given mesh.

Vertices can be assigned to the active group by selecting them and clicking the Assign button. Depending on the setting of the Weight button, the vertices will receive more or less influence from the bone. This weighting is only important for vertices that are members of more than one bone. The weight setting is not an absolute value; rather it is a relative one. For each vertex, the system calculates the sum of the weights of all of the bones that affect the vertex. The transformations of each bone are then divided by this amount meaning that each vertex always receives exactly 100% deformation.

Assigning 0 weight to a vertex will effectively remove it from the active group.

To remove vertices from the current group select them and click the Remove button.

Pressing the Select button will add the vertices assigned to the current group to the selection set. Pressing the Deselect button will remove the vertices assigned to the current group from the selection set. This is handy to check which vertices are in which group.

Weight Painting

Weight painting is an alternate technique for assigning weights to vertices in vertex groups. The user can "paint" weights onto the model and see the results in real-time. This makes smooth joints easier to achieve.

To activate weight-painting mode, select a mesh with vertex groups and click on the weight paint icon (Figure 16.7, “Weight Paint Button.”).

Figure 16.7. Weight Paint Button.

Weight Paint Button.

The active mesh will be displayed in Weight-Colour mode. In this mode dark blue represents areas with no weight from the current group and red represent areas with full weight. Only one group can be visualized at a time. Changing the active vertex group in the Edit Buttons will change the weight painting display.

Weights are painted onto the mesh using techniques similar to those used for vertex painting, with a few exceptions. The "colour" is the weight value specified in the mesh's Edit Buttons. The opacity slider in the vertex paint Buttons is used to modulate the weight. To erase weight from vertices, set the weight to "0" and start painting.

Note

It is quite easy to change the weight since TAB will take you out of Weight Paint Mode into Edit Mode and Panels will automatically match the Context.