II
Particle-Based Models
CHAPTER 4
Particle Systems
IN THE PREVIOUS CHAPTER we were concerned with the behavior of a single ball falling in gravity, being affected by wind, and bouncing off of planes. This allowed us to develop some key ideas related to physical simulation on a computer, including stepping forward through time in discrete timesteps, using numerical integration to convert accelerations to velocity updates and velocities to position updates, detecting and responding to sub-timestep phenomena like collisions, and visualizing an evolving simulation as a sequence of animation frames. In this chapter, we move on from the single ball problem to the problem of handling a particle system.
4.1 WHAT IS A PARTICLE SYSTEM?
A particle system typically consists of a massive collection of particles, generated from one or more locations in space, whose motion is determined by external forces. These forces can be environmental, like wind and gravity for realistic effects, or artificial, for more bizarre effects. Particles are usually able to detect and respond to collisions or otherwise interact with scene geometry. Particle systems are especially good for representing phenomena such as rain, snow, fire, smoke, dust, sandstorms, fireworks, splashes, and spray. Figure 4.1 shows a few examples. In his classic paper, Particle systems—A technique for modeling a class of fuzzy objects, Reeves [1983] refers to these as amorphous phenomena, because they lack a concrete geometric form and tend to spread over a region.
In the bouncing ball problem, we were dealing with a single ball of some radius, while in particle systems we attempt to deal with a very large number, typically hundreds of thousands or millions, of particles, but we allow the radii of these particles to go to 0, so that each one can be handled as a single point. We typically want these particles to interact with complex scene geometry, so instead of a single ball bouncing off of a few polygons, we might have millions of particles colliding with hundreds of thousands of polygons. Examples might be a waterfall cascading down over rocks, or snow falling over the roof of a house. Although we are dealing with a large number of particles, the particles do not interact with each other, so we can ignore such things as particle-particle collision. Simply creating particles and getting them to move is not interesting in itself, and would hardly lead to something that we would call a particle system. Particles become interesting when there is a coherence to their motion that gives the illusion that we are reproducing some type of point-sampled physical phenomenon.
FIGURE 4.1 Example particle system effects. (a) Justin Kern, (b) Gowthaman Ilango, (c) Meng Zhu, (d) Heitan Yang, (e) Dan Lewis, and (f) Jon Barry.
FIGURE 4.2 Some particle generator styles.
The desired coherence of a particle system, and the ability to locate it in 3D space, is achieved by associating a particle generator with each particle system. This is a geometric object that can be placed in a scene, and is equipped with a procedure for creating and injecting particles into that scene. As each particle is generated, it receives an...