Skeletal Animation and Skinning

Download Report

Transcript Skeletal Animation and Skinning

Skeletal Animation and
Skinning
A (hardware friendly) software approach
By: Brandon Furtwangler
What is skeletal animation?
 The idea:
 Define a hierarchy of ‘bones’
 Define animations that transform the bones
 Deform the vertices of a mesh based on the bones that
they are attached to
 Common alternative
 Key frame animation
 Pro’s
 Easier to understand
 Quicker

Con’s
 More memory usage
 Less flexible
Why is skeletal animation better?
 Allows you to ‘skin’ meshes


Matrix Palette Skinning (hardware friendly)
Multiple bones per vertex (weights)
 Greater flexibility

Play multiple animations on a single mesh


combine run animation on legs with salute
animation on arms
Mix animations together

overlap walk with run to get a smooth transition
Implementing MPS
 Things we need:

Model

Vertex
 Bone IDs
 Weights

Skeleton
 Bones (in a hierarchy)
 Parent
 Static Transform (bind pose)
 Dynamic Transform (animation controlled)
 Palette entry (to be multiplied by vertex)
Implementing MPS part 2
 The skinning process:



Update Dynamic Transforms from animations
Recalculate matrix palette
Transform vertex positions/normals by matrix
palette entries


Multiple bones per vertex?
How to handle normals?
Demo 1
 Single bone per vertex

Limited rotations




Joints overlap
Ugly
Quick
What if we want to model an elbow?
Demo 2
 2 bones per vertex



linear combination
Outside edge looks great
Inside edge is pinched


Why?
How do we fix it?
 More bones?
 Any other ideas?
Demo 3
 4 bones/weights per vertex
 4 bones for a single joint

Limitation for hardware (constant registers)
 Evenly blend between 4 bones with Bernstein
polynomials
 Both outside and inside of joint look
reasonable

More bones for complicated muscle simulation
Ideas for an animation system
 Quaternion based rotations

Nice interpolation
 Animation State


Multiple animations with blend factor
Animation


Multiple Tracks (one per bone in animation)
Track
 Quaternion Spline (for joint rotations)
Questions?
 demo’s at http://www.msu.edu/~furtwan1