Add a geo to use as source and append a Pyro Source node to it. This node does not make the volume, it creates points.

Below are some lines form the docs The Pyro Source SOP converts its input geometry into points suitable for sourcing pyro and smoke simulations. This SOP adds specified attributes to the generated points, which can be rasterized and imported into desired DOP fields by the Volume Source node. Pyro Source also contains a handful of initialization presets for driving common simulation scenarios.

Pyro Source

  • Pyro Source

    • Mode : Controls which points are exported by the node.

      • Surface Scatter : Points are scattered on the surface of the input geometry.

      • Keep Input : Points of the incoming geometry are used unchanged.

      • Volume Scatter : Points are scattered in the interior of the input geometry.

    • Particle Separation : When Mode is set to Surface Scatter or Volume Scatter, this parameter controls the density of seeded points; in Keep Input mode, value of Particle Separation is only used to calculate the pscale point attribute.

    • Initialize : Configures the node according to the selected preset. Source Fuel can be used to drive pyro simulations, whereas Source Smoke is meant for smoke simulations. Source Color creates color (Cd) and color density (Alpha) attributes that can be imported by the Volume Source node using the Blend operation.

Note that the attributes that are created in the initialize step are point attributes that will be used when we in a later step rasterize the point attributes to get a volume.

Attribute Noise (density & temperature)

To make the source volume more interesting we can add an attribute noise to the point attribs before we rasterize them. So lets so that. We append an Attribute Noise node to the Pyro source. docs

  • Attribute Noise

    • Mode -> Multiply : In Additive mode, noise is added to the attribute value, whereas the final value is obtained through multiplication in Multiplicative mode.

    • Signature -> 1D : Dimensionality of the generated noise. If set to 1D, the same noise value is used for all three components of vector attributes. If set to 3D, the first noise component is used with scalar attributes.

    • Attributes -> density temperature : An attribute’s value will be affected if its name matches this pattern. The node will also create an attribute of the same size as Signature for each valid token of this string that does not name an existing attribute.

    • Animated -> 1

    • Remap Noise -> 1 : When this option is enabled, noise values are remapped to match the provided Distribution.

    • Minimum -> -2 : The minimum noise value after remapping. NOTE! we do not want to source negative values so in the Post-Process we will clamp the min to 0. The reason that we set the minimum to a negative value is to make sure that we get alot of values below 0 (that later will be clamped to 0) This will give us a “broken up” source volume (if that is something we want that is)

    • Maximum -> 2 : The maximum noise value after remapping.

    • Distribution -> left 0 right 1 : The desired distribution of noise. Horizontal axis covers the range from Minimum to Maximum.

    • Element Size -> .5

    • Post-Process

      • Minimum - > enable and set 0 : The negative numbers will be clamped. Note that the since the Normalize by Clamped Coverage is enabled on the volume rasterize attribs is enabled the negative values would heve be remapped to 0 anyways but thsi would shift the entire value range by clamping here will will just “truncated” it, giving a harsch cutoff.

Attribute Noise (v)

If we want to create and add noise to a velocity attrib we can append another attribute noise node to the one before it.

  • Attribute Noise (density & temperature)

    • Mode -> Additive : When adding noise we want to use the additive mode

    • Signature -> 3D : since v is a vector we use 3D

    • Attributes -> v

    • Animated -> 1

    • Noise Type -> Flow : This noise is good to use for velocity

    • Center Noise -> 1 : To get velocity vectors in all directions we enable this

Volume Rasterize Attributes

To rasterize the attibs we use a Volume Rasterize Attributes node. To rasterize the attributes we first need to tell Houdini wich attributes to rasterize. We do this in the Attributes line edit. The we set the Voxel size. The shelf tools does this by multiplying the the Particle Separation by the Particle Scale and dididing the result by 4 on the incomming Pyro Source Node.

Below are some lines form the docs

  • Volume Rasterize Attributes

    • Attributes -> density temperature v : The attributes that we want to rasterize

    • Voxel Size -> ch("../pyrosrc/part_sep”) * ch("../pyrosrc/part_scale”) / 4 : Voxel size for the created VDBs. We can derive this by multiplying the Particle Separation and the Particle Scale and dividing by 4 of the incomming Pyro Source node.

    • Normalize by clamped coverage -> 1 : Enabling this option multiplies the sampled volume by coverage, yielding a smooth transition between areas covered by the particles. This will ensure that there are no values below 0 or above one.

Then append a out null.

Dop Network

Setup a standard Pyro network. To source the volumes we create a Volume Source node and connect to the last input of the solver.

  • Volume Source

    • Initialize -> Source Smoke : Since the default is Source Smoke we first need to change it to something else and then change back to trigger the preset.

    • SOP Path -> ../path/to/src : If input set to SOP