This page provides information on the Resimulation rollout for a FireSmokeSim object.


Page Contents


Resimulation uses an already simulated cache sequence with exported velocity (base simulation) to drive a new simulation with any of these added effects:

  • Increase resolution while keeping the shape and behavior. (It's possible to add wavelet turbulence to increase detail or simply amplify the resolution)
  • Slow down or speed up the animation, as well as apply animated time scale using Phoenix's Time Bend controls. See Slowing Down a Simulation, Animating the Time-Scale, etc.
  • Keep the grid channels such as Smoke, Temperature, etc. unchanged and only change the dynamics or number of Drag particles, or vice versa.

You can resimulate over the resimulated caches and so on - it's not necessarily just 2 passes at most. 

Due to the difference between the compression algorithms used by Phoenix FD's Aura format and the OpenVDB format, the resimulation process may produce a different result when using exported VDB caches as opposed to Aura caches if the Storage Quality option in the Output roll-out is set to a value lower than 20 (i.e. Lossless).

Rendering and simulation cache paths can be set manually. For information on how to do this, see the Tips and Tricks page regarding simulation paths and resimulation paths.

When performing a resimulation, it is recommended that you leave the Dynamics settings unchanged between running a base simulation and resimulation unless more advanced behaviors are specifically needed.


The resimulation workflow for Fire/Smoke is as follows:


Enable Velocity in the Output rollout. If you are going to add wavelet turbulence as well, also enable Wavelet.

Start the original (base) simulation and let it run through.

Enable Grid Resimulation or Particle Resimulation. Adjust the resimulation options in this rollout if needed.

Start the simulation again - this time the Resimulation will take place. You can switch between preview and render of the base and resimulated caches by enabling/disabling the Resimulate checkbox.



UI Path: ||Select Fire Smoke Simulator | FireSmokeSim|| > Modify panel > Resimulation rollout



Particle Resimulation



Enable | resim_resimulate_particles – Enable/disable the particle resimulation. Use this option to modify the look of Drag particles. The Particle resimulation will produce the exact same result as the base simulation only with Steps per Frame = 1 in the Dynamics rollout. With a higher number of steps, the intermediate steps cannot be reconstructed and a full simulation is needed to match them exactly, while the resimulation is only an approximate.



Grid Resimulation



Enable | resim_resimulate_grid – Enables/disables the grid resimulation. Use this option when the grid detail has to be improved by increasing the resolution, by eventually adding wavelet turbulence, or if you need to re-time your simulation using Time Bend effects.

Amp. Resolution | resim_ampres – Magnifies the grid resolution. A value of 0.0 means no change, 1.0 means doubling the voxel amount in all axes (2*2*2=8 times the resolution), 2.0 means tripling (3*3*3=27 times the resolution), etc. Non-integer values can also be entered, however, they are slightly slower to calculate. The resolution can also be decreased by using a negative value.

Amp. Method | resim_ampmeth – When the grid resolution is increased, this parameter specifies which method to use to sample the velocity.

Interpolate – Use interpolation. The velocity channel is stretched from the lower resolution to the increased one.
Wavelet Fast – Use wavelet turbulence to synthesize fine detail. Needs a Wavelet channel exported from the base simulation. This is a slightly faster approximation method.
Wavelet Nice – Use wavelet turbulence to synthesize fine detail. Needs a Wavelet channel exported from the base simulation.

Wavelet Strength | resim_wvstr – Specifies the strength of the wavelet turbulence.

Wavelet Cutoff | resim_wvcut – Turbulence with smaller amplitude will be cut off to reduce calculation time.

No-Export Channels | resim_tmpchan – Specifies the channels that are used just for resimulation, which will not be exported to the resimulation output cache. For example, for wavelet turbulence, removing the UVW/Wavelet and Velocity channels from the final simulation will reduce the cache size.



Example: Resimulation with Wavelet Turbulence

The example below shows the difference between a base Fire/Smoke simulation and the Resimulation result when using Wavelet Turbulence.


Base Simulation


Resimulated with Amplify Resolution = 1
and Wavelet Nice Method



Time Bend Resimulation

Phoenix has many tools for changing the animation timing of a cache sequence after it is simulated. Resimulation with enabled Time Bend Controls can produce smoother playback in cases where the Input Time Bend controls are insufficient. For more information on Resimulating with Time Bend, see the Tips and Tricks topic on How to slow down a simulation, animate the time scale, etc. for more information.



Use Time Bend Controls | resim_grid_timebend – Change the time scale of the base simulation according to the Time Bend Controls in the Input rollout. You need to re-scale the animation of all other interacting objects and sources in the scene as well. For constant play speed, use 3ds Max's Rescale Time feature.

Time Bend Method | resim_grid_timebend_method – A method to use when scaling the time of the resimulation. Note that both methods work best when Steps per Frame on the Dynamics rollout is set to 1. Note that speeds below 0.2 may produce unsatisfactory results when using either method.

General-Purpose – Works for all play speeds including backwards playback. It resimulates more quickly, but might produce flickering or jittering in the movement of the fluid. Sources or forces do not need to be present in the scene for this method. However, this method may not produce satisfactory results with animated sources.

Slow Down – Works only for play speeds between 0 and 1. It will produce smooth playback without flicker or jitter but will add more dissipation in the long run, so it's better to combine it with Multi-Pass Advection. This method requires all used sources and forces to be present in the scene. Any animation will need to be adjusted accordingly.



Example: Time Bend Resimulation

The example below shows the difference between the Input roll-out → Frm.Blend Interpolation used to slow down without resimulating, the Resimulation → Slow Down Time Bend Method and the Resimulation → General-Purpose Time Bend Method.


Input Play Speed = 0.2, Interpolation Blend


Slow Down method + Wavelet


General-Purpose method + Wavelet




Resimulation Cache

During resimulation, Phoenix reads cache files in the Input Simulation Path, performs resimulation operations, and then saves a new cache sequence in the Output Simulation path.

For more information on how to set up resimulation paths, see the Tips and Tricks page.

Wait if caches are missingresim_cachewaiting – When enabled, waits if the base cache file is not yet available. This can be used if another instance of 3ds Max is simulating the base cache at the same time (on the same or other computer).

Base Cache Files Path | resim_inpath – Specifies the base simulation caches which will be used as base for resimulation. $(same_as_output) by default.

Output and Render Path | resim_outpath – Specifies the path for the output cache files. See Output Path for details. $(scene_path) by default (will append "_resim" to the end of the file name).

If the Output and Render Path coincides with the Input Simulation Path, Phoenix FD will not prevent you from overwriting your existing cache files. It's valid to do so if you need a more complicated setup or when not enough disk space is available.

 The following error message may appear when you start a re-simulation:

"Cannot start the Re-Simulation! Please make sure the simulation was run with the 'Velocity' channel checked under the 'Output' roll-out, and that the cache files in the Simulation Input path exist."

The reason may be that either the files in the Input Simulation Path do not exist at all, or they do not have Grid Velocity Channel exported when you have simulated them beforehand. Of course, you may use more complicated setups where you resimulate over an already resimulated cache file, or you may Load an existing base cache file as the initial state of the re-simulation. These are all possible; you just need to have velocity in the base cache and an existing path to it.