This work focuses on the simulation of fluids as they transition between a solid and a liquidstate, and as they interact with rigid bodies in a realistic fashion. There is an underlying theme tomy work that I did not recognize until I examined my body of research as a whole. The equationsof motion that are generally considered appropriate only for liquids or gas can also be used tomodel solids. Without adding extra constraints, one can model a solid simply as a fluid with a highviscosity. Admittedly, this representation will only get you so far, but this simple representation cancreate 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 withrigid bodies. The coupling affects both how the liquid moves the rigid bodies, and how the rigidbodies in turn affect the motion of the fluid. There are three components that are needed to allowsolids and fluids to interact: a rigid body solver, a fluid solver, and a mechanism for the coupling ofthe two solvers.The fluid solver used in this work was presented in [8]. This Melting and Flowing solver isa fast and stable system for animating materials that melt, flow, and solidify. Examples of realworldmaterials that exhibit these phenomena include melting candles, lava flow, the hardening ofcement, icicle formation, and limestone deposition. Key to this fluid solver is the idea that we canplausibly 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 methodmodifies the Marker-And-Cell algorithm [99] in order to rapidly simulate fluids with variable andarbitrarily high viscosity. The modifications allow the viscosity of the material to change in spaceand time according to variation in temperature, water content, or any other spatial variable. Thisin turn allows different locations in the same continuous material to exhibit states ranging from theabsolute 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 [7], and isknown as the Rigid Fluid method. It is a technique for animating the interplay between rigid bodiesand viscous incompressible fluid with free surfaces. Distributed Lagrange multipliers are used toensure two-way coupling that generates realistic motion for both the solid objects and the fluid asthey interact with one another. The rigid fluid method is so named because the simulator treatsthe rigid objects as if they were made of fluid. The rigidity of such an object is maintained byidentifying the region of the velocity field that is inside the object and constraining those velocitiesto be rigid body motion. The rigid fluid method is straightforward to implement, incurs very littlecomputational overhead, and can be added as a bridge between current fluid simulators and rigidbody solvers. Many solid objects of different densities (e.g., wood or lead) can be combined in thesame animation.The rigid body solver used in this work is the impulse based solver, with shock propagationintroduced by Guendelman et al. in [36]. The rigid body solver allows for collisions ranging fromcompletely elastic, where an object can bounce around forever without loss of energy, to completelyinelastic where all energy is spent in the collision. Static and dynamic frictional forces are alsoincorporated. The details of this rigid body solver will not be discussed, but the small changesneeded 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 [8], the free surface is modelled by a set of marker particles, and after running a simulationwe create detailed polygonal models of the fluid by splatting particles into a volumetric grid andthen render these models using ray tracing with sub-surface scattering. In [7], I model the freesurface with a particle level set technique [14]. The surface is then rendered by first extracting a triangulatedsurface from the level set and then ray tracing that surface with the Persistence of VisionRaytracer (http://povray.org).