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:
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:
-
Change Mode to
Volume Scatter
and fill the geometry with seed particles. This change creates a total 4,567 seed points. -
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:
-
Go to Attributes and enter
2
to initialize the attributes and their parameter sets. -
From the first Attribute drop-down menu, choose
Density
. -
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:
-
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. -
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:
-
Turn on Buoyancy and set the value to
0.2
. This will prevent the smoke from rising too fast. -
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 -
Turn on Disturbance and enter a value of
3
. Under the tab’s Threshold Field you can see that this noise is applied todensity
. -
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
-
Fields ▸ Dissipation to control the smoke’s lifespan. Change the value to
0.05
. -
Under Look, set Density Scale to
1.5
. This will also give the impression of a denser smoke. -
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.
Enhancements
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:
-
Set Attribute Names to
Float
and entertemperature
. You can also trydensity
ordensity temperature
for different results. -
Under Noise Value ▸ Amplitude change the value to
0.5
. This parameter changes the initial temperature values and creates slightly hotter and cooler zones. -
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.