We present a comprehensive methodology for realistically animating liquid phenomena. Our approach unifies existing computer graphics techniques for simulating fluids and extends them by incorporating more complex behavior. It is based on the Navier–Stokes equations which couple momentum and mass conservation to completely describe fluid motion. Our starting point is an environment containing an arbitrary distribution of fluid, and submerged or semisubmerged obstacles. Velocity and pressure are defined everywhere within this environment and updated using a set of finite difference expressions. The resulting vector and scalar fields are used to drive a height field equation representing the liquid surface. The nature of the coupling between obstacles in the environment and free variables allows for the simulation of a wide range of effects that were not possible with previous computer graphics fluid models. Wave effects such as reflection, refraction, and diffraction, as well as rotational effects such as eddies, vorticity, and splashing are a natural consequence of solving the system. In addition, the Lagrange equations of motion are used to place buoyant dynamic objects into a scene and track the position of spray and foam during the animation process. Typical disadvantages to dynamic simulations such as poor scalability and lack of control are addressed by assuming that stationary obstacles align with grid cells during the finite difference discretization, and by appending terms to the Navier–Stokes equations to include forcing functions. Free surfaces in our system are represented as either a collection of massless particles in 2D, or a height field which is suitable for many of the water rendering algorithms presented by researchers in recent years.