Particle system
From Wikipedia, the free encyclopedia
- This article is about 3D computer graphics. For the computer game developer, see Particle Systems Ltd.
The term particle system refers to a computer graphics technique to simulate certain fuzzy phenomena, which are otherwise very hard to reproduce with conventional rendering techniques. Examples of such phenomena which are commonly done with particle systems include fire, explosions, smoke, flowing water, sparks, falling leaves, clouds, fog, snow, dust, meteor tails, or abstract visual effects like glowy trails, etc.
Whilst in most cases particle systems are implemented in three dimensional graphics systems, two dimensional particle systems may also be used under some circumstances.
Contents |
[edit] Typical implementation
Typically the particle system's position in 3D space or motion therein is controlled by what is called the emitter.
The emitter is mainly characterized by a set of particle behavior parameters and a position in 3D space. The particle behavior parameters might include spawning rate (how many particles are generated per unit of time), particle initial velocity vector (i.e. which way will it go when it is emitted), particle life (how much time does each individual particle live before being extinguished), particle color and variations throughout its life, and many more. It is common for all or most of these parameters to be fuzzy, in the sense that instead of absolute values, some central value and allowable random variation is specified.
A typical particle system update loop (which is performed for each frame of animation) can be separated into two distinct stages, the parameter update/simulation stage and the rendering stage.
[edit] Simulation stage
During the simulation stage, the amount of new particles that must be created is calculated based on spawning rates and interval between updates, and each of them is spawned in a specific position in 3D space based on emitter position and spawning area specified. Also each of the particle's parameters, like velocity, color, life, etc, are initialized based on the emitter's parameters. Then all the existing particles are checked to see if they have exceeded their lifetime, in which case they are removed from the simulation. Otherwise their position and other characteristics are modified based on some sort of physical simulation, which can be as simple as adding the velocity to the current position, and maybe accounting for friction by modulating the velocity, or as complicated as performing physically-accurate trajectory calculations taking into account external forces. Also it is common to perform some sort of collision checking with specified 3D objects in order to make the particles bounce off obstacles in the environment. However, particle-particle collisions are rarely used, as they are computationally expensive and not really useful for most of the simulations.
A particle system has its own rules that are applied to every particle. Often these rules involve interpolating values over the lifetime of a particle. For example, many systems have particles fade out to nothingness by interpolating the particle's alpha value (opacity) during the lifetime of the particle.
[edit] Rendering stage
After the update is complete, each particle is rendered usually in the form of a textured billboarded quad (i.e. a quadrilateral that is always facing the viewer). However, this is not necessary; the particle may be rendered as just a single pixel in small resolution/limited processing power environments, or even as a metaball in off-line rendering (isosurfaces computed from particle-metaballs make quite convincing liquid surfaces). Finally, 3D meshes can also be used to render the particles.
[edit] Artist-friendly particle system tools
Particle systems can be created and modified natively in many 3D modeling and rendering packages including 3D Studio Max, Maya and Blender. These editor programs allow artists to have instant feedback on how a particle system might look given properties and rules that they can specify. There is also plug-in software available that provide enhanced particle effects, such as AfterBurn and RealFlow (for liquids). Compositing software such as Combustion or specialized, particle-only software such as Particle Studio and particleIllusion can be used for the creation of particle systems for film and video.
[edit] External links
- Particle Systems: A Technique for Modeling a Class of Fuzzy Objects — William T. Reeves (ACM Transactions on Graphics, April 1983)
- The ocean spray in your face. — Jeff Lander (Game Developer, July 1998)
- Building an Advanced Particle System — John van der Burg (Gamasutra, June 2000)
- Particle Engine Using Triangle Strips — Jeff Molofee (NeHe)
- Building a Million-Particle System — Lutz Latta (Gamasutra, July 2004)
- Designing an Extensible Particle System using C++ and Templates — Kent Lai (GameDev)
- Particle Systems API - David K. McAllister