cs184-final-project

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:

  1. We modify parameters in the shader so the fire contains more contrast.
  2. We modify physical parameters of the smoke simulation so that the fire spreads out more.
  3. We add auxiliary models (e.g., the dragon).
  4. We apply metallic materials to surfaces.

2.6. Problems and Solutions

We encountered a couple problems:

We tackled the first problem by:

  1. Varying physical parameters (especially the voracity of the fluid simulation)
  2. Downgrading our Blender version.

We tackled the second problem by:

  1. Reducing the resolution of renders.
  2. 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:

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

  1. Blender Tutorial - Mantaflow Fire Simulation

  2. Blender Tutorial: Smoke and Fire Simulation With Mantaflow

  3. Make a Realistic Flamethrower in Blender - Iridesium

  4. Physically Based Modeling and Animation of Fire

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