Animators are expert at creating moving imagery and hence conveying information, be it the personality of a character, their actions, or the elements of a story. Procedural methods, such as motion capture or physics simulation, also generate motion, yet are typically less effective than hand animation. Game developers have traditionally faced a choice between the high-quality, high-cost of hand animation and the lower-quality, interactivity of procedural motion.
Incorporating traditional animation techniques into procedural animation poses an extensive set of problems. Foremost is the problem of characterization: effective animation conveys not just events but also emotions and thoughts. Consider the look of dismay on Wile E. Coyote's face as he sits suspended in air above a canyon, or Luxo Jr's uncertainty as his ball deflates (or is it a her?). In the face of these difficulties we concentrate on the problem of adding one animation principle, squash-and-stretch, to a simulation of inanimate, colliding objects. Squash-and-stretch deforms objects, even rigid ones, as they interact. Hand-animated squash-and-stretch of a colliding object addresses two fundamental aspects of animation: the stretch anticipates the collision, and the squash exaggerates its effects. An additional benefit of squash-and-stretch is that it extends the duration of a collision by replacing a short-lived collision event with a new event that extends over several frames. This ensures that viewers actually see the contact, rather than just inferring its occurrence. Squash-and-stretch can also convey information about the physical properties of objects (their mass, hardness and so on).
We have developed a simulation library that produces squash-and-stretch motion for moving objects. The library is described in a paper from NPAR 2002, available below. We are not releasing the library, but for demonstration purposes we are making available a simple test program and a Breakout style game (rather incomplete).
Stephen Chenney, Mark Pingel, Rob Iverson and Marcin Szymanski, Simulating Cartoon Style Animation , Proceedings of Non-Photorealistic Animation and Rendering (NPAR) 2002 , pp 133--138
This is the environment we used to test the library. It loads scene files that specify objects and their properties, as well as things like gravity and planes on which to cast projection shadows (the simplest hack kind.) It's not worth the effort to describe the file format in detail - it should be easy to reverse engineer.
There are lots of limitations, as described in the paper. The biggest is that two moving objects cannot collide with each other. We're working on fixing that.
All the hotkeys are marked. The mouse buttons control the direction of the view and the zoom. It uses the fltk user interface library, and OpenGL for the rendering. I'm not sure whether you will need the fltk libraries to make it work - I don't think so.
ToonBallThe aim of the game is to hit the blocks with the ball. The arrow keys move the paddle left and right. The "p" key starts a game. The "esc" key quits. The board regenerates ad-infinitum, which makes it little more than a toy. The block disappearance routine is not simulation code, but does demonstrate the ability to trigger animation sequences from within the simulator. Download it for windows or for linux. It hasn't been tested on many systems, so let us know if there is a problem.
Questions/Comments: Stephen Chenney