This article includes a list ofgeneral references, butit lacks sufficient correspondinginline citations. Please help toimprove this article byintroducing more precise citations.(January 2018) (Learn how and when to remove this message) |



Aparticle system is a technique ingame physics,motion graphics, andcomputer graphics that uses many minutesprites,3D models, or other graphic objects to simulate certain kinds of "fuzzy" phenomena, which are otherwise very hard to reproduce with conventional rendering techniques – usually highlychaotic systems, natural phenomena, or processes caused by chemical reactions.
Introduced in the 1982 filmStar Trek II: The Wrath of Khan for the fictional "Genesis effect",[1] other examples include replicating the phenomena offire,explosions,smoke, moving water (such as a waterfall),sparks, falling leaves, rock falls,clouds,fog,snow,dust,meteor tails, stars and galaxies, or abstract visual effects like glowing trails,magic spells, etc. – these use particles that fade out quickly and are then re-emitted from the effect's source. Another technique can be used for things that contain manystrands – such as fur, hair, and grass – involving rendering an entire particle's lifetime at once, which can then be drawn and manipulated as a single strand of the material in question.
Particle systems are defined as a group of points in space, guided by a collection of rules defining behavior and appearance. Particle systems model phenomena as a cloud of particles, usingstochastic processes to simplify the definition ofdynamical system andfluid mechanics with that are difficult to represent withaffine transformations.[2]
Particle systems typically implement the following modules:
An emitter implements a spawning rate (how many particles are generated per unit of time), the particles' initial velocity vector (the direction they are emitted upon creation). When using a mesh object as an emitter, the initial velocity vector is often set to benormal to the individual face(s) of the object, making the particles appear to "spray" directly from each face but this is optional.
During thesimulation stage, the number of new particles that must be created is calculated based on spawning rates and the interval between updates, and each of them is spawned in a specific position in 3D space based on the emitter's position and the spawning area specified. Each of the particle's parameters (i.e. velocity, color, etc.) is initialized according to the emitter's parameters. At each update, all existing particles are checked to see if they have exceeded their lifetime, in which case they are removed from the simulation. Otherwise, the particles' position and other characteristics are advanced based on a physical simulation, which can be as simple astranslating their current position, or as complicated as performing physically accurate trajectory calculations which take into account external forces (gravity, friction, wind, etc.). It is common to performcollision detection between particles and specified 3D objects in the scene to make the particles bounce off of or otherwise interact with obstacles in the environment. Collisions between particles are rarely used, as they are computationally expensive and not visually relevant for most simulations.
After the update is complete, each particle is rendered, usually in the form of atexturedbillboardedquad (i.e. a quadrilateral that is always facing the viewer). However, this is sometimes not necessary for games; a particle may be rendered as a single pixel in small resolution/limited processing power environments. Conversely, in motion graphics particles tend to be full but small-scale and easy-to-render 3D models, to ensure fidelity even at high resolution. Particles can be rendered asMetaballs in off-line rendering;isosurfaces computed from particle-metaballs make quite convincing liquids. Finally, 3D mesh objects can "stand in" for the particles — a snowstorm might consist of a single 3D snowflake mesh being duplicated and rotated to match the positions of thousands or millions of particles.[3]
In 1983, Reeves defined only animated points, creating moving particulate simulations — sparks, rain, fire, etc. In these implementations, each frame of the animation contains each particle at a specific position in its life cycle, and each particle occupies a single point position in space. For effects such as fire or smoke that dissipate, each particle is given afade out time or fixed lifetime; effects such as snowstorms or rain instead usually terminate the lifetime of the particle once it passes out of a particularfield of view.[1]
In 1985, Reeves extended the concept to include rendering the entire life cycle of each particle simultaneously, the result transforms particles intostatic strands of material that show the overall trajectory, rather than points. These strands can be used to simulate hair, fur, grass, and similar materials. The strands can be controlled with the same velocity vectors, force fields, spawning rates, and deflection parameters that animated particles obey. In addition, the rendered thickness of the strands can be controlled and in some implementations may be varied along the length of the strand. Different combinations of parameters can impart stiffness, limpness, heaviness, bristliness, or any number of other properties. The strands may also usetexture mapping to vary the strands' color, length, or other properties across the emitter surface.[4]
In 1987, Reynolds introduces notions offlocking,herding orschooling behaviors. Theboids model extends particle simulation to include external state interactions including goal seeking, collision avoidance, flock centering, and limited perception.[5]
In 2003, Müller extended particle systems tofluidics by simulatingviscosity,pressure andsurface tension, and then rendered surfaces by interpolating the discrete positions withSmoothed Particle Hydrodynamics.[6]
Particle systems code that can be included in game engines, digital content creation systems, and effects applications can be written from scratch or downloaded.Havok provides multiple particle system APIs. Their Havok FX API focuses especially on particle system effects.Ageia - now a subsidiary ofNvidia - provides a particle system and other game physics API that is used in many games, includingUnreal Engine 3 games. BothGameMaker Studio andUnity provide a two-dimensional particle system often used byindie, hobbyist, or student game developers, though it cannot be imported into other engines. Many other solutions also exist, and particle systems are frequently written from scratch if non-standard effects or behaviors are desired.