Creating a "skinned" mesh

Mesh skinning is a generic term, not Blender specific, that refers to the process of specifying per-vertex deformations of a mesh which is attached or associated with a set of bone or node objects.  A vertex can have multiple bones that affect its motion, allowing smooth bends at joint locations similar to how a person's skin moves on top of the underlying bone structure when joints bend.

The opposite of skinned mesh animation is rigid mesh animation, in which each mesh in a model is rigidly attached to a single bone or node (usually the object's own automatically generated node).  Each type of animation has its own uses and drawbacks.  Skinned meshes are useful for character animation, animals, and pretty much anything that needs to deform organically.  Rigid mesh animations are useful for machines, robots, doors, etc.  Animations in which a mesh does not need to deform in a complex way can usually be accomplished with rigid mesh animations.

Vertex Groups and Weights

Vertex groups are used to specify a relationship between a particular bone and a set of vertices in a mesh.  Weights are assigned for each group to which a vertex belongs, specifying how much the motion of the corresponding bone affects the motion of the vertex.  The names of vertex groups must match the bone names exactly, including capitalization.  Typically, vertex group names are created automatically using one of the automatic skinning methods described in the next section.

Important Notes:

  • Skinned meshes created in Blender for export to the Torque DTS format must be deformed through the use of vertex groups and weights. Bone envelope deformations and other Blender deformation methods are not currently supported.
  • For identical skinning results in Torque and Blender, it is recommended that you do not use Blender's quaternion rotation deformation option on your skinned meshes.

Creating a skinned mesh

 

Specifying the mesh deformation relationship between a mesh and an armature

There are two methods for specifying that a mesh should be skinned using vertex weights in Blender, by parenting a mesh to an armature or by using an armature modifier.  The exporter does not care which of these two methods are used and in fact doesn't even look to see if a mesh is set up to deform with the motion of a given armature in Blender.  If a mesh has vertex groups and weights, the mesh will be treated as a skinned mesh and will deform with the motion of any appropriately named nodes in the dts file.

Method 1 - Parenting a mesh to an armature

This is the simpler of the two methods.

  1. Select the mesh in object mode by right-clicking it.
    Image of a mesh selected
  2. While holding down on the shift key, select the armature by right-clicking it. 
    Image of a mesh and armature both selected in Blender's Object mode
    The mesh and the armature should both now be selected.
  3. Press ctrl-p and select "Armature" from the make parent to menu that appears. 
    Image of the Make Parent To menu in Blender with the Armature option selected
  4. A Create Vertex Groups? menu now appears offering different options for automatically creating vertex groups and weights.  Select an appropriate option from this menu. 
    Image of the Create Vertex Groups? menu with the Create From Bone Heat option selected
    Create From Bone Heat is usually a good place to start if you haven't already created any vertex weights or groups.

The mesh is now a child of the armature (the mesh has been parented to the armature), and should now deform when the armature bones move or rotate according to the assigned vertex weights for each bone.  This method creates an implicit modifier in the mesh's modifier stack called armature parent deform.

 
Image of an implicit Armature parent deform modifier in a mesh's modifier stack

Notes:

The implicit armature parent deform modifier can be converted into an ordinary armature modifier by clicking its make real button one time.  After making the implicit modifier real, the armature deformation will remain active in Blender even if the mesh is subsequently un-parented from the armature.  Converting the implicit armature parent deform modifier into an ordinary armature modifier is not necessary in most cases.

 

Method 2 - Using the armature modifier with a mesh

  1. With Blender's 3d view in object mode, select the desired mesh by right-clicking it.
    Image of a mesh selected
  2. Locate the Modifiers panel in Blender's editing buttons window (f9), and click the Add Modifier button.
    Image of the Add Modifier button on the Modifiers panel of the editing buttons (f9) highlighted in red
  3. Select Armature from the popup menu that appears.
  4. Fill in the modifier's object field Ob: with the name of the armature object that will be deforming this mesh
    Image of the Object field of an armature modifier with object name "Armature" filled in
  5. Turn off the modifier's Envelopes option.

The finished armature modifier should look like this:

Notes:

When using this method, the user is not presented with any options for automatic vertex group and weight creation.  It is therefore recommended that Method 1 (above) be used instead, as it often saves quite a bit of work creating vertex group names.

Specifying vertex weights

When parenting a mesh to an armature (Method 1 above), various options are given for automatically creating vertex weights.  These automatic weight creation options often provide a good starting point for vertex weighting that can save quite a bit of work.  Still, these functions are not perfect, so some manual adjustment of the generated weights is usually required to get good results.

Create From Envelopes

Create From Envelopes is usually a good way to start. It's not perfect, so you'll probably have to go in to weight paint mode and clean up the weights a little bit. It tends to skin parts of the arms to the chest bones, depending on the scale of the model.  Note: this option has now been replaced with the "Create From Bone Heat" option described below.

Create From Bone Heat

This is a new option introduced in Blender 2.46 to create vertex weights using a "bone heat" system.  More information on how to use the bone heat system can be found here:

http://www.blender.org/development/current-projects/changes-since-245/skinning/

By Hand in Weight Paint Mode

Instructions for painting vertex weights by hand using Blender's "Weight Paint" mode can be found here:

http://wiki.blender.org/index.php/Manual/Weight_Paint

http://wiki.blender.org/index.php/Flying_Bird_-_Skinning

http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Advanced_Tutorials/Advanced_Animation/Guided_tour/Mesh/vg

By Hand in Edit Mode


Instructions for assigning vertex weights and groups in edit mode can be found here:

Blender_3D:_Noob_to_Pro: Vertex Groups


Important Notes:

  • Capitalization on node names must match capitalization on vertex group names.
  • The exporter does not support bone envelope deformations
  • Multiple bones in different armatures that share the same name will cause problems with exported animations, and will cause animation cross-talk between the identically named bones in Blender as well (which manifests after exporting).
  • Running the Mesh Cleanup script included with blender prior to export may result in better in-game performance for skinned meshes and faster export times. YMMV.

See also: