bullet1 2. Kinematic Approach

The kinematic approach to muscle deformation is when no underlying muscle system is used to affect the surface geometry. It is "faking" the more accurate effects of a physically based system.

bullet2 Skeleton-Subspace Deformation "Enveloping"

The most commonly used deformation algorithm has various names, such as “enveloping”, “skinning”, “skeleton subspace deformation (SSD)” or "linear blend skinning". This is the standard, and most commonly used method of deformation in off-the-shelf packages such as Softimage XSI and Maya.

There is a good description of the technique in the Siggraph paper "Building Efficient, Accurate Character Skins from Examples"

"This technique assigns a set of influencing joints and blending weights to each vertex in the character. The skin is computed by transforming each vertex by a weighted combination of the joints' local coordinate frames...While fast to evaluate and compact in memory, this method is notorious not only for its authoring difficulty, but also for its undesirable deformation artifacts. However, this method is widely used since these characters can be used with arbitrary amounts of animation data and can be posed at runtime." (p.1,2)

  • Pros
    The advantages of enveloping are that it is fast and simple to calculate which gives you real-time feedback, and it is the most widely supported method in the major 3D applications, so there is no need for a plug-in.


     
  • Cons
    The two main problems that occur when weighting a character are the "collapsing joint" effect and the "candy wrapper" wrist rotation effect.

    Another problem is that the artist cannot directly manipulate the mesh; instead, the mesh weighting must be edited. It also can be fairly time-consuming and tricky to apply the weighting.


     
    • "Collapsing Joint" Effect
      The "collapsing joint" or "rotation overlap" effect is when the geometry collapses at a joint, the geometry folds in on itself and loses volume.  This happens typically at the elbows and knees (see example below).


       
    • "Candy Wrapper" Wrist Rotation
      When the wrist joint of an enveloped character is rotated 180 degrees the forearm geometry will collapse on itself.

      However there are methods to get around this.

      The above two images are from   "Building Efficient, Accurate Character Skins from Examples"


       
  • Fixes
    There are ways of overcoming the limitations of enveloping, and  a few useful ones appear below. It is also worth mentioning that the XSI biped creation guide has several techniques like these to help your model deform well.


     
    • XSI Rigging SDK
      One solution to the "candy wrapper" forearm effect for XSI is to use the command 'makeForearmroll()'

      This command is part of the rigging SDK which you can use to write a script to build a rig. The command is also accessible through the biped guide tool.

      This is what the command does:

      "Creates roll nulls along the length of a bone. When used as deformers on an envelope they evenly distribute twist along the length of a bone giving a more natural skin deformation."

      Dividing up the rotation into multiple parts this way prevents the shearing problem.

      This can also be done for biceps and thighs.

      Here is an illustration from the XSI Online Guide.


       
    • Two-Point Constraint
      (This idea comes from "The Official Softimage | XSI Guide to Character Creation" by Aaron Sims and Michael Isner.)

      One of the advantages of XSI is the ability to envelope any object.

      In the example below, I created a two-point constraint using a cube and two nulls and positioned them near the elbow joint. I then enveloped the cube along with the bones to the mesh.

      The cube always stays between the two nulls: when the forearm is moved, the cube stays over the elbow joint, which helps it deform better. Care must be taken not to cross the two nulls, or else the envelope will twist inside out.

      Without the constraint

      With the constraint


       
    • "Link Deform with Orientation" tool
      There is a handy tool in XSI called "link deform with orientation", with it you can link a deformation with the orienation of an object (eg. a bone). This is similar to creating pose-based deformations see (Pose Space Deformation). You can combine this tool with shape animation to change your envelope according to the orientation of the bones of your character.

      It is also possible to use this tool to create a simple muscle deformation system. One way to do this is by creating spheres (that represent the muscles), then linking their scale with the rotation of the corresponding joint.

      There is a tutorial on how to do this for an arm on the Softimage website here .


       
    • Topology
      No matter what method for deforming you are using, to ensure good deformations you need to create your model with good topology. There are many examples of characters with good topology on the web. There is a useful 'sticky' thread on body topology on cgtalk.com here . (Unfortunately some of the older posts no longer have their images, but luckily I have saved some of them)


      Here is a good example by Steven Stahlberg


       

bullet2 Pose Space Deformation

Pose Space Deformation is an interesting deformation system, it is and attempt to retain the simplicity of the enveloping system but improving how it deforms.

I have extracted several quotes from the Siggraph "Pose Space Deformation"  paper to make it easy to quickly understand what "Pose Space Deformation" is.

"Pose Space Deformation generalizes and improves upon both shape Interpolation and common skeleton-driven deformation techniques"

"It addresses the previously mentioned drawbacks of shape interpolation and SSD while retaining the simplicity and performance associated with these techniques."


"Pose space deformation is a shallow, purely kinematic approach to deformation (i.e. without reference to underlying forces, mass, volume), and it has consequent disadvantages. In particular, accuracy is reliant on the modeler/animator rather than being guaranteed by the simulation. On the other hand, our algorithm has clear advantages with respect to simplicity and generality, direct manipulation, real-time synthesis, and other criteria listed in the introduction." (p.4)

"Our scheme can be bootstrapped on top of an existing software system: the model is posed as desired and the desired surface at that pose is sculpted. Our algorithm computes the difference between the initial and resculpted model at that pose. This ‘deformation’ is associated with the joints or other parameters that have moved from their default positions to create the particular pose. One or more deformations will then be interpolated in this subspace using a scattered data approach." (p.5)

Pose Space Deformation gives the modeller more control to 'sculpt' how the deformations will look. This direct manipulation clearly is an advantage over enveloping. However the authors seem to feel this is could also be a disadvantage, as the accuracy is reliant on the artist - not a simulation.

Here are two examples from the paper. The first is using enveloping, the second is using pose space deformation.


If you are fortunate enough to be using Maya there is a Pose Space Deformation plug-in called poseDeformer . It is free to download and apparently works just like the paper describes. For detailed information about it go here . To download it go here . There is also a short video clip demonstrating the plug-in.

Unfortunately no one (that I could find) has written a version for use with XSI. A compromise would be to use the "Link deform with Orientation" command.