Presentation is loading. Please wait.

Presentation is loading. Please wait.

Joshua Barczak CMSC 435 UMBC

Similar presentations


Presentation on theme: "Joshua Barczak CMSC 435 UMBC"— Presentation transcript:

1 Joshua Barczak CMSC 435 UMBC
Animation Joshua Barczak CMSC 435 UMBC

2 Animation

3 Animation What’s really going on… Discrete frames
Incremental change between frames Illusion of motion

4 Flip Books Hand drawn frames, packed into large texture N M 0,0 1,0
u = (u + (frame % N)) / N; v = (v + (frame / N)) / M; M 0,0 1,0 0,1 u v libgdx

5 Animation Traditional Animation Pipeline
Lead animator draws “key” frames “In-betweener” draws frames between keys Key Key

6 Animation Computer Animation Pipeline Animator specifies “key frames”
Computer interpolates Key Key

7 Animation

8 Keyframing We can key anything we want: Position Rotation Scale Color
Texture coordinate Light intensity

9 Animation

10 Splines BoatDesign.net

11 Hermite Spline T0 P1 P0 T1

12 Piecewise Hermite Splines

13 Piecewise Hermite Splines
Catmull-Rom spline Shared tangents are vectors between neighbor points C1 continuous Endpoint interpolating

14 Kochanek-Bartels Curves
Use different tangents in each segment Artistic control TCB Tension Continuity Bias All zero: Catmull-Rom curve See book, pg 420

15 Tension T=-1 T=0 T=1 How close it is to a straight line

16 Create local discontinuities
Continuity C=-2 C=0 C=1 Create local discontinuities

17 Overshoot/Undershoot
Bias B=-1 B=0 B=1 Overshoot/Undershoot

18 Animated Rotation Euler angles Easy to set Doesn’t animate well
Rotations about independent axes Yaw/Pitch/Roll Easy to set Doesn’t animate well Gimbal lock Quaternion interpolation used instead Wikipedia

19 Quaternions Alternate representation for rotations
Rotation 2a radians around axis N: Q=[sin(a)N, cos(a)] Convertible to/from rotation matrix Much more compact Stable interpolation

20 Ancient DirectX SDK sample
Vertex Blending Interpolate between meshes Same topology Different vertex positions Models as keyframes Ancient DirectX SDK sample

21 Ancient DirectX SDK sample
Vertex Blending Issues Ease of authoring Difficult to tweak the animation Data size Ancient DirectX SDK sample

22 Skeletal Animation Skeleton:
Hierarchy of joints (bones) Deform a mesh (skin) based on joint rotation Okino.com

23 Hierarchical Model Torso Head Left Shoulder Hips Upper Arm
Lower Arm Hand Hips Left Upper Leg Lower Leg Foot

24 Forward Kinematics Given a set of joint transforms, where’s the hand?
(or foot or head or …) End effector Just apply nested transforms We know how to do that!

25 FK Example Location of hand: Construct hand to world transform: Head
Hand_to_elbow * Elbow_to_shoulder * Shoulder_to_head * head_to_world Hand Shoulder Elbow

26 Inverse Kinematics Given desired effector position, find joint angles
Common Examples: Foot placement Pointing/Grasping Constrained optimization Preserve limb length Arms doesn’t bend that way

27 Skeletal Animation Motion Capture Track markers on actor
Infer joint locations from markers Often significant manual cleanup Kevin Durant at Electronic Arts Motion Capture Studio - AP / Richard Lam

28 Skinning Model authored in “rest pose”
Mesh vertices “bound” to skeletal joints Single joint (rigid) Multiple joints (weighted blend) Okino.com

29 Skinning For each bone, store: For each vertex: Bind matrix
Bone to world transform for rest pose (B) Animation curves Relative to rest pose Parent bone For each vertex: Bone indices and weights Okino.com

30 Skinning Skinning a vertex Transform into “bind space”
Apply an animated offset Transform result up the tree

31 Skinning // Sample animated bone offsets for( bones ) M[i] = Li(time)
// compute new bone->world transforms for( pre-order traversal of skeleton ) M[i] = M[parent[i]] * M[i]; // apply inverse bind matrix M[i] = M[i] * Binv[i]; // Each vertex has position p, weights w[] and bone indices idx[] for( vertices i ) for( bones influences j ) position += w[j]*M[idx[j]]*p

32 Blend Shapes Commonly used for faces Sculpt key poses
Expressions Phonemes Animate pose weights Curve per shape Maya Documentation

33 Freeform Deformation Define regular grid Move grid points
Moves objects Lattice defines a “bezier volume” Sederberg and Parry, 1986

34 Physics Based Animation
Simulate physics to predict motion Starting point for hand animation Things too large/difficult to hand animate In general, must be: Stable Not too slow Art-directible

35 Simulation Rigid Bodies Simulate physics
Detect collisions and apply “penalty forces” Typically: Linear/Angular velocity Discrete time steps Discrete/Continuous collision detection

36 Simulation Cloth Mass-spring simulations
Cloth/Cloth and cloth/object collision response Brad Werth Bridson et al. Robust Treatment of Collisions, Contact and Friction for Cloth Animation

37 Alliez et al. Variational Tetrahedral Meshing
Simulation Soft-Bodies Tetrahedral mesh models Approaches Mass-spring Conserve edge lengths Finite element Conserve volume Alliez et al. Variational Tetrahedral Meshing Irving et al. Volume Conserving Finite Element Simulations of Deformable Models

38 Simulation Hair Simulate a subset of the hairs
Guide hairs Interpolate dense hair model from neighboring guide hairs Direct rendering Millions of anti-aliased lines Chang et al. 2002 Pixar

39 Coupling Water and Smoke to Thin Deformable and Rigid Shells
Simulation Fluid Simulation Grid-based Simulate velocity field on discrete grid Particle based Move particles directly Fluid Rendering Level set surface Guendelman et al. Coupling Water and Smoke to Thin Deformable and Rigid Shells

40 Simulation Crowds Agent based Continuum based Use AI techniques
Emmergent behavior Continuum based Dynamic vector field Congestion/hazards Crowd members as particles Treuille et al. Continuum Crowds


Download ppt "Joshua Barczak CMSC 435 UMBC"

Similar presentations


Ads by Google