|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
temperature volumes, with rules that indicate to
add the source
densityvolume to the
temperaturepyro field towards the target
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.
On obj level, create a Geometry node and dive into it.
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.
volumerasterizeattributesnode. Source volumes are the output of this node, consisting of
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.
Set the Name parameter on this new node to
torus_smoke. The output of this node is a packed source set called
When you look at the Pyro Source Pack sources, you can see the rules for the
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.
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.
smoke_base1node of the newly-pasted chain and delete it. Replace it with a Sphere.
Select the Pyro Source Pack node at the end of the new chain chain and change its Name parameter to
Repeat steps 1-3 above, but with a Box. Call this packed source set
Put down a Merge and connect the three Pyro Source Pack nodes to it. Rename this node to
Scattering and random instancing
On the Scatter node, set Force Total Count to
Add a new downstream Attribute from Pieces node.
Connect the Merge node (
LIBRARY) to the node’s second input.
Set Mode to Random.
Under Copy Attributes, add
source_rules. The scatter points will now have the basic necessary attributes needed for instancing sources.
Add a Time Shift node and connect its input with the output of the Attribute from Pieces operator.
⌃ 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
Find the Pyro Solver (
pyrosolver_billowy_smoke). Connect the solver’s first input with the output of the Time Shift node.
Navigate to the solver’s Sourcing tab and change Source Type to Packed Sets.
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).
Press in the playbar to run the simulation.