Houdini 18.0 Pyro

Introduction to Pyro

On this page

Pyro refers to Houdini’s volumetric fluid simulation package. The pyro solver is used for capturing the motion of fire, smoke, and explosions, but can also be used to simulate other fluid-like phenomena, such as mist or an avalanche.


In contrast to FLIP, pyro does not use particles to track the fluid. Since particles are very useful for resolving the surface, pyro is not well-suited for simulating liquids.

Pyro node network

You can use the tools on the Sparse Pyro FX shelf to put down example pyro setups. These are extremely useful for creating instant simulations that can be further modified to integrate with your scene. They create pyro networks that include sourcing on the at the geometry level, a DOP network for the simulation, and an output object to import results of the simulation back into a renderable object.


Sourcing is responsible for the injection of new quantities into the simulation. For example, you may want to continuously add soot and heat inside a chimney to animate smoke rising out of it. To do this, you would first generate these source volumes using SOPs, then merge them into the simulation.

The recommended method to create the source volumes is by rasterizing point attributes. This approach allows for easy inspection and manipulation of sourced quantities. It also naturally accommodates more complex sourcing (such as for shrapnel trails), since you can use the results of a particle simulation to emit smoke and fire.

Pyro Source

Converts the source geometry into points with attributes (such as temperature and density). You can manipulate these attributes to change the character of the fire/smoke generated from the source. For example, to create a "fireball" effect you could generate very high values for burn at the beginning of the effect and then quickly ramp the values down so you get a single "blast" instead of continuous fire.

This node has controls for how to scatter the points on or inside the source geometry, what attributes to create, and what to do with existing attributes.

Pyro Source Spread

Simulates combustion of fuel and diffusion of heat on the points. This node is especially useful for controlling and directing the spread of flames across a given region.

Attribute Noise

Adds some randomness to the attribute values on the points to create more interesting and realistic smoke and fire effects.

Volume Rasterize

Generates a volume from the points and point attributes, for import into DOPs.


The essential building blocks of a pyro dynamics network are the object, sourcing, and the solver. The simulation object with all the necessary fields is created by the Smoke Object (Sparse) node. The Volume Source node is responsible for importing sources and merging them with their respective simulation fields. Finally, the Pyro Solver (Sparse) takes care of applying forces and evolving the fluid fields.

See pyro workflow for information on how to use the various parameters of the source, object, and solver to achieve different smoke and fire looks.

Smoke Object

Controls the 3D resolution of the smoke/fire object, as well as the simulation domain. It also has extensive controls for visualizing contents of the object.

Volume Source

This node imports the SOP volumes generated by the source network and merges them with the object’s fields. There are several merging operations for combining each source volume with its target simulation field.

Pyro Solver

Houdini includes two solvers for grid-based smoke/fire simulations. The Smoke Solver implements the basic fluid simulation engine. It supports basic smoke effects, but cannot simulate fire. The Pyro Solver is built on top of the smoke solver; it adds fire and more controls.

The high-level effects created by the tools on the Sparse Pyro FX shelf tab use the pyro solver.

The pyro solver has extensive controls for evolution and output of the flame field and for visualizing forces applied by the solver, such as shredding.

Smoke Solver

Solver for simpler effects involving smoke, but not flames.


The output network brings the simulation results back into SOP geometry. At this point, the shader settings can be fine-tuned and the simulation saved to disk for rapid playback.


Pulls the simulation results (consisting of the relevant object fields) back into SOPs for export and rendering. This node also has the ability to cache the imported geometry to disk for quick playback. However, it’s important to note that saved volumes from this node will not have the visualization information built in.

Pyro Post-Process

Manipulates visualization of the imported pyro fields and prepares the geometry for rendering. The resulting viewport visualization is a pretty close approximation of the render results, as this node also creates a matching material for the smoke.

Simulating in SOPs

Pyro simulations can also be carried out entirely in a single SOP network, avoiding the need to switch between contexts and directories. You can do this using the Pyro Solver SOP, which is a convenience wrapper around a pyro dynamics network. This node exposes parameters from the simulation object and the DOP solver, and even has a dive target to allow you to apply manual forces. The SOP version of the solver should be adequate for most of the simulation scenarios. Additionally, there is a built-in post-process node that ensures that the exported geometry is ready for rendering.

There are several tools on the Simple FX shelf tab that create simple networks demonstrating this approach: Simple Billowy Smoke, Simple Fireball, and Simple Spreading Fire. You also can find these tools using the tab menu.

Limitations of pyro in SOPs

Although you can dive inside the solver to facilitate some direct interaction with the underlying DOP network, you can only apply forces to the simulation here (pyro solver’s Forces input). If you require access to other solver inputs or more control over the operator graph, you should perform the simulation in a dedicated DOP network.


Sparse Pyro

Legacy Pyro