Project: Simulating ocean water
For the final project in the course DH2323 - Computer Graphics and Interaction I will primarily put my focus into rendering water and simulating deep water oceans.
Background
Simulating water is a complex topic as the behaviour of water depends on many internally related variables. How deep is the water? How does the wind blow, and with which speed? Are there other objects in the water? These questions make the topic of rendering water complicated, but are also what makes it particularly interesting.
In games and 3D simulations however, the water itself is often not relevant, but what actually matters is the shape of the surface. A water surface can be described as a complex set of waves of different frequencies, and such a surface can be described using Discrete Fourier Transforms (DFT) [1]. Particularly, we can describe a height field over all points of the surface using inverse FFT, given the spatial and temporal frequencies of water; that is how far the water travels per second and the number of periods the wave goes per second.
Implementation
To build an interesting looking scene of moving water I will implement the following rendering techniques:
- Height field using inverse FFT.
- Normal map for water reflection and refraction
- Cubemap for sampling sky-environment.
To get a realistic and interactive environment, I may have to perform the heavy calculations on the GPU using:
- CUDA (cuFFT)
Limitations:
- No interaction between water and objects other than the effect of objects reflected in the water
- No interaction between water and water. No “splashes” or similar particle effects.
If time allows:
- Generate LOD height maps depending on distance to enable larger oceans
- Seamless connections between patches of water
Final application
Ultimately, I want to be able to render water and interactively tweak the settings/properties of light, wind and waves in the scene to see how the environment is reflected and refracted in the living water.
References
1. Jerry Tessendorf, ”Simulating Ocean Water,” Proc. SIGGRAPH Simulating Nature: Realistic and Interactive Techniques Course Notes, 2001.
2. Jerry Tessendorf, “Simulating Ocean surfaces”, Slides: http://evasion.imag.fr/~Fabrice.Neyret/images/fluids-nuages/waves/Jonathan/articlesCG/waterslides2001.pdf, Received 2021-04-15
3. Robert Golias and Lasse Staff Jensen, “Deep Water Animation and Rendering” https://www.gamasutra.com/view/feature/3036/deep_water_animation_and_rendering.php?print=1, Received 2021-04-15
4. Matthew Quek, “CUDA Optimized Ocean Simulation”, https://matthewquek.com/portfolio-item/cuda-optimized-ocean-simulation/ Received: 2021-04-15
Kommentarer
Skicka en kommentar