ACM Transactions on Graphics (SIGGRAPH 2023)
This paper introduces a novel method for simulating large bodies of water as a height field. At the start of each time step, we partition the waves into a bulk flow (which approximately satisfies the assumptions of the shallow water equations) and surface waves (which approximately satisfy the assumptions of Airy wave theory). We then solve the two wave regimes separately using appropriate state-of-the-art techniques, and re-combine the resulting wave velocities at the end of each step. This strategy leads to the first heightfield wave model capable of simulating complex interactions between both deep and shallow water effects, like the waves from a boat wake sloshing up onto a beach, or a dam break producing wave interference patterns and eddies. We also analyze the numerical dispersion created by our method and derive an exact correction factor for waves at a constant water depth, giving us a numerically perfect re-creation of theoretical water wave dispersion patterns.
Errata: We fixed several errors in the paper after publication and would like to acknowledge Tobias van den Hurk for bringing them to our attention:
@article{10.1145/3592098,
author = {Jeschke, Stefan and Wojtan, Chris},
title = {Generalizing Shallow Water Simulations with Dispersive Surface Waves},
year = {2023},
issue_date = {August 2023},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {42},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3592098},
doi = {10.1145/3592098},
month = {jul},
articleno = {83},
numpages = {12},
keywords = {real-time animation, natural phenomena, water animation}
}
We thank Georg Sperl for helping with early research for this paper, Mickael Ly and Yi-Lu Chen for proofreading, and members of the ISTA Visual Computing Group for general feedback. This project was funded in part by the European Research Council (ERC Consolidator Grant 101045083 CoDiNA).
The motorboat and sailboat were modeled by Sergei and the palmtrees by YadroGames. The environment map was created by Emil Persson.