Lecture 24: Advanced Skinning (Cages)

by Mike Gleicher on April 27, 2013

Re-Cap: What did we learn about skinning last time

  • The skinning / rigging problem
  • Hierarchical skeletal skinning
  • Linear-Blend Skinning
  • Example-Based fitting
  • Pose-Space Deformations

What was wrong with linear blend skinning?

  • Hard to come up with good weights (although, example-based approaches)
    • especially for local control
  • Artifacts (candy-wrapper, elbow compression)
  • Lack of control
    • What happens if your skeleton isn’t rigid?
    • Motion between co-ordinate systems
    • Scales? (vs. translations)
    • Add small amounts of detail

Dealing with Artifacts: Dual Quaternion Skinning

Math in paper is hard to fully understand – but they give you code, easy to use.

Prelude: the problem of artifacts

  • linear interpolate matrices – not rotations
  • lose rigidity

Why not interpolate rotations (e.g. quaternions)?

  • different centers of rotation
  • we’re not interpolating rotations! we’re intrpolating coordinate systems

Better interpolation of matrices?

  • exponential maps (expensive, problem with centers)
    • allows for non-rigid things
  • need a different representation of rigid transforms

Try to blend rotation – but choose a smart choice for the center

  • Optimal center of rotation?
    • find the center such is a good center for all the transformations
    • SVD
    • must be done per-vertex
  • Joint nearest the points (problem: discontinuities)
  • Blend the centers
    • trans-rot is a pure rotation (just with a center somewhere else)
    • this is what exponentials do
    • this is what dual quaternions do

Dual Quaternions

  • dual numbers are kindof like complex numbers
    • a + b e (e is the dual unit)
    • e^2 = 0 (as opposed to i^2=-1)
  • dual quaternions a Q1 + Q2 e
    • not the same as an octonioan
  • have a different algebra associated with them
  • they can represent rigid transformations
  • there is a way to define interpolation over them
  • details in the paper


A different approach: rather than having an internal skin, have an external control cage.

  • specific case of deformation control: based on outline / exterior boundary
  • control space inside by manipulating boundary


Note: only the EXTERIOR is the cage – the internal segments are shown just for clarity – there is nothing special about those lines (we do not require interpolation at the internal lines




If we have a good way of deforming the inside of the cage we get:

  • easy skinning (for free)
  • easy addition of controls
  • ways to deal with artifacts (add controls, or rely on “goodness” of deformation)
  • ability to gracefully deal with non-rigid things

Several people noted that the “automation” and “connection to controls” issues. These are dealt with in another paper (re-usable templates).



  • scale axes (independently)
  • (in 2D) 2 scales + 2 translational degrees of freedom

note: once you know the coordinates, really easy to determine where things go based on the d.o.f.


  • allow the vectors to change (arbitratily) – direction and scale
  • 4 d.o.f. (2 vectors) + move center
  • translation + linear


  • express as a linear combination of the corner points
  • center of mass if points were weights
  • aA + bB + cC (for a triangle)
    • how graphics works
  • unique for a non-degenerate triangle
  • Note interpolation:
    • edges go to edges (corners to corners)
  • only unique for triangles (simplicies – tetrahedra, …)

How to make barycentric coords for polygons?

  • convex
  • non-convex
    • Mean value coordinates – first really useful one
    • image
    • MVC can be negative (so places on the inside move in the opposite direction)
    • Positive – MVC (hard to compute)

Note: once you have the coordinates, “playback” is easy (since the result is just a linear combination)

Harmonic Coordinates

  • laplacian is zero
  • Mean value property (value of any point is average of circle around it)
  • largest value in a region is bounded by values at the edge
  • unique
  • simple way to compute (by successive averaging) – but can be slow
    • but once you compute them, using them is fast
    • much faster ways to compute them exist
    • multi-grid, conjugate gradient
  • can force to interpolate more points than just the edges to give additional control (Woody’s eyeball is a sphere)

Green’s Coordinates

Add additional controls – not just the points but the edges as well.

  • gives additional info to make sure things work well
  • mappings “conform” around the edges (derivatives across edges are preserved)
  • local rotations (as defined by the changes in the edge)
Print Friendly, PDF & Email

Previous post:

Next post: