|On this page|
flame field is an important part of fire and explosion simulations. It stores the remaining lifetime of reactants (such as fuel) that are transported by the flow. The field is replenished via sourcing, and the pyro solver takes care of reducing its values and generating the desired outputs (based on settings on the solver’s Flames tab). Depending on how close reactants are to depletion, they can generate various outputs. They can emit soot, increase temperature, and cause expansion. In addition,
flame can be used as the emission field for visualization and rendering.
As a simple example, you may want reactants that release a lot of heat when they are "young", then start emitting soot as they get used up. You can achieve this by appropriately setting the output parameters on the Flames tab of the pyro solver. See Outputs for more information.
Differences with legacy pyro
Prior to Houdini 18, pyro simulations involving combustion used a
fuel field. In hot areas, the
fuel would ignite, contributing to the instantaneous
burn field. This
burn field would in turn refresh
heat, which captured the emissive parts of the smoke. Finally, outputs would be generated from the
heat and instantaneous
The new recommended workflow requires the instantaneous burn to be generated in SOPs and brought in as part of sourcing. A good example of this is the Sparse Fireball shelf tool.
burnvolume is created as the source of the initial detonation.
burnis then merged with the
divergencefields of the object.
This approach has the advantage of predictability and more control. For instance, if you would like the explosive fuel to rise, you can animate the
burn source with exactly the desired speed.
For scenarios that require spreading of flames over a fuel source, you can use the Pyro Source Spread SOP. This node simulates the spreading behavior throughout its input point cloud and is especially useful for controlling spreading fires.
flame values are increased through sourcing. The recommended merging operation for sourcing into this field on the Volume Source DOP is Maximum. This ensures that
flame values are refreshed at the source, but avoids over-accumulation that the Add operation is prone to.
The Pyro solver advects the
flame field with the flow. The reactants are also used up to generate the enabled outputs, and values in the
flame field are correspondingly reduced. The rate at which the solver uses reactants is controlled by the Flame Lifespan parameter found on the Flames tab. Larger values result in slower reaction. More precisely, a Flame Lifespan value of
2 means that it will take
2 seconds to completely use up an initial
flame value of
In general, it will take a
L*f seconds to deplete a
flame value of
L is Flame Lifespan.
In the presence of reactants (non-zero
flame values), reactions continuously take place throughout the simulation. The immediate effect of these reactions is reduction in availability of reactants (as explained in the Lifespan section above). Reactions can optionally also generate various outputs that affect the simulation. For example, they can increase the temperature of the gas or induce
You can control the nature of these outputs with parameters on the solver’s Flames tab. The three possible outputs are: smoke, temperature, and
expansion. These contribute to the
divergence fields, respectively. Each output has an independent set of parameters to control the generation, consisting of a base multiplier, a Flame Range, and the option to remap the
flame field. The generated output at each voxel is calculated as follows:
flamevalue is fitted from the Flame Range to the
0-1range. If Remap Flame is enabled, the Flame Ramp is further evaluated at the refitted result of the previous step.
If an endpoint of the Flame Ramp is non-zero, then all
flamevalues that fall on that side of the ramp will also generate the respective output.
The remapped result is multiplied by the base amount to get the output value. This is Emission Amount for smoke, Temperature Amount for temperature, and Expansion Rate for expansion.
The output value is merged with the destination field. This is
temperaturefor temperature, and
Specific details of the three possible outputs are covered below.
The Smoke output is useful for emitting soot from fires and explosions. This output contributes to the
density field. The Emission Amount is the relevant base multiplier for smoke generation, and it controls the visible thickness of the produced smoke.
There are two ways to merge the output with the destination field: Max and Add. In Max mode, the final
density result is the maximum between the the field’s current value and the calculated output. Alternatively, when Merge Method is set to Add, the output is normalized by the timestep and added to the
density field. In this mode, the Emission Amount controls how much is added to the
density field per canoncial frame (
1/24-th of a second).
The benefit of Max merging is that it emits smoke only in areas that are not already saturated and prevents unregulated growth of
density values. If you would like to inject smoke without accounting for how much is already present, use Add instead.
The Temperature output enables you to simulate the effect of exothermic reactions, as it modifies the
temperature field. This output is very useful for explosions, where reactants carried in the fireball can ensure that it remains hot and continues to rise. The Temperature Amount controls the overall scale of the output.
Similar to the smoke output, there are two methods for merging the output with the destination field. Add works identically here: output is added to the
temperature field (after compensating for the timestep). In Pull mode, the
temperature values are blended with the output in a timestep-independent manner. The Strength parameter governs the blending rate, with higher values
matching the output more closely.
When set to Pull mode, the
temperature field will only be affected in areas where the output exceeds the current value. This allows the reaction to heat up, but not cool down, the ambient gas. The advantage of this merge method over Add is that it can only heat up the gas to the temperature of the reaction.
The Expansion output introduces outward velocities to the simulation, allowing explosions to continue expanding beyond the initial detonation. This output is especially useful for rising fireballs, where its addition can give the smoke a "rolling" effect and allow the fireball to continue inflating in a controllable way.
Expansion is induced by changing the
divergence field. See the Pressure Projection help for more information regarding the impact of this field on the simulation. The Expansion Rate controls the overall size of the effect, with larger values yielding more rapid expansion.