|dc.description.abstract||This work focuses on the simulation of fluids as they transition between a solid and a liquid
state, and as they interact with rigid bodies in a realistic fashion. There is an underlying theme to
my work that I did not recognize until I examined my body of research as a whole. The equations
of motion that are generally considered appropriate only for liquids or gas can also be used to
model solids. Without adding extra constraints, one can model a solid simply as a fluid with a high
viscosity. Admittedly, this representation will only get you so far, but this simple representation can
create some very nice animations of objects that start as solids, and then melt into liquid over time.
Another way to represent solids with the fluid equations is to add extra constraints to the equations.
I use this representation in the parts of this work that focus on the two-way coupling of liquids with
rigid bodies. The coupling affects both how the liquid moves the rigid bodies, and how the rigid
bodies in turn affect the motion of the fluid. There are three components that are needed to allow
solids and fluids to interact: a rigid body solver, a fluid solver, and a mechanism for the coupling of
the two solvers.
The fluid solver used in this work was presented in . This Melting and Flowing solver is
a fast and stable system for animating materials that melt, flow, and solidify. Examples of realworld
materials that exhibit these phenomena include melting candles, lava flow, the hardening of
cement, icicle formation, and limestone deposition. Key to this fluid solver is the idea that we can
plausibly simulate such phenomena by simply varying the viscosity inside a standard fluid solver,
treating solid and nearly-solid materials as very high viscosity fluids. The computational method
modifies the Marker-And-Cell algorithm  in order to rapidly simulate fluids with variable and
arbitrarily high viscosity. The modifications allow the viscosity of the material to change in space
and time according to variation in temperature, water content, or any other spatial variable. This
in turn allows different locations in the same continuous material to exhibit states ranging from the
absolute rigidity or slight bending of hardened wax to the splashing and sloshing of water.
The coupling that ties together the rigid body and fluid solvers was presented in , and is
known as the Rigid Fluid method. It is a technique for animating the interplay between rigid bodies
and viscous incompressible fluid with free surfaces. Distributed Lagrange multipliers are used to
ensure two-way coupling that generates realistic motion for both the solid objects and the fluid as
they interact with one another. The rigid fluid method is so named because the simulator treats
the rigid objects as if they were made of fluid. The rigidity of such an object is maintained by
identifying the region of the velocity field that is inside the object and constraining those velocities
to be rigid body motion. The rigid fluid method is straightforward to implement, incurs very little
computational overhead, and can be added as a bridge between current fluid simulators and rigid
body solvers. Many solid objects of different densities (e.g., wood or lead) can be combined in the
The rigid body solver used in this work is the impulse based solver, with shock propagation
introduced by Guendelman et al. in . The rigid body solver allows for collisions ranging from
completely elastic, where an object can bounce around forever without loss of energy, to completely
inelastic where all energy is spent in the collision. Static and dynamic frictional forces are also
incorporated. The details of this rigid body solver will not be discussed, but the small changes
needed to couple this solver to interact with fluid will be.
When simulating fluids, the fluid-air interface (free surface) is an important part of the simulation.
In , the free surface is modelled by a set of marker particles, and after running a simulation
we create detailed polygonal models of the fluid by splatting particles into a volumetric grid and
then render these models using ray tracing with sub-surface scattering. In , I model the free
surface with a particle level set technique . The surface is then rendered by first extracting a triangulated
surface from the level set and then ray tracing that surface with the Persistence of Vision