The Design of an API for Particle Systems

Simulation of dynamic particle systems has been used in computer animation for several years and has more recently been used in real time simulation and video games. Much research has explored ways to compute and render particle systems, but relatively little research has discussed suitable application programmer interfaces to the particle systems. What constructs and abstractions are useful for specifying particle effects? How can the API be made general so that unforeseen effects can be created? What set of functionality should be provided that can be implemented on either the application CPU or within specialized graphics hardware? The result of our research is the Particle System Application Programmer Interface (API). This is a C++ function library specification that allows applications to simulate the dynamics of particles. The API was created for easily adding a variety of particle-based effects to interactive graphics applications such as games and virtual environments. The API is also well suited for non-interactive graphics systems such as modeling and rendering packages for computer animation. It is not intended for scientific simulation, although principles of Newtonian physics have been used to implement the particle dynamics where applicable, and the accuracy of the numeric integration is scalable.