On this page

Overview

The speed and emergent shape of a pyro simulation are controlled by a combination of many parameters. This page contains tips and tricks for effectively working with pyro tools and achieving different simulation looks.

Before you begin, the following help pages provide an in-depth explanation of pyro:

Visualization

Throughout the prototyping process, it is useful to examine the state of the simulation fields. The Smoke object has a vast array of visualization options for these fields. The help for the Scalar Field Visualization and Vector Field Visualization nodes provide more details about the various available options.

The most useful visualization mode is Multi Field, since it displays all of the volumes that would be seen when rendering. The help for Multi-Field Visualization contains through information about the parameters. The most important settings for affecting the look are outlined below.

Density Field

Used for smoke thickness. This should be set to density. To make the smoke appear thicker, increase the Density Scale.

Diffuse Field

Used to tint the smoke. For example, the Sparse Fireball shelf tool sets the Diffuse Field to density and the Diffuse Ramp to a constant color. As a result, the visualized smoke appears dark grey.

Emission Field

Used to emit light. This should be set to flame to ensure that the fiery parts of your simulation glow. Emission Scale controls the amount of emission. To get a sharper border for flames, enable Emit Range and set it to something narrow, such as 0.1-0.2.

Emission Color Field

Controls the color of the emitted light. This parameter should be set to temperature. In Physical Blackbody mode, the temperature values will get mapped to an emission color and intensity using the blackbody radiation model.

General workflow

Many parameters on the pyro solver have an effect on the simulation results. The solver’s help page contains a lot of useful information about its parameters. However, it’s easy to get overwhelmed with the sheer number of settings. It is best to break up the look development process into a sequence of tasks, each one concentrating on additional details that are unlikely to undo the effect of previous settings.

  1. Create the source geometry

  2. Set basic simulation parameters

  3. Set temperature and buoyancy parameters

  4. Set parameters related to the flame field

  5. Tune the shape operators

Each step of the above workflow focuses on a specific task, and subsequent steps have minimal effect on results achieved from previous stages. Therefore, the iteration process within each step is confined to a relatively small set of parameters, and iteration over the entire process is kept to a minimum.

Tip

Steps 2-5 can be done with Minimal OpenCL. This parameter is located on the Setup tab of the Pyro Solver SOP, and provides interactive real-time simulation performance. For more information, see Minimal OpenCL Solve.

Source geometry

Source geometry has a large impact on the shape and behavior of newly-injected smoke. In this step, you should focus on creating sources that will introduce interesting variations to the simulation, without worrying about details of the final result.

  • For static smoke and fire simulations, add noise to the sourced values.

    • You can use the Attribute Noise SOP to add noise to the sourced point attributes.

    • With smoke, the noise will prevent constant, uninteresting emission.

    • Source noise for fire is important for capturing the look of the base. To get the cellular look for the fire base, use Worley (cellular) F2-F1 for the Noise Type.

  • For spreading fire, you should also ensure that the spreading behavior looks right before proceeding with the pyro simulation.

  • For explosions, you can use the Pyro Burst Source SOP to create the sourcing for the core of the explosion and shape how the explosion will look. You can also add trails using the Pyro Trail Path and Pyro Trail Source SOPs. For more information see Creating Explosions.

You should also determine the ranges of sourced values in this step, especially for temperature and flame sources. To this end, you can use the Attribute Promote SOP to calculate the maximum of the relevant point attributes (prior to rasterization). This information will be useful later for setting parameters on the solver.

Basic simulation parameters

Once sourcing is finalized, next step is to set the basic properties to ensure that the simulation works correctly. These settings can likely be set once and forgotten, assuming reasonable values are used.

Smoke Object

Voxel Size

Controls the simulation resolution, with lower values giving higher resolution. This value should be set relative to the simulation scale. For example, the default value of 0.1 makes sense for an explosion with a unit-sized base. On the other hand, if the base of the explosion is 100 units in size, then the Voxel Size should be increased accordingly.

Tip

You can rapidly experiment with different simulation settings with a larger voxel size before moving to higher resolution.

Boundary Conditions

If you need to add a ground plane or a solid wall to the simulation, use the parameters in this section.

Tip

Domain visualization on the Guides ▸ Visualization tab is useful for determining where the simulation will take place.

Pyro Solver

Max Timesteps

The maximum number of timesteps that the solver can take per frame. The default value of 1 should be sufficient for smoke, but this value should be increased if the simulated fluid will have fast velocities.

Padding

Specifies the amount of free space that the solver will try to maintain around the simulated smoke. It is important that this buffer is large enough to accommodate motion within a timestep. However, setting this parameter too large will slow down the simulations.

Temperature and buoyancy parameters

Through buoyancy, the temperature field has a large impact on the bulk motion of the smoke. To properly control this force, you need to specify the physical meaning behind the values in the field, by setting the Ambient Temp (K) and Reference Temp (K) parameters. From there, the buoyancy force can be further tweaked with Buoyancy Scale, without modifying the temperature range.

Smoke Object

Ambient Temp (K)

See the parameter of the same name on the solver for more information. The values of these two parameters should be linked.

Reference Temp (K)

See the parameter of the same name on the solver for more information. The values of these two parameters should be linked. You should adjust this parameter until emission colors look correct in the viewport.

Temperature Scale

Acts as a multiplier on the temperature field for emission color purposes. Ambient Temp (K) and Reference Temp (K) should be linked to their respective parameters on the pyro solver, so that changing their values will also affect the simulation. The Temperature Scale parameter allows you to tweak emission colors without affecting the solver’s settings.

Pyro Solver

Ambient Temp (K)

Specifies temperature of the surrounding air. A value of 0 in the temperature field gets mapped to Ambient Temp (K).

Reference Temp (K)

Physical temperature corresponding to the value of 1 in the temperature field. The highest sourced temperature will equal Ambient Temp (K) + T * (Reference Temp (K) - Ambient Temp (K)), where T is the maximum incoming temperature value (as determined for sourcing, see above). Thus, Reference Temp (K) should be set so that this highest sourced temperature is physically sensible, and the emission colors look correct in the viewport.

Note

These parameter values are in Kelvin. The conversion formulas between Kelvin and other common temperature units are given in the table below.

To Kelvin

From Kelvin (K)

Degrees Celsius (C)

C + 273.15

K - 273.15

Degrees Fahrenheit (F)

(F - 32) * 5/9 + 273.15

(K - 273.15) * 9/5 + 32

Gravity

Magnitude and direction of the gravitational force, which affects strength of the buoyancy forces. You should adjust these parameters for the scene scale and then leave them alone. Buoyancy Scale can be used to fine-tune the effect of buoyancy.

Buoyancy Scale

Multiplier on strength of the buoyancy force. Use this parameter to tweak buoyancy to ensure that your smoke rises at the desired speed.

Cooling Rate

Rate at which the temperature field cools toward the ambient temperature. When searching for an appropriate value, watch for where the smoke’s rising rate begins to slow down.

Flames parameters

Parameters on the solver’s Flames tab have a significant impact on simulations that make use of the flame field. You should begin by tuning the Flame Lifespan parameter to ensure that the flame values persist for the desired amount of time. From there, you can enable the outputs that you want to generate from the flame field and tune their activation ranges. See the Flames page for more information about these outputs.

Tip

Knowing the incoming flame values from sourcing is very helpful when searching for flame ranges. You should calculate the maximum incoming values when working on the sources.

Shape operators

The previous steps are meant to determine the bulk shape and motion of the simulated smoke. Once you are happy with these bulk characteristics, you can use shape operators to add details to the simulation. The pyro solver has 4 built-in shape operators: dissipation, disturbance, shredding, and turbulence.

Dissipation

Reduces the density values over time, so that smoke fades and eventually disappears. It is important to set an appropriate value for the Clamp Below parameter when performing a sparse simulation. Otherwise, tiny density values will linger and unnecessarily inflate the active simulation region.

Disturbance and shredding

Applies random forces to break up the simulation. Disturbance exerts linear accelerations and is useful for breaking up smooth smoke caps. Shredding rotates velocities to redirect the flow. Shredding is effective for adding chaotic motion without speeding up or slowing down the flow. It is especially useful for fire simulations, which are dominated by vertical licks when no shredding is used.

Turbulence

Can be used to add powerful large-scale noise to the simulation velocities.

Each shaping operation has a checkbox to turn it on and a scaling factor to specify how strongly to apply it. There is also a tab containing further parameters for each built-in operator. A common theme here is the control field, which can be used to spatially attenuate strength of the shaping operator. When enabled, the value of the Control Field is fitted from the Control Range to 0-1. This is further passed through the Control Ramp if Remap Control Field is enabled. The remapped control value is then applied as a scaling factor on top of the global strength. Control fields allow you to build a mask out of desired regions and only apply a shaping operator there.

Tips and troubleshooting

  • Advection-Reflection can greatly help with vortex preservation.

    • Disabled turns off advection-reflection. This is the safest option for simulations that involve the divergence field (such as explosions).

    • Single-Project uses a cheap reflection method that does not add much overhead to the simulation.

    • Double-Project exhibits best vortex preservation qualities. However, this method effectively doubles the number of substeps and is significantly more expensive than Single-Project.

  • The Time Scale parameter can be animated. This can be especially useful with simulations of explosions, where a high time scale at the start can capture the violent initial blast.

  • When Mode for disturbance is set to Continuous, independent noise will be added at every voxel, creating disturbance at the highest representable scale. This is useful for an avalanche-type effect. However, if voxel size is too small, disturbance in continuous mode can lead to a noisy, undesirable look.

  • You can attach microsolvers to the pyro solver’s Forces input to apply custom forces to the smoke.

  • If you notice staircase-like artifacts in a sparse simulation, then there is insufficient padding. To fix this problem, increase Max Substeps and/or increase Padding on the Advanced tab.

  • If sources and simulation are very fast, than insufficient substepping will manifest as noticeable streaks. Increase Max Substeps to fix this problem.

  • If the smoke doesn’t seem to be interacting with collision geometry, increasing IOP Iterations on the Advanced ▸ Collisions tab may help.

  • If you notice thin axis-aligned streaks of smoke, enable hourglass filtering. Its controls can be found on the Advanced ▸ Hourglass Filtering tab of the solver.

  • Sparse solvers perform advection in batches to speed up the simulation time, which results in higher peak memory utilization. If you're experiencing issues with memory usage, you can limit the batch size in Advanced ▸ Advection ▸ Max Batch Size.

Minimal OpenCL Solve

Note

Currently, the minimal pyro solver runs slower in the Vulkan viewport than it does in OpenGL.

The Pyro Solver SOP has the ability to perform a Minimal OpenCL solve, which is useful for very rapid prototyping. This option is located on the General tab in the Simulation Type dropdown menu. It allows for interactive manipulation of parameters during a running simulation, which can give you quick feedback of their effects on the simulation.

When this option is selected, some features of the solver are turned off to to ensure that all simulation data can stay in video memory, avoiding costly copies that are necessary when only Use OpenCL is turned on.

Tip

Turn on Live Parameter Display during Playback in the Edit menu to make sure the solver interface updates as you are tweaking parameters in the midst of a simulation.

Tip

You can animate the Center parameter on the Pyro Solver SOP to move the simulation container. For example, you can do this to track the world-space motion of a moving torch as you are simulating its fire.

To produce fast simulations, Minimal OpenCL uses the OpenCL device and imposes the following limitations.

  • Simulation caching is disabled. This means that you cannot scrub the timeline to view saved results.

  • Advection-Reflection is not supported.

  • Only a dense simulation can be performed.

  • Dynamic resizing of the container is turned off. A static size needs to be set under the Bound tab.

  • The solver will not dynamically substep based on the CFL Condition.

  • Sourcing and collider support are more restricted. A frame range needs to be specified for both, and the solver will loop these input sources throughout the simulation. Additionally, the collider must be converted into a signed distance field (called collision) and a velocity field (v).

There is more you can do to increase performance:

  • The use of a Pyro Bake Volume SOP node should be avoided during look development to maintain performance.

  • Make sure that the Pyro Solver SOP node’s field and shape guides are turned off: Fields ▸ Field Guides ▸ Field Guide ▸ No Guide and the appropriate parameter in the Shape tab.

  • Use looping sources where possible.

  • If you use microsolvers, check if the Use OpenCL option is turned on to avoid bottlenecks.

Tip

The Simple GPU Ground Explosion is a very good start to test performance and solver settings.

Note

Best performance is achieved when the OpenCL device is set to the GPU that is responsible for rendering the viewport.

Pyro

Sparse Pyro

Pyro instancing

Legacy Pyro