click here to go to my homepage
Shannon Thomas Greenwood - Better with Bubbles!
We published a paper based on my thesis work! click here for the paper in pdf form(6.2 Mb)
S. Greenwood, D. House. Better with Bubbles: Enhancing the Visual Realism of Simulated Fluid, Proceedings of ACM SIGGRAPH/Eurographics Symposium on Computer Animation 2004
All of the simulation and rendering is coded by me in C++.
you can view the above movie with this link(6 Mb)
you can view the above movie with this link(6 Mb)
also you can the same movie without bubbles if you click here (6 Mb)
Click on this link to view a copy of my thesis: The Incorporation of Bubbles into a Computer Graphics Fluid Simulation(pdf 1.5 Mb). It has more details than the above paper.
Summary:
1. I implemented the fluid simulation described [1]. This uses a stable solution to the navier stokes equations for fluid velocities. The fluid surface is represented by a level set with marker particles on both sides of the fluid surface.
2. Marker particles that are too far escaped from the outside to the inside are used to create bubbles.
3. I extended foam the simulation methods described in [2] to handle fluid situations in simulation and rendering
Primary References:
1. ENRIGHT, D., MARSCHNER, S. and FEDKIW, R. 2002. Animation and Rendering of Complex Water Surfaces. In Proceedings of ACM SIGGRAPH 2002, 736-734. (pdf can be found a Ron Fedkiw's website)
2. KÜCK, H. VOGELGSANG, C., and GREINER, G. 2002. Simulation and Rendering
of Liquid Foams. In Proceedings of Graphics Interface 2002, 81-88. (free pdf
can be found at Graphics
Interface 2002 website)
Misc. images:
| click an image to view higher resolution image... and yeah, I know I didn't implement aliasing from specular reflections. |
![]()
Arbitrary spherical objects are rendered to appear as contiguous foam. Simulated
fresnel reflections on one bubbles and then two bubbles. |
![]()
Ambient term used when three bubbles overlap. |
![]()
For small clusters, and ambient term is unrealistic, so another method was
devised. |
|
|
Debugging:
· For rapid prototyping of parameters (for 3d sim. seen in 1), I used
2D tests.
· I used OpenGL to visualize marker particles, fluid velocities, and
the level set’s signed distance function for debugging purposes.
normal |
cell types |
velocities |
particles |
level set |
Click here or on an image to see higher resolution images
this movie uses the divx codec
Particle - Level Set Testing:
I tested my level set by simply moving a 2 dimensional disk with a uniform velocity.
![]() |
![]() |
![]() |
![]() |
| no reinitialization, no particle correction | with reinitialization, no particle correction | no reinitialization, with particle correction | with reinitialization and particle correction |
click on each images to see a movie of what happens in each case... each movie uses the divx codec and is about 3 Mb. The signed distance function is only maintained locally to the surface in this test.
Without reinitialization and particle correction the level set gets so damaged that it is no longer effected by the velocities. With only reinitialization, the level set loses volume until the entire disk disappears. With only particles, the particles keep the level set in roughly the correct shape, but it is not smooth... or a signed distance function. With both corrective measures, the disk moves correctly across the screen.