Burning stuff with Blenders’ new sim nodes

This summer, the Blender Foundation finally released the long-awaited Blender 3.6. Personally, I had been eagerly anticipating it because it introduced simulation nodes, which I couldn't wait to play around with. I'm not a big fan of experimenting with beta versions due to missing features or bugs, so I waited for the official release, and now it's finally here.

I decided to do something that other artists hadn't done before. After some thought, I came up with the idea of simulating a burning surface with realistic physical properties, or at least something close to real-world behavior. So, I dedicated my weekend to this project and spent the whole Saturday working on it. The result is what you see on the screen.

I started by experimenting with the concept of heat propagation on the surface. The initial experiments aimed to make one surface, representing a hot object, heat up another surface, and as the heat spread, once it crossed a certain threshold, the second surface would catch fire, propagating the burning along its surface in a chain reaction. It was the most fun part.

Next, once this concept was implemented, I needed to turn the heated surface into a source of fire particles that, in turn, would continue to heat other surfaces or interact with them. To achieve this, I built a simple particle system from scratch, where each particle, as it passed by a certain surface, would heat it up, effectively adding temperature to the overall surface temperature

Once a specific temperature threshold was reached, the surface would emit the same fire particles. So, any surface could become a source of fire, affecting neighboring surfaces. To implement this concept, I had to define various properties, such as surface density, as different materials like metal and paper heat up at different rates.

Writing attributes to geometry being burned

I also added a “fuel” property, determining how much this surface could burn. In other words, let's say a wooden surface had thousands of fuel units, and as it burned and emitted fire particles, this fuel was consumed. Once the fuel was depleted, the fire ceased so that the surface wouldn't burn indefinitely. Moreover, for added realism, I incorporated an additional particle system to represent smoke. When the surface surpassed a certain temperature threshold, it started emitting smoke. As the surface caught fire, the smoke dissipated, and the surface emitted fire particles. Then, when the surface cooled down, it emitted smoke again until it reached a specific temperature. Again, to achieve this effect, I used a “cool-down” property.

Particle system nodetree

Heating up, dissipate and cooldown

Finally some shaders were set up to make the whole thing visually appealing. Particle Age properties were used to drive fire tint and transparency. Also, fuel amount were used as a factor to mix normal wood and burned wood shaders, so that the surface with less fuel remaining considered burned.

Dynamic wood shader

Overall, as expected, Blender proved to be a highly promising tool for implementing various simulations. I am confident that future releases will rapidly improve these capabilities. In the upcoming 4.0 release, highly anticipated nodes for parallel loops will be added, further expanding the system's possibilities.

Despite the simulation system still being in its early stages, it already allows for some really cool stuff. So, as they say, let's wait and see.

Leave a Reply

Your email address will not be published.