Fluid simulation is a technique to generate realistic simulations of fluids such as water, ocean and smoke. It can be performed with different levels of complexity, and is usually depends on approximate solutions to the Euler equation or Naiver-Stokes equations. It is a commonly used technique in game and film industry.
Particle Based Simulation
Particle Based Simulation is a traditional way to simulate the fluids by simulating the properties of fluid particles by applying constraints and forces. The method derives from the Naiver-Stokes equations and uses its simplified form to calculate.
Smoothed-Particle Hydrodynamics (SPH)
The SPH method is a commonly used computational method in real-time applications featuring kernel function for interaction and calculation. It is a meshfree method and can be easily ported to the GPU. There are a lot of existing SPH implementations and improved methods for reference.
Position Based Fluids (PBF)
The PBF method is a more improved method inheriting the basic idea from the SPH method as well as integrating Position Based Dynamics for constraint iteration. The algorithm is more simple than the SPH method and is performing better on GPU. It is integrated into NVIDIA's Flow library as well.
FLIP fluid is an improved version of PIC (particle-in-cell) method which is now widely used in film and visual effects industry. Mainstream digital content creation software (Maya, Houdini, Blender, etc.) all provides support for it to create realistic fluid simulation.
Because of the huge scale of the ocean, particle-based methods are not widely used to simulation a whole layer of ocean (sometimes it will be used in a small region to interact with objects). Usually, ocean simulation is achieved with wave functions.
The Gerstner Wave function was developed for ocean modeling and is now also used in real-time simulation. It describes a progressive wave of permanent form on the surface of an incompressible fluid of infinite depth. The wave function can be expressed below:
The FFT (Fast Fourier Transform) Wave function was proposed in "Simulating Ocean Water" by Jerry Tessendorf, and its idea is to layer many waves together to create an effective simulation. It is a widely used method in films and games and is supported by digital content creation software as well.
Practices in Animation
In Sirena, we introduce fluid simulation for the ocean in above-the-ocean shots. Please check Ocean Effects in Sirena for more detail.