On this page

Learn how to create smoke and fire with a minimal set of pyro SOP nodes. The advantage of SOP-based pyro simulations is that you can control the entire setup inside a single network. It is not necessary to split the nodes into separate SOP and DOP networks and merge them together again. Especially beginners will profit from a clearly structured workflow. You can also use the ready-to-use scenes from the Pyro FX shelf. The tutorial consists of three parts:

  1. SOP smoke

  2. Simulating a burning tire

  3. Pyro Burst Source: creating a fireball

Rising smoke

In the first part of this tutorial you create a smoke simulation with just five nodes. By changing a few parameters it’s possible to turn a rising plume with a few details into a realistic smoke cloud.

The shape of the pyro source has a significant impact on the simulation results. Simple shapes, for example flat cylinders or spheres might also create a simple look, lacking detail. Irregular and more interesting shapes create more noise and turbulence. Nevertheless, there are situations, where basic source shapes are recommended.

The source

At obj level, create a Torus SOP node and place it at the scene’s origin. Dive into the Torus node by double clicking it. The Torus will act as the smoke’s source.

Add a Pyro Source SOP node and connect its first input with the output of the Torus node. When you turn on the Pyro Source’s Display flag, you will only see points, outlining the object’s shape: there is one point per vertex. Later, the smoke emerges from these points. The current number of 288 points is probably not sufficient. Now imagine a cube and what you will get from just 8 points/seeds.

One idea is to increase the number of Rows and Columns of the Torus, but there is a more efficient method in the Pyro Source node:

  1. Change Mode to Volume Scatter and fill the geometry with seed particles. This change creates a total 4,567 seed points.

  2. With Particle Separation you can add or remove particles. Smaller values create denser point clouds. Set the parameter to 0.05 to get 41,730 points.

Creating attributes

Attributes play an important role in all simulations, because they drive the simulation. The most common attribute in terms of simulations is velocity. For a smoke simulation we need two more attributes: density and temperature.

  • density defines, where the smoke is present.

  • temperature makes the smoke rise. The hotter the smoke, the faster it will rise.

Houdini has a couple of presets for the most important attributes:

  1. Go to Attributes and enter 2 to initialize the attributes and their parameter sets.

  2. From the first Attribute drop-down menu, choose Density.

  3. From the second Attribute menu, choose Temperature.

Adding the attributes won’t change anything in the viewport, but when you click the Node info you see density flt and temperature flt entries. The flt extension means that you're dealing with float values. Vector attributes, on the other hand, consist of three float values. Examples are position, velocity, or color. You have to consider the data type with new attributes. If you add, for example, a Cd (color) attribute, don’t forget to turn on the Vector Attribute option. Otherwise the values will be misinterpreted.

In the Geometry Spreadsheet you can also check if the attributes are correctly initialized. Both attributes should have a value of 1.0. This value corresponds with the Default Value parameters of the Pyro Source. Any change there also changes the values in the spreadsheet.

Rasterizing attributes

When you connect the Pyro Source to a Pyro Solver SOP node, nothing will happen, because the solver requires a grid of voxels. To create voxels and apply the attributes, add a Volume Rasterize Attributes SOP node and connect it to the the Pyro Source.

When you turn on the Volume Rasterize Attributes node’s Display Flag, the points disappear. The reason is that the node is currently not aware of the attributes:

  1. Under Attributes enter density temperature (without a comma). You can also choose the attributes from the parameter’s associated drop-down menu. In the viewport, the Torus turns into a volumetric cloud.

  2. Set Voxel Size to 0.05. This is the same value as in the Pyro Source node’s Voxel Size parameter.

Solver settings

Add a Pyro Solver SOP node, and connect its first input with the Volume Rasterize Attributes node’s output.

  • Under General ▸ Voxel Size enter 0.05 to synchronize voxel sizes throughout the simulation network.

The scene is now ready for a first test. The video below shows what you should see: a rising, mushroom-shaped smoke cloud.

Adding noise and detail

You can now start to add turbulence for a more vivid simulation. Go to the Shape tab. There you can find settings for Wind, Disturbance, and others:

  1. Turn on Buoyancy and set the value to 0.2. This will prevent the smoke from rising too fast.

  2. Turn on Wind and expand the tab. For Wind Speed, enter 2. You can either keep the default Wind Direction along the positive X axis, or define different direction

  3. Turn on Disturbance and enter a value of 3. Under the tab’s Threshold Field you can see that this noise is applied to density.

  4. Turn on Turbulence to add more small-scale noise and vortices. Enter a value of 0.5.

The settings above create a much more turbulent simulation and nice structures. If you're looking for a rather thin and almost wispy smoke, then you're done. For thick smoke, the structures still vanish too fast. To change this, go to

  1. Fields ▸ Dissipation to control the smoke’s lifespan. Change the value to 0.05.

  2. Under Look, set Density Scale to 1.5. This will also give the impression of a denser smoke.

  3. Feel free to change Smoke Color and Shadow Color to achieve different looks.

The settings above create a rich and vivid simulation of thick smoke. The smoke doesn’t rise too fast and has to time to form out nice vortices, but also less dense areas of vanishing smoke.


A very helpful option is to disturb the density and/or temperature attributes through an Attribute Noise SOP node between Pyro Source and Volume Rasterize Attributes:

  1. Set Attribute Names to Float and enter temperature. You can also try density or density temperature for different results.

  2. Under Noise Value ▸ Amplitude change the value to 0.5. This parameter changes the initial temperature values and creates slightly hotter and cooler zones.

  3. Turn on Animation ▸ Animate Noise.

For a tutorial on how to add flames to the smoke simulation, please visit Simulating a burning tire.

The video shows the simulation with an Attribute Noise, applied on temperature, and the settings described above. For even more details, decrease Particle Separation and Voxel Size values to 0.025.

Shading and rendering

For detailed information on how to apply the Pyro Bake Volume SOP shader, please visit the Shading and rendering page.


Sparse Pyro

Legacy Pyro