In this third tutorial of the series on fire and smoke with the Fluid simulator in Blender 4.5, we’ll talk about the ways Blender performs and stores the Bake, that is, the physical simulation of fire and smoke.


This tutorial is part of a 10-episode mini-series on the basics of Fire and Smoke in Blender 4.5. For the complete list of episodes, click here.


Video Transcript

Hello everyone! In this third tutorial of the series on fire and smoke with the Fluid simulator in Blender 4.5, we’ll talk about the ways Blender performs and stores the Bake, that is, the physical simulation of fire and smoke. Among other things, we’ll see how to calculate the simulation once for a Domain so it can be duplicated and placed in other parts of the scene without recalculating simulations for all the copies. Finally, we’ll see how to set an Offset for the playback of the simulation, so the animation can start with a fire already burning instead of the initial ignition of the flame.

The starting scene for this tutorial consists of a brazier containing some firewood logs.

These are two separate meshes, with the logs forming a single mesh.

The brazier rests on a rectangular Plane, which serves as the floor, and later we’ll place other braziers on it. The virtual world has a Strength of 0 and no light sources, so in Rendered mode the scene appears completely black.

From the previous episodes, we know that in order to make an object produce flames we need to assign it a Fluid component of type Fire And Smoke Flow. So I add a Physics Fluid component to the firewood, setting Inflow as the behavior of the component, which means the wood will generate flames on every frame.

I then create a Cube, assign it a Flow component of type Domain, and have it enclose the entire scene initially. Right away, we notice a problem: the default resolution is too low, producing Voxels that are too large, which makes the flames way too big compared to the objects emitting them.

Increasing the resolution to 64 doesn’t improve things much, and the simulation also starts taking longer. I don’t even want to try increasing the resolution further, because it’s clear this is not the right approach.

The most obvious solution is to resize the Domain so that it only encloses the brazier and a bit of space above it for the flames and smoke to develop. Now the resolution works even a little too well. In fact, maybe it’s even excessive, so we can bring it back to 32 while still getting well-defined flames. The issue, rather, is that the wood is producing far too much fire.

To reduce the amount of fire generated, we can adjust the Fuel parameter of the Inflow object. Intuitively, the higher the Fuel value, the more fuel will be burned each frame. So the solution is to lower this value until the flames reach an appropriate size.

As mentioned in the previous episodes, the data related to Baking, that is the calculation of the physical simulation, is stored in a dedicated folder, whose path is specified in the Cache section of the Domain object. Before creating the Domain, I saved the file to disk, so the cache folder is located in the same directory as the Blender project file.

In the Cache section of the Domain, we can set the frame range over which to calculate the Domain simulation. This doesn’t necessarily have to match the animation frame range of the scene. This can be useful for Baking only a limited number of frames just to get an idea of how the fire looks before running the full Bake. Another use case is when Fluid objects are not in the camera view, meaning that for those frames it’s unnecessary to calculate the physical simulation.

Before examining the other parameters in the Cache section, let’s see what happens when we make copies of the set consisting of the Domain, the brazier, and the logs, with the logs acting as Inflow objects, and place those copies around the scene. As we saw earlier, a single Domain covering the entire scene would need an extremely high resolution to produce good flames, while also leaving a lot of unused space. So, to add multiple braziers, the only option is to duplicate the entire set.

The problem is that when pressing Play in the Timeline, Blender will use the same cache folder for all Domains, which means they’ll all share the same simulation data. If you’re sure you want to keep the same parameters for all simulations, then perhaps you can try to trick the viewer by slightly rotating the Domains or giving each Domain different Materials, to vary the look of the flames during rendering.

The real problem arises if we change the resolution or any other parameter of a Domain and then run the Bake again. For example, I’m lowering the resolution of the more distant Domains, since we don’t need high resolution for background objects. Now Blender is really mixing up the data, because it’s the same set of volumetric data being shared by objects that have different characteristics.

If you want each Domain to have its data clearly separated from the others, you need to specify separate cache folders for each Domain before running the simulation. Needless to say, this will significantly increase the disk space used by the data of the various Domains. It’s up to you, depending on your needs, to decide which strategy to adopt: one or more very large Domains, duplicating the same simulation, or creating separate caches for the different Domains.

Up until now, Blender has been calculating the Bake of the simulation every time we pressed Play on the Timeline. This is not the only possible mode. In fact, there’s another one that also allows us to use a very useful tool. To keep things simple, I’m leaving just one brazier with its Domain in the scene and deleting the others. Be careful, though, because deleting Domains does not delete their data from disk. This is actually a good thing, because it means we can save and reuse the simulation data later. But in this case, I don’t need that data anymore, so I’ll go ahead and delete it manually.

In the Cache section of the Domain, we find the Type menu, which by default is set to Replay. This is the mode we’ve been using so far: Blender recalculates a new Bake every time we go back to frame 1 and press Play, overwriting the previous data.

The Modular mode allows you to perform separate Bakes for different aspects of the simulations. This can be useful in some cases, to examine or replace certain parts individually without having to redo the entire simulation.

The All mode, finally, allows you to Bake the entire simulation but calculate it in the background, not in the Timeline. To start the Bake, you need to click the Bake All button in the panel. Blender will display a progress bar for the process. Once the calculation is complete, you can press Play on the Timeline to view the result much more smoothly, since it has already been pre-calculated by Blender.

To modify the simulation settings, you first need to clear the existing data by clicking the Free All button. At that point, the parameters will become editable again and you can change them. Of course, you’ll then need to click Bake All to have Blender recalculate the simulation.

Taking a look at the folder being used will give you an idea of the different modules or baking steps that are calculated and stored separately when using the Modular and All modes.

The All mode makes the Offset parameter available, which helps solve a problem you may have already noticed. So far, all the fire simulations started with the flame igniting at the first frame of the animation.

This, however, is not always desirable, because sometimes we may want the animation to start with a fire that is already burning.

To solve this issue, we can enter a negative number in the Offset field.

The tooltip explains that this doesn’t mean the Baking will start earlier, but simply that the simulation will be played back as if it had already advanced by that number of frames at the first frame of the animation.

The animation length in frames will still be the one specified between Frame Start and Frame End.

In this case, the last 25 frames of the Timeline remain without simulation, because with the Offset we told Blender to play the 25th frame of the simulation at the first frame of the Timeline.

To solve this, all we need to do is have the Bake calculate more frames so the simulation covers the entire Timeline. So I set Frame End to 275 in the Cache section of the Domain, click Free All, and then run the Bake again by clicking Bake All.

This website is intended solely to showcase some of my work and has no promotional purpose. Please note that I am not currently seeking - nor will I respond to - requests for custom work, consulting services, or any other form of professional collaboration.


EXTENDED PRIVACY AND COOKIE USAGE POLICY