Dual Quaternion Skinning

 
 
 

Dual quaternion skinning is an alternative to the standard method of calculating envelope deformations, which is known as "linear blend". The Dual Quaternion Deformation compound lets you use dual quaternion skinning, or interpolate between dual quaternion and linear blend skinning.

Note

Dual quaternion skinning has some limitations:

  • Changing bone length is not supported.

  • Twisting a chain of deformers by more than one complete revolution can give unpredictable results. However, you can spin the entire chain as many times as you want without problems.

  • The inverse of the envelope is not calculated when storing shapes in Secondary Shape Modeling mode.

Dual Quaternion versus Linear Blend

Linear blend skinning has been the standard way of calculating envelope deformations since the Jurassic era of computer animation. However, it doesn't always give desirable results. In particular, there can collapsing and loss of volume when deformers are twisted or extremely bent. Dual quaternion skinning gives a better-looking result in these cases.

Loss of volume with linear blend skinning (A) versus dual quaternion skinning (B).

On characters, a particular problem area for linear blend skinning is the shoulders, which can collapse when the arms go behind the back.

Shoulder collapsing with linear blend skinning (A) versus dual quaternion skinning (B).

However, dual quaternion skinning is not always the best solution. For example, it can create unnatural protrusions on the knees and elbows when they bend. In these areas, linear blend skinning, or an interpolation between linear blend and dual quaternion skinning, may be preferable.

Knee protrusion with linear blend skinning (A) versus dual quaternion skinning (B).

Overview of Applying Dual Quaternion Skinning

Here's a quick overview of the steps involved in using the Dual Quaternion Deformation compound.

  1. Apply a standard envelope deformation, making sure to use a group for the deformers. The envelope operator is required to define the point weights. See Envelopes [Character Animation].

  2. Mute the envelope operator so that it does not affect the mesh. See Muting Deformations [Modeling and Deformation Basics].

  3. Create an ICE tree in the animation region above the envelope operator, and add the Dual Quaternion Deformation compound. See Applying the Dual Quaternion Deformation Compound.

  4. If desired, use a weight map to control the blend between dual quaternion and linear blend skinning. See Blending Between Skinning Methods with a Weight Map.

    You can continue to modify envelope weights in the usual way, and the deformation will update automatically.

Applying the Dual Quaternion Deformation Compound

  1. Make sure that Animation Construction Mode is active (see Setting Construction Modes [Modeling and Deformation Basics]) and that the envelope operator is muted.

    Note that if you accidentally create an ICE tree in the wrong construction region, you can move it later as described in Changing the Order of Operators [Modeling and Deformation Basics].

  2. Select the envelope mesh.

  3. In the ICE tree view, choose Create ICE Tree.

  4. Add the Dual Quaternion Deformation compound from the Skinning group of the Deformation task of the preset manager to the ICE tree, and connect it to the root.

  5. Use a Get Data node to get the group that you used for the envelope deformers, and plug its Out Name output into the Dual Quaternion Deformation node's Bones Group Name input.

    If you didn't use a group for the deformers originally, you can create one now by selecting the mesh, choosing Deform Envelope Select Deformer from Envelope from the Animate toolbar, and finally clicking Group on the Edit panel.

  6. Use the Deformation Method parameter in the Dual Quaternion Deformation's property editor to toggle between Dual Quaternion Skinning and Linear Blend Skinning as desired.

    Alternatively, set Deformation Method to Use Blend Input and then use Blend Input to interpolate between the two methods. A Blend Input value of 0.0 uses linear blend skinning, a value of 1.0 uses dual quaternion skinning, and values in-between use a weighted average. You can also use a weight map as described in the next section Blending Between Skinning Methods with a Weight Map.

Blending Between Skinning Methods with a Weight Map

When you set Deformation Method to Use Blend Input, you can use a weight map to paint the areas where you want to use dual quaternion skinning or a mixture of the two methods.

  1. Apply a weight map to the enveloped mesh. For more information about this and weight maps in general, see Weight Maps [Scene Elements].

  2. Set Deformation Method to Use Blend Input.

  3. In the ICE tree, use a Get Data node to get the map's weight values: (mesh name).cls.(cluster name).(map name).Weights.

  4. Connect the Get Data node's Value output to the Dual Quaternion Deformation compound's Blend Input port.

  5. Paint the areas where you want to use Dual Quaternion Skinning.

NoteIf an object has more than one paintable property then you may need to select the desired property before painting on it, for example by choosing Explore Property Maps on the MCP.