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