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)