Our Fire and Smoke simulation was the result of a practical course "Physically-Based Animations and Special Effects" at the computer graphics group at RWTH Aachen University at which I took part in 2009. During one semester, we implemented a technique similar to the one described in the paper "Animating Suspended Particle Explosions" by Feldman et. al.: A Particle System Suspended In and Interacting with a Fluid Simulation.
Cross-Platform Implementation
The program and the GUI were implemented using the Qt Framework. By using qmake, the program can be compiled and executed under Windows and Linux.
Particle Rendering
One challenge during the development of our demo, was to create a reasonable visual impression for the "burning" particles. Our idea was to render the burning particles as billboards where shape of the particles can be controlled using an appropriate alpha texture.
The billboards are rendered with special textures defining their current color as the particles deplete and end up as smoke. This also yields an additional degree of freedom for graphic artists:
Deep Shadow Map
Our implementation uses a 3D shadow map of variable resolution for the calculation of volumetric shadow and light effects. Using this approach, we are able to render the glow effect of the burning particles, as well as self shadowing of the particle cloud and shadows on the ground.
For more information, please also have a look at our final presentation slides.
Results
The following videos show some of our results:
Single Burst
- grid: 20 x 30 x 20
- 85.000 particles total
- deep shadow map to calculate self occlusion
Flamethrower
- grid: 40 x 30 x 20
- 2000 new particles per step
- CPU implementation, rendered with 2 fps
ACG Logo
- 50.000 particles total
- random wind field