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:
-
Introduction to Pyro - Describes the various components of a simulation, and covers the relevant operators.
-
Understanding how pyro works - A high-level explanation of how pyro simulations are carried out.
-
Sparse vs dense simulations - Important information regarding sparse pyro simulations.
-
Flames - Explains the
flame
field.
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.
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.
-
The Pyro Source Spread SOP is specifically designed for simulation of fire spreading.
-
-
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.
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 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. |
Max Timesteps |
The maximum number of timesteps that the solver can take per frame. The default value of |
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.
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 |
Ambient Temp (K) |
Specifies temperature of the surrounding air. A value of |
Reference Temp (K) |
Physical temperature corresponding to the value of |
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 |
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.