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:
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.