Houdini 18's Sparse Pyro

Intro

I know I'm pretty late to the game, but I thought it might be fun to talk about sparse pyro. Sparse pyro was first introduced in Houdini 18, and operates a bit differently than regular pyro. In this article we'll go over the application and techniques of sparse pyro, and some of the differences from our legacy pyro tools. Let's get started.

Shelf Presets

In Houdini 18 there are some sparse pyro shelf tools that you can start from.

Sparse Billowy Pyro

This is similar to the legacy billowy smoke tool. It sets up a sparse pyro simulation of rising smoke that is about a meter wide. This smoke is intended to be used as a starting point for future smoke sims.  You can change how fast the smoke starts to rise by adjusting the Buoyancy Scale. As well as slowing the growth down by adjusting the Cooling Rate, adjusting the Dissipation rate, and breaking up the smoke with Disturbance.

There are 3 parts to the default Sparse Billowy Pyro:

smoke_source: This source sets up the density and temperature sources. As well as creates the base shape of the smoke. You have the option of switch this source out for another object.

smoke_simulation: This contains and creates the simulation of the smoke, and the DOP network.

smoke_import: This step places the simulation into a SOP geometry.

Campfire

This tool sets up a pyro simulation of a smokeless campfire.

 

Here are some general tips:

 

  • To increase the speed of the flames boost the Buoyancy Scale.

  • If you'd like to change the vertical size of the fire adjust the Flame Lifespan.

  • To change the motion of fire you can adjust either the Turbulence, Disturbance, or Shredding. Turbulence will create fake random wind velocities. The shredding option will redirect the velocities in your simulation. While the disturbance will break up the flames.

  • To adjust the brightness and color of the fire play with the Emission Scale and Temperature Scale.

There are 3 parts to a default Sparse Campfire:

fire_source: This source creates the temperature and burn sources for your campfire. The fire_source also contains the fire_base, which controls the starting shape of the fire. You can swap out the base for almost any type of geometry.

fire_simulation: This step carries out the simulation.

fire_import: This step places the simulation into a SOP geometry.

Sparse Fireball

This tool sets up a simulation of a medium-size explosion, similar to the legacy explosion pyro tool.

Here are some general tips:

  • To set the size of the initial blast. Select the source_burn node, dive inside, and play with the Scale parameter.  

  • To adjust the expansion rate of the fireball play with the Expansion Rate and the Flame Range. You can find them on the pyro solver.

  • To control how the fireball fades, adjust the Flame Lifespan.The flames will be reduced slowly when value is larger, and vice versa.

  • You can modify the overall rising rate of the simulation by changing the Buoyancy Scale.

  • To modify other factors in how the fireball rises, you can change the values of the Cooling Rate, Flames, and Temperature. Raising the value of the cooling rate with remove more temperature from your flames.

  • You can changes where and when the smoke is emitted in the simulation. You can do this by playing with the Flame Range and Flame Ramp parameters.

  • Dissipation will change how your smoke disappears.

There are 3 parts to a default Sparse Fireball:

fireball_source: This source creates the temperature and burn sources, which can later be referenced by your divergence fields. You can swap out the base fireball source for almost any type of geometry.

fireball_simulation: Contains the simulation network, or DOP network for your fireball.

fireball_import: This step places the simulation into a SOP geometry.

GPU Billowy Smoke

This tool is similar to the Sparse Billowy Smoke. However, this smoke turns on OpenCL on it's solver, and allows more denser features in the smoke to be created. 

Here are some general tips:

  • By controlling the Buoyancy Scale, you can set the speed of the rising smoke.

  • The Cooling Rate will slow the rising smoke down.

  • Dissipation will make the smoke disappear.

  • You can also break up the smoke by tweaking the Disturbance.

There are 3 parts to using the default GPU Billowy Smoke. These are all pretty much the same as the Sparse Billowy Smoke's steps:

smoke_source: This source sets up the density and temperature sources. As well as creates the base shape of the smoke. You have the option of switch this source out for another object.

smoke_simulation: Contains the simulation network, or DOP network for your smoke.

smoke_import: This step places the simulation into a SOP geometry.

Spreading Fire

This tool sets up a fire simulation that uses a Pyro Source Spread SOP to spread the fire across a chosen surface. Before editing the simulation, make sure you finish the spreading animation of your fire's surface.

Here are some general tips:

  • Use the Buoyancy Scale to increase the speed of the flames.

  • Adjust the Flame Lifespan to change the height of your flames.

  • Disturbance and Shredding will help change the motion of your fire.

  • The Emission Scale and Temperature Scale will change how bright your fire is and the color.

There are 3 parts to using the default Spreading Fire Shelf Tool:

object_source: This is where the spreading simulation and it's corresponding sources are set up. The hot_region node controls the starting point for your flames. The simulate_spread node controls the burning regions spreading out from the flame's starting point.

fire_simulation: Contains the simulation network, or DOP network for your smoke.

fire_import: This step places the simulation into a SOP geometry.

Sparse Pyro Attributes

When working in your final sparse pyro import node, you'll notice some differences from Houdini's original pyro import node.  For example , in your traditional setup, there would be a import_pyrofields and a import_pyro_visualization inside your node. However, inside a sparse pyro import node, you might only see a import_fire_fields, depending on what tool you are using.

Inside a legacy import_pyro_visualization, you would be able to to see the imported attributes: density, vel, rest1, rest2, temperature, heat, fuel, and Cd. However, in a sparse import_fire_fields, you will only see the attribute density, vel, flames, and temperature. Let's break these down.

Density: This outputs the chosen quantity and volume of your fire/smoke. This holds the values of how your smoke is dissipating, the resolution, and the shape of the overall simulation.

Vel: This is your velocity field. This will help Houdini calculate the motion blur, and the speed of your flames.

Flames: This field stores the remaining lifetime of the fuel for your flames. It can also be used for the Emission Field when rendering the color of your flames. Flames will also output temperature values if the flame range is activated on your pyro solver.

Temperature: This outputs heat values. This helps Houdini decide how hot the flames should appear in the render.

DOP Network And Legacy Pyro Differences

There are some main differences between the old pyro tools, and the sparse pyro. Let's go over some.

Legacy Pyro operates in something called dense mode. This means it fills the entire bounding box, or simulation container with smoke or fire. However the Sparse Pyro tools create an active and non-active space inside the container. Only in the active space simulates the fire. Therefore, sparse pyro runs faster because it does not have to calculate the space the simulation might contain, rather the space that it is growing from. 

The Sparse Pyro Solver contains a Gas Build Occupancy Mask operator. This creates and tracks the active area of the simulation. You can also turn on Active Region to view the active space of the simulation.

References

Pyro Solver (Sparse) dynamics node: https://www.sidefx.com/docs/houdini/nodes/dop/pyrosolver_sparse.html

Differences between legacy and sparse pyro: https://www.sidefx.com/docs/houdini/pyro/differences.html

Houdini sparse volume pyro solver: https://www.effectivetds.com/forum/viewtopic.php?f=92&t=1436

Rocket Launch Sparse Pyro: https://www.reddit.com/r/Houdini/comments/e62znn/rocket_launch_sparse_pyro/

Pyro II - Flames & Sparse Pyro: https://forums.odforce.net/topic/44879-pyro-ii-flames-sparse-pyro/

Is it possible to up-res the new sparse pyro solver??: https://forums.odforce.net/topic/44825-is-it-possible-to-up-res-the-new-sparse-pyro-solver/

Houdini 18 Review: Pyro, Guided Destruction, Adaptive Solver:https://80.lv/articles/006sdf-houdini-18-review-pyro-guided-destruction-adaptive-solver/

Houdini 18 Pyro(Sparse) notes: https://johnsunet.wordpress.com/2020/01/31/houdini-18-pyrosparse-notes/

Fluids - Pyro: http://www.deborahrfowler.com/HoudiniResources/Fluids-pyro.html

Fluids - Pyro: http://www.deborahrfowler.com/HoudiniResources/FluidsPyroSparse.html

HOUDINI 18 QUICK TIPS: https://www.3dart.it/en/houdini-18-quick-tips/

Sparse vs dense simulations: https://www.sidefx.com/docs/houdini/pyro/sparsity.html