Introduction

My name is Lucas Veber, I’m 29 and I am currently working as a freelance 3D artist for various studios and individuals. I’ve previously worked for movie productions as an animator (Minions, Despicable Me 3, Secret Life of Pets). I obviously love animating and rigging, and lately, I’ve been spending more and more time on technical things such as python addons development for rigging, and game development with Unity. Also, I’ve worked on fluid simulations with Realflow for a short student film (Contre-Temps), and with Blender for a Vietnamese animation studio. Later, as a personal project, I decided to create a beach scene with breaking waves in Blender.

Water Simulations

There are two types of fluid simulations in Blender: SPH (Smooth Particles Hydrodynamics) and LBM (Lattice Boltzmann Methods). While both tools are very interesting, I will only talk about the second one here, which fits better for a large-scale simulation since it’s possible to generate additional splash/foam particles, while the first one is used more for small-scale simulations, such as filling a glass of water.

It works this way: first, a “Domain” object must be added in the scene. This is generally a cube that must surround the whole simulation. It’s used to define the simulation resolution, and all global parameters (viscosity, scale, etc.) Then, the fluid itself can be added from any mesh by flagging it as a “Fluid” one, or it can be generated from an “Inflow” object, that constantly adds new fluid particles in the scene (such as water pouring out from a tap). There are also many other object types to remove fluid (Outflow), force fields an so on.

LBM fluids (Blender internal, oldest method):

Specs: CPU: Intel i7 2600, 8 threads GPU: GTX 980

Sim: Fluid: 400 frames simulated, at a resolution of 697, 60 sec/frame, about 7 hours Splash particles: ~300K

Rendering: 150 frames rendered on GPU, fluid passes (diffuse, glossy, vector): ~35 sec/frame Splash pass: ~25 sec/frame