
Interactive Real-time Smoke Simulation with Modifiable Parameters, Object Collisions, and Attractors
Alexander Liang, Christina Neumann, Yi Mu, Yueheng Zhang
Problem Description
We would like to develop a real-time, 2D smoke simulator that allows the user to create objects to produce visually appealing smoke. This will be done by allowing the user to create objects or points that can create, repel, or attract smoke. This problem will be challenging because there are a lot of variables to account for with multiple user-placed objects, and smoke simulation can be computationally demanding.
Goals and Deliverables
Goals
We hope to deliver the following:
- Develop an interactive real-time smoke simulation with modifiable parameters and object collisions.
- Implement adjustable parameters, including gravity, pressure, density, and divergence, that directly affect the simulation.
- Incorporate object collisions with both simple and complex surfaces, such as objects/points that can emit directional or omni-directional force and can produce or attract smoke, allowing for drag-and-drop functionality to produce visually appealing smoke swirls.
- Validate that our smoke simulation performs correctly by comparing it to real-world videos.
- Perform within an expected level of responsiveness and reasonable frame rates
Inspirations

We would like to achieve the effects shown above but in 2D and in real-time.
Deliverables
Upon the completion of this project, the following deliverables are expected:
- A functional, real-time smoke simulation program with adjustable parameters.
- A graphical user interface for modifying simulation parameters and interacting with the environment.
- A final project report summarizing the goals, methods, results, and conclusions.
Stretch Goals
These are the goals that we hope to accomplish, if time permits.
- Multiple smoke generators/attractors, multiple objects
- Draggable objects that interact with static smoke generators
- Arbitrary object creation (drawing on the interface) and interaction with static smoke generators
Schedule
Week 1
- Conduct research on smoke simulation algorithms and techniques.
- Develop a basic understanding of the physics behind smoke behavior.
- Set up the development environment and required libraries.
- Begin implementing a basic smoke simulation prototype.
Week 2
- Add adjustable parameters, such as gravity, pressure, density, and divergence, to the simulation.
- Implement object collision functionality for simple surfaces (planes).
- Begin implementing more complex object functionality like smoke attraction, smoke production, and force emission.
Week 3
- Complete implementation of complex object collision functionality.
- Add drag-and-drop functionality to the objects in the environment.
- Begin designing the graphical user interface.
Week 4
- Finalize the graphical user interface.
- Conduct thorough testing and debugging of the simulation.
- Prepare the final project report and the presentation slides.
Resources / References
Key resources and references for this project include:
- Bridson, R., Müller-Fischer, M., & Fedkiw, R. (2007). Fluid simulation: Siggraph 2007 course notes. ACM SIGGRAPH.
- Foster, N., & Metaxas, D. (1996). Realistic animation of liquids. Graphical Models and Image Processing, 58(5), 471-483.
- Harris, M. J. (2003). Real-time cloud simulation and rendering. Ph.D. Thesis, University of North Carolina at Chapel Hill.
- Stam, J. (1999). Stable fluids. Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques, 121-128.