Programming for the Artist
Instructor: Lindsay Grace

 

Procedural Animation Definition:

"A procedural animation is a type of computer animation, used to automatically generate animation in real-time to allow for a more diverse series of actions than could otherwise be created using predefined animations.

Procedural animation is used to simulate particle systems (smoke, fire, water [1] [2] ), cloth and clothing, rigid body dynamics, and hair and fur dynamics, as well as character animation . . . [more from Wikipedia]"

There are many types of procedural animation algorithms. This is not an exhaustive list of algorithms; instead it serves to provide you with an introduction to the primary concepts.  Much of the research that people conduct in procedural animation is inspired by a desire to imitate or simulate. If you have lots of time you could consider reading some Baudrillard for a better understanding of Simulation or you could review some of these samples, and philosophize later. 

Particle Systems

Many conventional particle systems follow the same basic concept.  Create an atomic unit of the system; give it some rules about rate, lifespan (e.g alpha), and movement. Then apply those rules across many, many instances of similar atomic units, varying each property slightly.  The example of a smoke “emitter” in Blitz3d is a good place to begin to understand how the early versions of these particle systems worked.

Diagram of particle effects logic

diagram number of 2 of particle effects

 
There are many particle effects academic papers in the, I just picked a one that was easy to understand and came with easy to understand media, http://www-evasion.imag.fr/Publications/2006/ANSN06/?lg=fr. You could also view Maya Particle Effects Video.

Fluid Simulation

Fluid simulations endeavor to present animation that mimics the activity of, you guessed it, fluid. Here physical factors like viscosity and weight are added to the equations.   Without delving into the math, understanding what types of factors effect the movement of fluid shouldn’t be too hard.  Here the challenge is deciding which factors attribute to the most satisfactory representation.  Simulating all the properties of water, for example, might be too computationally expensive for real time applications like games. If, for example, there is a FPS with water, but the player never interacts with the water it’s clearly a waste to even bother with fluid simulation. However, if there are physics puzzles involving the flow of water within the game environment some version of fluid simulation may be useful.  Real time fluid simulations are still largely the domain of scientific visualization. 

A few simulations of fluid and granular systems

And some maya

http://www.youtube.com/watch?v=mbTybIYBKK8

And some water effects in a few games you may have heard of: Bioshock, Tomb Raider (Anniversary - no textured plane for water here).

 


Crowd Simulation:
Many crowd simulations adapt the models of fluid simulations, peppering them with AI. The idea is simple in principle, move people the way you move liquid. Here are some cool demos:

Watch carefully

 

http://www.youtube.com/watch?v=vavaqL71KgU

An acedemic algortyhm for crowd simulation, and another, and another.

Emergent Behavior
Unlike the previous procedural animations that seek to mimic physical properties, early flocking algorithms and other behavior models use principles closer to psychology. One of the most popular of these is the BOIDS algorithm by Reynolds. This algorithm, and its derivatives, creates a computer model of 3 key factors: separation, alignment and cohesion.  The idea is that movement of the individual atomic units (in this case let’s say a flock of birds) is dictated by their “desire” or ability to maintain appropriate distance, alignment and cohesion.  I find the following explanation and history more than adequate for our needs: boids.

I’ve done an implementation of the Boids algorithm in Blitz3d and you’ll notice there are several Java based examples.  You may also be interested in this MEL demo and this demo done in Processing. There is an example in Python, for NodeBox (MAC Os tool) here for you to run (I'm trying not to leave the MAC people out of the loop).

Verlet(s)

The “Verlet” approach models the relationship of each atomic unit to its neighbor. The idea is to model the tensions between physical units and create a physical model that adapts to specific motion at the verlet joint. It’s a little tricky to explain this without getting into physics and math, but consider the verlet one joint in a chain of joints. When one joint is pulled or pushed, there should be a result that dissipates the further the joint is from the pushed or pulled joint.  Four years ago there was a little discussion on Blitz forums that may have yielded this Verlet Ragdoll.

I think this little construction kit and Java Demo is a great toy for understanding the concept. We also can't forget a related concept (sans physics) can be seen in RumbleBox(yep, Digipen again). The verlet concept is clearly useful in materials simulation as well.


The Dumping Ground:

Lastly, I've listed a few uncateorized procedural animation links. These are demonstrations of specific approaches:

Maya

Last Modified August 31, 2008