Aline Normoyle
Home   Publications   Projects   About  

This project implements smoke as an incompressible fluid following the techniques described in Robert Bridson and Mattias Muller-Fischer's SIGGRAPH notes. If you are interested in making your own smoke simulation, check out my fluid tutorial and basecode which have been used in our physically based animation course. 


Here are some animations produced by the simulation:

Descriptions, clockwise:

  • Colors: Multiple smoke jets spew colored gas into the bounding grid.
  • Hot vs. Cold: Hot, orange gas rises from the floor while cold, blue gas falls from the ceiling
  • Overview: This animation shows how the velocity and temperature fields corresponds to the smoke density

Implementation Notes

The smoke in this assignment is constrained within a closed box. The velocities are stored at each face using a MAC Grid. After advecting velocity, the simulation advects moke density, temperature, and color. Bouyancy and vorticity confinement forces help give the smoke more character. Grid-aligned solids can be placed within the bounding box. The smoke is rendered with axis-aligned sheets (as explained in "Visual Simulation of Smoke") having twice the resolution of the grid. Also cubic interpolation, rather than tri-linear interpolation, is used to store and access the density and temperature values, helping to create more detail.