Bone Heat Weighting

A new method to create vertex weights for bone deformation was added, next to the existing method based on envelopes. The new bone heat method often generates better results, and does not require setting a radius for bones.

It can be used when parenting a mesh to an armature by selecting "Create From Bone Heat" from the available options. After parenting or adding an armature modifier, it can also be used in the combined weight paint and pose mode, using the W key, and choosing "Apply Bone Heat to Vertex Groups".

Character deformed with automatically generated vertex weights (model by the Peach team).

Usage Notes

  • The resulting weights can be tweaked by carefully positioning the bones with respect to the mesh. For example, it can help to position the bone vertex at a joint towards the side that the joint rotates to.
  • While this method often generates better results than evenlopes, it still suffers from problems caused by linear blend skinning used for armature deformation, such as "shrinking" at joints when rotating bones by larger amounts.
  • On meshes with badly shaped faces, e.g. with edges that have zero length, this method may sometimes fail to find a solution for all bones.

Implementation

The implementation is based on section 4 of this paper:

Automatic Rigging and Animation of 3D Characters
Ilya Baran and Jovan Popovic, SIGGRAPH 2007.

Armature CrazySpace Improvement

An improved CrazySpace correction is now used for Armature modifiers that use vertex groups, and that are the first enabled modifiers in the stack. This is a a specific case, but also a common one. The correction is exact in case of simple vertex groups, and locally exact when using them with b-bones. Envelopes are still only approximately corrected.

 

Quaternion Deform Interpolation

A new option to interpolate rotations with quaternions was added. This reduces artifacts of linear blend skinning, such as shrinking on large rotations, but is also somewhat slower. It can be enabled in Armature panel as the "Quaternion" deform option for armatures, or in de Armature modifier for meshes.

The implementation is based on this paper and the code provided with it:

Skinning with Dual Quaternions
Ladislav Kavan, Steven Collins, Jiri Zara, Carol O'Sullivan.
Symposium on Interactive 3D Graphics and Games, 2007.

With shrinking artifacts using regular deform (left) and without artifacts using quaternion deform interpolation (right).