The SL Avatar Mesh

Let us first take a more detailed look on the SL Avatar. Actually the SL Avatar consists of a mesh made out of about 7500 triangles. When it comes to posing and animation all of these triangles have to be moved around somehow. However, it would not be very practical if we had to define the locations of all Mesh faces one by one for every possible pose. And luckily there is a better way to do this.

Bones

The SL Avatar has a small set of 26 control elements (bones) which can be moved separately. And we will see in a moment that each bone controls the deformation (bending and stretching) of a specific area of the mesh. Thus these bones are also named Deform Bones. But one step at a time…

Bone Relations

Bones are not just floating around as a pile of unrelated elements. Bones are attached to each other in a meaningful way. So a lower arm bone is attached to an upper arm bone, feet are attached to legs, toes to feet, etc.

So when you move one bone then all its attached neighbors move along with it so that the “skeletal” integrity of the bone system keeps preserved when you animate the bones.

Remember that the primary goal is to move, stretch and bend the character’s mesh such that it appears to act just like a person (or animal/creature) moving in real life.

The trick is that in fact all 7500 faces (or more precisely the movement of the vertices!) of the Avatar mesh are only controlled by the bone movements. So, where is the missing link ?

skeleton_posed

How do the vertices know how to move ?

There must be a relationship between the bones and the vertices of a mesh. More precise:

  • There must be a relationship between each vertex of the mesh and each animating bone.
  • And obviously each vertex of a mesh has to be moved by at least one bone.
  • Possibly a vertex could even be moved by more than one bone.
    Note: In practice each vertex can be moved by up to 4 bones at the same time (this is a limitation of SL and compatible worlds).

mesh_posed

And indeed, this is the missing link: The relationship between the bones and the mesh are the Bone Weight maps. Actually Blender also supports another method for animating the meshes (Bone envelopes) but we can not use  this in the context of Second Life.