## 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

## Cages

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).

## Coordinates

Cartesian

- 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.

Affine

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

Barycentric

- 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

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)