  Liquid simulations for computer animation often avoid simulating the air
phase to reduce computational costs and ensure good conditioning of the linear
systems required to enforce incompressibility. However, this free surface
assumption leads to an inability to realistically treat bubbles: submerged gaps
in the liquid are interpreted as empty voids that immediately collapse. To
address this shortcoming, we present an efficient, practical, and conceptually
simple approach to augment free surface flows with negligible density bubbles.
Our method adds a new constraint to each disconnected air region that
guarantees zero net flux across its entire surface, and requires neither
simulating both phases nor reformulating into stream function variables.
Implementation of the method requires only minor modifications to the pressure
solve of a standard grid-based fluid solver, and yields linear systems that
remain sparse and symmetric positive definite. In our evaluations, solving the
modified pressure projection system took no more than 10% longer than the
corresponding free surface solve. We demonstrate the method's effectiveness and
flexibility by incorporating it into commercial fluid animation software and
using it to generate a variety of dynamic bubble scenarios showcasing glugging
effects, viscous and inviscid bubbles, interactions with irregularly-shaped and
moving solid boundaries, and surface tension effects.
