On this page

Flame field

The 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 accumulated heat and instantaneous burn fields.

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.

  • The burn volume is created as the source of the initial detonation.

  • This instantaneous burn is then merged with the flame and divergence fields 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.

Tip

The Spreading Fire tool on the Sparse Pyro FX shelf can set up a simulation of fire spreading across the surface of an object.

Lifespan

Pyro 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 1.

Note

In general, it will take a L*f seconds to deplete a flame value of f, where L is Flame Lifespan.

Outputs

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 expansion.

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 density, temperature, and 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:

  • The flame value is fitted from the Flame Range to the 0-1 range. If Remap Flame is enabled, the Flame Ramp is further evaluated at the refitted result of the previous step.

    Note

    If an endpoint of the Flame Ramp is non-zero, then all flame values 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 density for smoke, temperature for temperature, and divergence for expansion.

Specific details of the three possible outputs are covered below.

Smoke

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.

Temperature

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.

Expansion

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.

Pyro

Sparse Pyro

Pyro instancing

Legacy Pyro