Blending
When does it work
- poses must be similar (over the whole blend)
- timing must be similar (so poses similar over the whole blend)
How many poses can you blend?
- sets of 2 (left right straight loops)
- note: really becomes 4 if you do interpolation in time
- more than 2 (linear combinations)
- extreme: always blending “all poses” (big weight vector)
- in practice, mainly zeros
- update weight vector on each frame –> motion field
What to blend?
- to get “in between” need things that are close
- Wiley Hahn (regular lattice) – careful capture
- Kovar (k-NN)
How much to blend? (the weights)
- temporal blending
- linear interpolation vs. better
- spatial blending
- half-way in blend space might not be half-way in angle space
- single link example
- how to get precise control?
- insure samples are really close (small angle approx)
- IK post-process cleanup
- non-linear solution
- psuedo-samples
What if we were to blend the end effector positions instead?
- blending all points doesn’t work unless things are really close
- breaks distance constancy
- get exact goals
- need IK (or something like it) to find joint angles
Does it have to be a hierarchy?
Could be a point cloud (markers, joint positions, …)
- no IK for end effector goals
- give up some fidelity of angles – but how important are they?
- can (usually) recover angles if necessary
- may need extra markers to disambiguate
- stretching – might not be the end of the world
- better to stretch that to footskate/float
How do point clouds work for the various operations we care about?
- need to transform the whole thing
- quite character proportion dependent
- difficult to drive skinning
- gets interactions with world correct
- blending?
- transitions?
- matching for graphs?
Added bonuses for “Cartesian representations”
- easy physics
- easy positional constraints
- easy contacts
- matrices (jacobians) are sparse (this cuts both ways)
MKM
- goal: represent motion in a way that is independent of character (as much as possible)
- represent end effector positions / trajectories
- represent limb “planes” – so single limb IK is not ambiguous
- separate into global and local root motions (similar to path editing)
- core of body represented in a “normalized” way (it only needs to be scaled)
- constraints are easier to deal with (since they are positions)
- footplants
- “above table”
- distance
- still requires non-linear solving (CCD), but slack since the limbs are figured out
Cartesian Blending (can Baasten)
- figure out footplants / constraints and work backwards
- blending knees and other positions gives good starting points for IK
- need to deal with global alignment
Ho & Komura (relationship preserving adaptation)
- interested in close-in interactions of characters
- form mesh from point clouds
- tetrahedralization (build a volumetric form)
- small edges between things that are close
- Spacetime mesh
- each point connected in space (to form tetrahedra)
- each point connected in time (to itself in other frames)
- idea:
- make small adjustment to the mesh (to get closer to goals)
- fix constraints afterwards
- very large system (all points x all frames)
- sparse
- linear (since its points in space)
- objectives (in space time)
- laplacian deformation energy (the mesh doesn’t deform too much)
- Laplacian coordinates
- basic idea – predict value based on average of neighbors
- coordinate is offset from where average would expect you to be
- preserve accelerations of each point
- add constraints
- make bone lengths meet goals (linearize distances)
- positions
- collisions (since we have the whole mesh) – penalty method
- detect problem
- fix when time comes
- note: needs to be small steps
- linearizations
- collisions happen