Houdini 20.0 Pyro

Basic pyro instancing

On this page

The new pyro instancing system in Houdini lets you instance different pyro sources, change and randomize their attributes, apply transformations, and customize ignition times.

In a nutshell, multiple pyro sources are packed through Pyro Source Pack nodes and merged into a library. The individual elements of this library are then scattered through a point source, for example a Scatter node or along curve points. With an Attribute from Pieces you randomly assign different library elements to the scatter points.


For explanations around pyro source instancing, please see the Pyro instancing definitions.

The Pyro Source Pack SOP creates a packed source set from its input volumes. A packed source set, however, consists of a packed primitive containing the source volumes, along with the rules on how to apply them to a pyro simulation. In the example below you create a packed source set that includes density and temperature volumes, with rules that indicate to

Packed source sets library


Please note that the following guide is a conceptual example. When working with a real scenario, you should also specify the Pyro Source Pack node’s Frame Range parameter.

  1. On obj level, create a Geometry node and dive into it.

  2. Press ⇥ Tab in the network editor and invoke the Pyro Configure Billowy Smoke tool. This will create a small chain of nodes to simulate smoke.

  3. Locate the volumerasterizeattributes node. Source volumes are the output of this node, consisting of density, temperature, and v VDBs.

  4. Put down a Pyro Source Pack node and connect its input to the output of volumerasterizeattributes. The new node will create the packed source set.

  5. Set the Name parameter on this new node to torus_smoke. The output of this node is a packed source set called torus_smoke.


When you look at the Pyro Source Pack sources, you can see the rules for the density, temperature, and v fields - plus a default burn field. The burn rule is unnecessary here and should be deleted in real scenarios, but it will work for our simplified example.

In the next step you create two more sources from the chain’s first five nodes.

  1. Copy the chain of nodes starting at the Torus up to your newly-added Pyro Source Pack node. Press ⌃ Ctrl + C to copy these nodes and ⌃ Ctrl + V to paste them in the same network.

  2. Select the smoke_base1 node of the newly-pasted chain and delete it. Replace it with a Sphere.

  3. Select the Pyro Source Pack node at the end of the new chain chain and change its Name parameter to sphere_smoke.

  4. Repeat steps 1-3 above, but with a Box. Call this packed source set box_smoke.

  5. Put down a Merge and connect the three Pyro Source Pack nodes to it. Rename this node to LIBRARY.

Scattering and random instancing

  1. Create a new Grid. Change its size to 25x25 and connect it to a new Scatter.

  2. On the Scatter node, set Force Total Count to 18.

  3. Add a new downstream Attribute from Pieces node.

  4. Connect the Merge node (LIBRARY) to the node’s second input.

  5. Set Mode to Random.

  6. Under Copy Attributes, add source_rules. The scatter points will now have the basic necessary attributes needed for instancing sources.

  7. Add a Time Shift node and connect its input with the output of the Attribute from Pieces operator.

  8. ⌃ Ctrl + ⇧ Shift + LMB click the Frame parameter to erase the expression and set its value to 1. This will ensure that the same set of instance points is used for all frames. Without this node, the instance points will not be valid once the library empties (i.e. when the current frame exceeds frame range of the packed source sets).

Simulate using instanced packed source sets

  1. Find the Pyro Solver (pyrosolver_billowy_smoke). Connect the solver’s first input with the output of the Time Shift node.

  2. Navigate to the solver’s Sourcing tab and change Source Type to Packed Sets.

  3. Finally, direct the solver at the library of packed source sets. To this end, set Source Library to ../LIBRARY (in reference to the Merge node you created before).

  4. Press in the playbar to run the simulation.


Sparse Pyro

Pyro instancing

Legacy Pyro