Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS559: Computer Graphics Lecture 36: Animation Li Zhang Spring 2008 Many slides from James Kuffner’s graphics class at CMU.

Similar presentations


Presentation on theme: "CS559: Computer Graphics Lecture 36: Animation Li Zhang Spring 2008 Many slides from James Kuffner’s graphics class at CMU."— Presentation transcript:

1 CS559: Computer Graphics Lecture 36: Animation Li Zhang Spring 2008 Many slides from James Kuffner’s graphics class at CMU

2 Today Traditional Animation, Computer Animation Reading (Optional) Shirley, ch 16, overview of animation

3 Animation Traditional Animation – without using a computer

4 Animation Computer Animation

5 Types of Animation Cartoon Animation

6 Types of Animation Cartoon Animation Key Frame Animation

7 Types of Animation Cartoon Animation Key Frame Animation Physics based animation Nguyen, D., Fedkiw, R. and Jensen, H., "Physically Based Modeling and Animation of Fire", SIGGRAPH 2002

8 Types of Animation Cartoon Animation Key Frame Animation Physics based animation Enright, D., Marschner, S. and Fedkiw, R., "Animation and Rendering of Complex Water Surfaces", SIGGRAPH 2002

9 Types of Animation Cartoon Animation Key Frame Animation Physics based animation Data driven animation

10 Types of Animation Cartoon Animation Key Frame Animation Physics based animation Data driven animation

11 Types of Animation Cartoon Animation Key Frame Animation Physics based animation Data driven animation

12 Types of Animation Cartoon Animation Key Frame Animation Physics based animation Data driven animation

13 Principles of Animation John Lasseter. Principles of traditional animation applied to 3D computer animation. Proceedings of SIGGRAPH (Computer Graphics) 21(4): 35-44, July 1987. Goal : make characters that move in a convincing way to communicate personality and mood. Walt Disney developed a number of principles. – ~1930 Computer graphics animators have adapted them to 3D animation.

14 Principles of Animation The following are a set of principles to keep in mind: 1. Squash and stretch 2. Staging 3. Timing 4. Anticipation 5. Follow through 6. Overlapping action 7. Secondary action 8. Straight-ahead vs. pose-to-pose vs. blocking 9. Arcs 10. Slow in, slow out 11. Exaggeration 12. Appeal

15 Squash and stretch Squash: flatten an object or character by pressure or by its own power. Stretch: used to increase the sense of speed and emphasize the squash by contrast. Note: keep volume constant! http://www.siggraph.org/education/materials/HyperGraph/animation/character_ animation/principles/squash_and_stretch.htm http://www.siggraph.org/education/materials/HyperGraph/animation/character_ animation/principles/squash_and_stretch.htm http://www.siggraph.org/education/materials/HyperGraph/animation/character_ animation/principles/bouncing_ball_example_of_slow_in_out.htm http://www.siggraph.org/education/materials/HyperGraph/animation/character_ animation/principles/bouncing_ball_example_of_slow_in_out.htm

16 Squash and stretch (cont’d)

17

18 Anticipation An action has three parts: anticipation, action, reaction. Anatomical motivation: a muscle must extend before it can contract. Prepares audience for action so they know what to expect. Directs audience's attention. Watch: bugs-bunny.virtualdub.new.mpg

19 Anticipation (cont’d) Amount of anticipation (combined with timing) can affect perception of speed or weight.

20 Arcs Avoid straight lines since most things in nature move in arcs.

21 Slow in and slow out An extreme pose can be emphasized by slowing down as you get to it (and as you leave it). In practice, many things do not move abruptly but start and stop gradually.

22 Exaggeration Get to the heart of the idea and emphasize it so the audience can see it.

23 Exaggeration Get to the heart of the idea and emphasize it so the audience can see it.

24 Appeal The character must interest the viewer. It doesn't have to be cute and cuddly. Design, simplicity, behavior all affect appeal. Example: Luxo, Jr. is made to appear childlike.

25 Appeal (cont’d) Note: avoid perfect symmetries.

26 Appeal (cont’d) Note: avoid perfect symmetries.

27 Particle Systems http://en.wikipedia.org/wiki/Particle_system

28 What are particle systems? A particle system is a collection of point masses that obeys some physical laws (e.g, gravity, heat convection, spring behaviors, …). Particle systems can be used to simulate all sorts of physical phenomena:

29 Particle in a flow field We begin with a single particle with: – Position, – Velocity, Suppose the velocity is actually dictated by some driving function g: x g(x,t) x y

30 Vector fields At any moment in time, the function g defines a vector field over x: How does our particle move through the vector field?

31 Diff eqs and integral curves The equation is actually a first order differential equation. We can solve for x through time by starting at an initial point and stepping along the vector field: This is called an intial value problem and the solution is called an integral curve. Start Here

32 Euler’s method One simple approach is to choose a time step,  t, and take linear steps along the flow: Writing as a time iteration: This approach is called Euler’s method and looks like: Properties: – Simplest numerical method – Bigger steps, bigger errors. Error ~ O(  t 2 ). Need to take pretty small steps, so not very efficient. Better (more complicated) methods exist, e.g., “Runge-Kutta” and “implicit integration.”

33 Particle in a force field Now consider a particle in a force field f. In this case, the particle has: – Mass, m – Acceleration, The particle obeys Newton’s law: The force field f can in general depend on the position and velocity of the particle as well as time. Thus, with some rearrangement, we end up with:

34 This equation: is a second order differential equation. Our solution method, though, worked on first order differential equations. We can rewrite this as: where we have added a new variable v to get a pair of coupled first order equations. Second order equations

35 Phase space Concatenate x and v to make a 6-vector: position in phase space. Taking the time derivative: another 6-vector. A vanilla 1 st -order differential equation.

36 Differential equation solver Applying Euler’s method: Again, performs poorly for large  t. And making substitutions: Writing this as an iteration, we have: Starting with:

37 Particle structure position velocity force accumulator mass Position in phase space How do we represent a particle?

38 Single particle solver interface getDim derivEval getState setState

39 Particle systems particles ntime In general, we have a particle system consisting of n particles to be managed over time:

40 Particle system solver interface particles ntime derivEval get/setState getDim For n particles, the solver interface now looks like:

41 Particle system diff. eq. solver We can solve the evolution of a particle system again using the Euler method:

42 Forces Each particle can experience a force which sends it on its merry way. Where do these forces come from? Some examples: – Constant (gravity) – Position/time dependent (force fields) – Velocity-dependent (drag) – N-ary (springs) How do we compute the net force on a particle?

43 Particle systems with forces particles ntime forces F2F2 F nf nf Force objects are black boxes that point to the particles they influence and add in their contributions. We can now visualize the particle system with force objects: F1F1

44 Gravity and viscous drag p->f += p->m * F->G p->f -= F->k * p->v The force due to gravity is simply: Often, we want to slow things down with viscous drag:

45 A spring is a simple examples of an “N-ary” force. Recall the equation for the force due to a spring: We can augment this with damping: The resulting force equations become: Note: stiff spring systems can be very unstable under Euler integration. Simple solutions include heavy damping (may not look good), tiny time steps (slow), or better integration (Runge-Kutta is straightforward). Damped spring r = rest length

46 derivEval 1.Clear forces Loop over particles, zero force accumulators 2.Calculate forces Sum all forces into accumulators 3.Return derivatives Loop over particles, return v and f/m Apply forces to particles Clear force accumulators 1 2 3 Return derivatives to solver F2F2 F3F3 F nf F1F1

47 Bouncing off the walls Handling collisions is a useful add-on for a particle simulator. For now, we’ll just consider simple point-plane collisions. A plane is fully specified by any point P on the plane and its normal N. N P v x

48 Collision Detection How do you decide when you’ve made exact contact with the plane? N P v x

49 Normal and tangential velocity To compute the collision response, we need to consider the normal and tangential components of a particle’s velocity. N P v x v

50 Collision Response before after v’v’ The response to collision is then to immediately replace the current velocity with a new velocity: The particle will then move according to this velocity in the next timestep. v

51 Collision without contact In general, we don’t sample moments in time when particles are in exact contact with the surface. There are a variety of ways to deal with this problem. The most expensive is backtracking: determine if a collision must have occurred, and then roll back the simulation to the moment of contact. A simple alternative is to determine if a collision must have occurred in the past, and then pretend that you’re currently in exact contact.

52 Very simple collision response How do you decide when you’ve had a collision? A problem with this approach is that particles will disappear under the surface. We can reduce this problem by essentially offsetting the surface: Also, the response may not be enough to bring a particle to the other side of a wall In that case, detection should include a velocity check: N P v1v1 x1x1 x2x2 x3x3 v2v2 v3v3

53 More complicated collision response Another solution is to modify the update scheme to: – detect the future time and point of collision – reflect the particle within the time-step N P v x

54 Particle frame of reference Let’s say we had our robot arm example and we wanted to launch particles from its tip. How would we go about starting the particles from the right place? First, we have to look at the coordinate systems in the OpenGL pipeline…

55 The OpenGL geometry pipeline

56 Projection and modelview matrices Any piece of geometry will get transformed by a sequence of matrices before drawing: p’= M project M view M model p The first matrix is OpenGL’s GL_PROJECTION matrix. The second two matrices, taken as a product, are maintained on OpenGL’s GL_MODELVIEW stack: M modelview = M view M model

57 Robot arm code, revisited Recall that the code for the robot arm looked something like: glRotatef( theta, 0.0, 1.0, 0.0 ); base(h1); glTranslatef( 0.0, h1, 0.0 ); glRotatef( phi, 0.0, 0.0, 1.0 ); upper_arm(h2); glTranslatef( 0.0, h2, 0.0 ); glRotatef( psi, 0.0, 0.0, 1.0 ); lower_arm(h3); All of the GL calls here modify the modelview matrix. Note that even before these calls are made, the modelview matrix has been modified by the viewing transformation, M view.

58 Computing the particle launch point To find the world coordinate position of the end of the robot arm, you need to follow a series of steps: 1. Figure out what M view is before drawing your model. 2.Draw your model and add one more transformation to the tip of the robot arm. glTranslatef( 0.0, h3, 0.0 ); 3. Compute 4. Transform a point at the origin by the resulting matrix. Now you’re ready to launch a particle from that last computed point! Vec3f particleOrigin = particleXform * Vec3f(0,0,0); Mat4f particleXform = getWorldXform(matCam); Mat4f matCam = glGetModelViewMatrix();

59 Types of Animation Easier to render, 3d model, and mocap, physical simulation

60 Timing Lip sync?

61 Character animation FK? IK?


Download ppt "CS559: Computer Graphics Lecture 36: Animation Li Zhang Spring 2008 Many slides from James Kuffner’s graphics class at CMU."

Similar presentations


Ads by Google