Houdini 20.5 Pyro

Pyro instancing definitions

On this page

The pyro source instancing workflow in Houdini 19.5 provides a wide variety of possibilities, but also introduces new terminology, new nodes, and attributes.

This workflow requires you to package each individual pyro source into a packed source set, which contains source volumes and merging operations (or source rules) that describe how to apply the source to a simulation. You can merge several packed source sets together to form a source library. Given the library, Pyro Solver can then apply the desired sources at its instance points. To create and control instance points, you can use spawn points; these timeless recipes for instances expose control over timing and looping through their point attributes. Essentially, pyro source instancing gives you the means to create a source library, then put elements from this library into simulations, either by manual placement or with controlled randomization. Pyro source instancing also works in Minimal OpenCL mode, where it greatly increases the sourcing flexibility.

This page explains the aforementioned components for simulating with source instances. Detailed workflow instructions can be found here

Packed source set

A packed source set is a packed primitive containing volumes that are to be sourced into a pyro simulation, along with instructions about how to apply the source to a simulation. You can feed source volumes to the Pyro Source Pack SOP to package them into a packed source set. At a low level, the core attributes of a packed source set are its name, frame length, and source rules that specify how to merge the contained volumes with simulation fields. These properties are stored in name, frame_length, and source_rules primitive attributes, respectively.

Library

A collection of packed source sets can be merged together to form a source library. A source library is much like an asset library, and pyro source instancing allows you to place individual entities from the library into a simulation. This is done by creating instance points, whose attributes control which source goes where and how.

Spawn point

A spawn point is conceptually a recipe for an instance point that enables more intuitive control over the timing. In particular, spawn points store some basic animation data, such as when the source is to engage, when it should cease sourcing, how quickly it should play back, and how frequently it should repeat. These properties are stored in point attributes, which are listed below.

name

Name of the packed source set that we want to instance.

P

Location of the instance in world space.

orient

Orientation of the instance in world space.

pivot

The local pivot point for this instance.

startframe

The instance is activated on this playbar frame.

endframe

If greater than startframe, the instance will not be active beyond this playbar frame.

looplength

If this value is no smaller than 1, then the source sequence will loop. The looping sequence starts at startframe and is looplength frames in length.

startoffset

When the instance first engages (on startframe), it starts sourcing at this offset within the packed source set’s frame range.

offsetlength

Length of the subsequence to use from the packed set’s full frame range. For example, if startoffset is 0 and offsetlength is 5, then only offsets 0-5 will be used for sourcing. If offsetlength is smaller than 0, then all frames from the packed set can be used.

sourcespeed

Playback speed of the source once it engages. For instance, if startoffset is 1 and sourcespeed is 2, then offset 1 of the packed set will be sourced when it first engages, followed by offsets 3, 5, ... on subsequent frames. This speed can be negative.

You can use the Pyro Spawn Sources node to generate spawn points.

Instance point

An instance point is a point that identifies which packed source set to apply, which frame of the source to use, as well as where and how to merge the volumes with simulation fields. In contrast to spawn points, an instance point only exists when it is meant to be actively sourcing; additionally, each instance point stores the sourcing rules for it. Point attributes that affect sourcing behavior are given below, along with where they come from if the instance point is generated from a spawn point.

name

Name of the packed source set that should be applied. This is copied from the spawn point.

P

Location of the instance in world space. This is copied from the spawn point.

orient

Orientation of the instance in world space. This is copied form the spawn point.

pivot

The local pivot point for this instance. This is copied from the spawn point.

frame_offset

Offset into the relevant packed source set’s sequence. A value of 0 indicates that the very first frame of the packed source set should be used. This is calculated using the current frame and the spawn point’s startframe, looplength, startoffset, and sourcespeed attributes.

source_rules

This dictionary array attribute stores the sourcing rules that govern how the volumes of the packed source set will be merged into the pyro simulation. Each entry in the array stores an individual rule, containing all the data that comes with a single entry under the Source Volumes section of the Pyro Solver SOP. Of special importance here are Source Volume and Target Field. Former identifies the volume within the packed source set that will be merged, while Target Field corresponds to the DOP field that will be sourced into.

The instance’s rules are copied from the corresponding packed source set and modified to incorporate any relevant overrides.

To drive a simulation using packed sets, you must wire the instance points into the Pyro Solver. You can use the Pyro Source Instance node to birth instance points from spawn points.

Rule overrides

Although a packed set comes with its source rules, the actual rules used for sourcing will be read from instance points. This allows different instances for the packed set to vary how they apply the same source volumes. Imagine a simulation where you want to create hotter and cooler smoke from the same source, to influence how fast it rises; to achieve this, you would set different scale multipliers for rules that affect the temperature field.

To introduce such variations, you can specify overrides on both Pyro Spawn Sources and Pyro Source Instance SOPs. In either case, you can modify rules by identifying their target field; then, you can select the numerical rule property that you want to tweak, whose base value will be multiplied by the adjustment. When done on Pyro Spawn Sources, you can set the adjustment value for the spawn points directly. Since input to Pyro Source Instance consists of many unconnected spawn points, it doesn’t allow for direct adjustment value control; instead, you can register a point attribute to be used as the adjustment value on a per-instance basis. This also enables you quickly randomize rule adjustments by simply randomizing attribute values (using Attribute Adjust Float, for example).

Reference frame

When merging packed source sets into a library, it is very important that they are all available on the same frame. This can be ensured by setting the same value for the Reference Frame parameter on all Pyro Source Pack nodes that were used to create the packed source sets. Leaving this parameter at its default value of 1 is sufficient; this value indicates that the source sets will be timeshifted to start at frame 1. The timeshift does not affect the timing of these sources when they are applied to a pyro simulation: spawn points and instance points can be used to precisely time the activation of sources.

The library’s reference frame must also be matched by the Reference Frame parameters on the Pyro Source Instance and Pyro Solver nodes. As mentioned above, all these parameters default to the same value of 1, so everything should work if you simply ignore their existence.

However, this default value is not ideal if your timeline does not start at frame 1, in which case the packed sets will be timeshifted to a frame that’s hard to reach in the timeline. It’s recommended to save a new default value for these parameters if that is your situation. For instance, if your timeline starts on frame 1000, then it’s best to have Reference Frame parameters default to 1000. This will ensure that newly-created packed source sets will be visible on the first frame of the playbar.

Note

The Pyro Solver SOP has two such Reference Frame parameters: one for sources and one for colliders.

Pyro

Sparse Pyro

Pyro instancing

Legacy Pyro