Bone Weight Maps

Bone Weight Maps

A Bone Weight Map defines how much influence a specific bone has on each vertex of a specific mesh. The influence is typically defined in a range from 0.0 (no influence) to 1.0 (maximum possible influence). So if a vertex shows up in a Bone Weight Map, then it will be controlled by that bone. The amount of weight defines if the vertex only slightly follows the bone (weight ~0.0) or moves as if it where glued to the bone (weight ~1.0)

Note: Bone weight Maps are defined per Mesh (as a set of vertex groups, see next chapter)

Visualizing Weight Maps

Weight maps are often visualized directly on their associated mesh by using a color code (where each weight value between 0 and 1 is mapped to a color in a color band. Blender uses by default a color band that maps a weight of 0.0 to the color blue, and a weight of 1.0 to the color red. In between weight values are mapped to the rainbow colors:

weight_color_band

Here is an example for the visualization of the Weight Map of the SL Avatar’s mHead bone:
Note: a vertex can be animated by more than one bone in parallel. So it is possible that a vertex can be referenced in more than one Bone Weight Map (thus providing the potential for very complex movements) This happens typically where 2 bones touch each other. In that case the influence is split between the 2 adjacent bones.

weight_map_head

SL Avatar Weight maps

Since a Bone Weight Map is always related to a specific bone, that means for the SL Avatar: We have to provide 26 weight maps (one Map per bone) in each mesh that we want to rig.

So a weight map is always related to one bone. And it contains one weight value for each vertex. Well, this is not 100% correct. Actually there is a rule:

The Rule of Zero weights

If a vertex is NOT mentioned in a weight map, then it is assumed to have a weight of 0.0 for the related bone. This rule helps to keep the bone weight maps reasonably small because now the map only needs to contain those vertices which are actually controlled by the bone.

The next image shows areas with different numbers of “weights per vertex” for the SL Avatar. Indeed most areas of the SL Avatar are assigned to only one bone (areas displayed in light grey), while near the joints we always find 2 bone weights per vertex (areas displayed in light green).

Thus the above rule helps to avoid unnecessary clutter in the Weight Maps.  Please note that the SL Avatar uses 2 weights per vertex at most!

 

inflence_map

Weights per vertex.
Grey:1 weight
Green:2 weights

Note: Remember that each vertex has to show up in at least one weight map, otherwise you get an error “unweighted verts in mesh” when you try to import your mesh to SL or compatible worlds.