Velocity-Based Monte Carlo Fluids

ACM SIGGRAPH North America 2024 (Conference Papers)

Ryusuke Sugimoto, Christopher Batty, and Toshiya Hachisuka

University of Waterloo, Canada

Abstract

We present a velocity-based Monte Carlo fluid solver that overcomes the limitations of its existing vorticity-based counterpart. Because the velocity-based formulation is more commonly used in graphics, our Monte Carlo solver can be readily extended with various techniques from the fluid simulation literature. We derive our method by solving the Navier-Stokes equations via operator splitting and designing a pointwise Monte Carlo estimator for each substep. We reformulate the projection and diffusion steps as integration problems based on the recently introduced walk-on-boundary technique [Sugimoto et al. 2023]. We transform the volume integral arising from the source term of the pressure Poisson equation into a form more amenable to practical numerical evaluation. Our resulting velocity-based formulation allows for the proper simulation of scenes that the prior vorticity-based Monte Carlo method [Rioux-Lavoie and Sugimoto et al. 2022] either simulates incorrectly or cannot support. We demonstrate that our method can easily incorporate advancements drawn from conventional non-Monte Carlo methods by showing how one can straightforwardly add buoyancy effects, divergence control capabilities, and numerical dissipation reduction methods, such as advection-reflection and PIC/FLIP methods.


Video

  • Supplementary Video
  • Presentation Video - Coming Soon!

Publication

This work will presented at ACM SIGGRAPH North America 2024.
@inproceedings{Sugimoto:2024:VelMCFluids,
    author = {Sugimoto, Ryusuke and Batty, Christopher and Hachisuka, Toshiya},
    title = {Velocity-Based Monte Carlo Fluids},
    year = {2024},
    isbn = {979840070525},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    doi = {10.1145/3641519.3657405},
    booktitle = {ACM SIGGRAPH 2024 Conference Proceedings},
    numpages = {11},
    location = {Denver, CO, USA},
    series = {SIGGRAPH '24}
}