Advection-projection methods for fluid animation are widely appreciated
for their stability and efficiency. However, the projection step dissipates
energy from the system, leading to artificial viscosity and suppression of
small-scale details. We propose an alternative approach for detail-preserving
fluid animation that is surprisingly simple and effective. We replace the
energy-dissipating projection operator applied at the end of a simulation
step by an energy-preserving reflection operator applied at mid-step.We show
that doing so leads to two orders of magnitude reduction in energy loss,
which in turn yields vastly improved detail-preservation. We evaluate our
reflection solver on a set of 2D and 3D numerical experiments and show
that it compares favorably to state-of-the-art methods. Finally, our method
integrates seamlessly with existing projection-advection solvers and requires
very little additional implementation.
Plume.py: Example source code using mantaflow (Description of how to run it is at the beginning of the file)
Acknowledgments
We thank the anonymous reviewers for their constructive and
thoughtful feedback. This work was supported by the Discovery
Grants Program of the Natural Sciences and Engineering Research
Council of Canada (NSERC).