Fluid simulation is an increasingly popular tool in computer graphics for generating realistic animations of water, smoke, explosions, and related phenomena. Given some input configuration of fluid and scene geometry, a fluid simulator evolves the motion of the fluid forward in time, making use of the (possibly heavily simplified) Navier-Stokes equations which describe the physics of fluids. In computer graphics, such simulations range in complexity from extremely time-consuming high quality animations for film & visual effects, to simple real-time particle systems used in modern games.
There are several competing techniques for liquid simulation with a variety of trade-offs. The most common are Eulerian grid-based methods, smoothed particle hydrodynamics (SPH) methods, vorticity-based methods, and Lattice Boltzmann methods. These methods originated in the computational fluid dynamics community, and have steadily been adopted by graphics practitioners. The key difference in the graphics setting is that the results need only be plausible. That is, if a human observer is unable to identify by inspection whether a given animation is physically correct, the results are sufficient, whereas in physics, engineering, or mathematics, more rigorous error metrics are necessary.
In computer graphics, the earliest attempts to solve the Navier-Stokes equations in full 3D came in 1996, by Nick Foster and Dimitris Metaxas, who based their work primarily on a classic CFD paper from 1965 by Harlow & Welch. Prior to this, many methods were built on ad-hoc particle systems, lower dimensional techniques such as 2D shallow water models, and semi-random turbulent noise fields. In 1999, Jos Stam published the so-called Stable Fluids method at SIGGRAPH, which exploited a semi-Lagrangian advection technique and implicit integration of viscosity to provide unconditionally stable behaviour. This allowed for much larger time steps and in general, faster simulations. This general technique was extended by Fedkiw & collaborators to handle complex 3d water simulations using the level set method in papers in 2001 and 2002.
Several options are available for fluid simulation in off-the-shelf 3D packages. A popular open source package is Blender 3D, with a stable Lattice Boltzmann method implemented, in addition to two distinct SPH approaches. Another option is Glu3d, a plugin for 3ds Max very similar to Blender's fluid capability. Other options are RealFlow, FumeFx and AfterBurn for Max, Dynamite for LightWave 3D, ICE SPH Fluids and Mootzoid's emFluid4 for Softimage; Turbulence.4D, PhyFluids3D, DPIT for Cinema 4D. Houdini and Maya support fluids natively however plugins can be bought to improve the simulations.