Realistic Fire Simulation (Team 35)
You can access our proposal and milestone with the two links below:
You can access our final project video at the link below:
1. Abstract
In this project, we created a visually realistic fire animation by applying a shader to a smoke simulation. Our project was made entirely using Blender. We used the Mantaflow fluid simulation framework (which is built into Blender) to animate smoke and Blender shader nodes to implement the shader. Our simulation is mostly physically-based, and as a result the fire in our animation interacts with objects in a realistic way.
2. Technical Approach
2.1. Particle Effects
We added a particle effect that shoots particles outwards. The particle effect determines the shape and direction of the smoke simulation.

2.2. Smoke Simulation
We added a smoke animation using the Mantaflow fluid simulation framework.

2.3. Shading
We shaded the smoke simulation using Blender shader nodes.

Here's what the final shader graph looks like. The characteristic fire color is largely implemented with the blackbody node visible at the bottom.

2.4. Materials
To make the animation visually rich, we added other objects to the scene and applied materials.

Both the shader and the smoke simulation rely on physical equations. In particular, the shader solves for black-body radiation and the smoke simulation solves the Naiver-Stokes equation. Our simulation is not entirely physically-based. Features like visual adaptation, refraction, and the spectral properties of soot are ignored. By excluding these features, we were able to implement a realistic fire animation in a limited amount of time.
2.5. Key Differences and Unique Decisions
Our animation is distinct from reference animations in the following ways:
- We modify parameters in the shader so the fire contains more contrast.
- We modify physical parameters of the smoke simulation so that the fire spreads out more.
- We add auxiliary models (e.g., the dragon).
- We apply metallic materials to surfaces.
2.6. Problems and Solutions
We encountered a couple problems:
- Our renders appeared visibly different than the renders in our references, even when using the same configuration. We realized the problem only after several attempts: the Mantaflow framework in the most recent version of Blender behaves differently than the Mantaflow framework in previous versions on Blender.
- Our computers failed to render the animation in a reasonable amount of time.
We tackled the first problem by:
- Varying physical parameters (especially the voracity of the fluid simulation)
- Downgrading our Blender version.
We tackled the second problem by:
- Reducing the resolution of renders.
- Reducing the number of resolution divisions. The resolution divisions parameter controls the size of voxels in a fluid simulation. Because we decreased the number of resolution divisions, you can see relatively large voxels in the renders below.
2.7. Lessons Learned
Some of the lessons we learned are:
- Physically-based fluid simulations are extremely difficult to correctly and efficiently implement. Fortunately, we don't need to implement fluid simulation from scratch; many frameworks like Mantaflow implement Navier-Stokes solvers.
- Abstractions like Blender's shader nodes enable artists to quickly build complex shaders.
- Blender has a steep learning curve! None of us knew Blender going into this project, so we struggled a lot at the beginning. Fortunately, we feel that we're proficient at Blender now.
3. Results
Below are renders of some of our favorite scenes.
Dragon with flames and metallic floor
Explosion with fire
Closer camera angle
Alternate perspective
4. References
-
Blender Tutorial - Mantaflow Fire Simulation
-
Blender Tutorial: Smoke and Fire Simulation With Mantaflow
-
Make a Realistic Flamethrower in Blender - Iridesium
-
Physically Based Modeling and Animation of Fire
-
Physically-Based Realistic Fire Rendering
5. Contributions from each Team Member
We worked together in the same room for most parts of the project. Therefore, everyone contributed to all parts more-or-less equally.
To highlight some specific contributions:
-
Justin lead efforts to write the smoke shader.
-
Balaji spearheaded the implementation of the 2D fire animation used for the milestone.
-
Michael tuned physics parameters for the smoke simulation.