A Practical Method for High-Resolution Embedded Liquid Surfaces

Ryan Goldade Christopher Batty Chris Wojtan
University of Waterloo University of Waterloo IST Austria

Computer Graphics Forum (Eurographics 2016)


Combining high-resolution level set surface tracking with lower resolution physics is an inexpensive method for achieving highly detailed liquid animations. Unfortunately, the inherent resolution mismatch introduces several types of disturbing visual artifacts. We identify the primary sources of these artifacts and present simple, efficient, and practical solutions to address them. First, we propose an unconditionally stable filtering method that selectively removes sub-grid surface artifacts not seen by the fluid physics, while preserving fine detail in dynamic splashing regions. It provides comparable results to recent error-correction techniques at lower cost, without substepping, and with better scaling behavior. Second, we show how a modified narrow-band scheme can ensure accurate free surface boundary conditions in the presence of large resolution mismatches. Our scheme preserves the efficiency of the narrow-band methodology, while eliminating objectionable stairstep artifacts observed in prior work. Third, we demonstrate that the use of linear interpolation of velocity during advection of the high-resolution level set surface is responsible for visible grid-aligned kinks; we therefore advocate higher-order velocity interpolation, and show that it dramatically reduces this artifact. While these three contributions are orthogonal, our results demonstrate that taken together they efficiently address the dominant sources of visual artifacts arising with high-resolution embedded liquid surfaces; the proposed approach offers improved visual quality, a straightforward implementation, and substantially greater scalability than competing methods.




    author = {Ryan Goldade and Christopher Batty and Chris Wojtan},
    title = {A Practical Method for High-Resolution Embedded Liquid Surfaces},
    journal = {Computer Graphics Forum (Proc. Eurographics 2016)},
    year = {2016}

This research was supported by NSERC (RGPIN-04360-2014), ERC (638176), and IST Austria. We are thankful to Morten Bojsen-Hansen for providing us with his code and answering questions, and Side Effects Software for their generous software donation.