Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


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.

UI Text Box

This topic is regarding fire/smoke resimulation. Liquid resimulation does not use separate path. Instead, it overrides the existing files, because it does not change the channels used as source.




Units to Use When Simulating


Simulating Liquid Scenes from Phoenix  2.2 or older

If you open а scene saved with Phoenix version 2.2 or older, it contains a PHXSimulator which is a combined simulator for both liquids and smoke/fire. The PHXSimulator can no longer be created in Phoenix 3.0.

You could convert this simulator to a LiquidSim object by selecting it and typing the following into the MaxScript listener:

Code Block

This will allow you to access new features such as Wetting in the Dynamics rollout. Non-liquid options will also be hidden.


Simulation in 2D


The FireSmokeSim has the ability to perform a 2D simulation if one of the grid sizes is set to 1. To keep features like the embedded gravity and pressure decay, it is recommended to leave the Z direction active and set the X or Y size to 1. The main application of this feature is to create very wide fires that would otherwise be difficult with 3d simulation, like the image below.


However, this option is not applicable in fire/smoke simulations, because it's not clear what exactly the object must be filled with. For example, you may need smoke, or fuel, or hot/cold air. For fire/smoke simulations, the volume fill must be arranged manually using Volume Brush mode for the PHXSource with Brush Effect set to 100%.

  1. Create a PHXSource helper, and select Volume Brush for Emit Mode. Select the channels that must be filled.

  2. Create a geometry covering the volume that should be filled with the desired channel, and add it as an Emitter Node in the PHXSource's General rollout.

  3. Animate the Brush Effect parameter from 100 in the first frame to 0 in the second frame.

  4. Disable the Velocity checkbox of the LiquidSrc helper, or the fluid may refuse to leave the volume of the emitter.


For smoke/fire, the ability to put a Phoenix simulator as a source for another one is used. When a Phoenix object is used as a source, the implicit surface is determined by the Surface channel in the Rendering rollout, the Isosurface Level defines the geometry surface, and the new born fluid will appear over it. You have to set the isosurface level to a very small value, thus making the source surface a box. To avoid the additional speed added by the discharge parameter, in the PHXSource rollout, use either the Volume Brush for the Emit Mode with Brush Effect set to 100%, or use Volume Inject mode with a very low Outgoing Velocity (e.g. 0.001). Do not make it zero, because the system will decide that this is not a source and will skip it. To transfer the parameters of the gas from the first simulator to the second one, import the used channels of the first simulator into the map slots of the source helper using a Grid Texture. As the simulation will usually be ran multiple times, to avoid backward interferences, add the second simulator in the exclude list of the source simulator.


Shading particles by Age, Speed, Position, or by their particle color channel


A single Particle Shader, by default, shades all selected particle systems using the same color.

In Phoenix 3.10, we added a Color Map slot you can use to color the particles differently, but it can do so much as a texture allows it to - e.g. a checker won't be too much of a interesting shading, and furthermore, it won't change with time, and even if you animate it, it still won't fit the particle movement. However, you can plug a Phoenix Grid Texture in the Color Map slot - this way the particles from a Phoenix simulation can read voxel data from the grid channels, such as Speed or RGB.

In Phoenix 3.11, we extended the Phoenix Particle Texture so particles can be shaded using their own channels. Before, what the Particle Texture could do was to take the particle positions and create white areas around each particle in 3D space on a black background.


Phoenix is able to export its content as a texture (see Grid Texture). This makes it possible to use an external volumetric shader for the rendering, such as the VRayEnvironmentFog.


With V-Ray CPU, Phoenix's shader for fire and smoke and Phoenix's Particle Shader both work as a 3ds Max atmosphere by default. Atmospheres are rendered one over the other, so you might get renders where objects appear misplaced or rendered in the wrong depth order if you mix Phoenix with other volumetric effects.


To resolve this problem, you could switch the volumetric rendering mode to Volumetric Geometry for Fire / Smoke, and respectively for particles you could enable Render as Geometry in the Phoenix Particle Shader. This will allow V-Ray CPU to properly blend your Phoenix simulation with the rest of the volumetric effects in your scene. Note that in these modes you might have to increase the V-Ray Max Transparency Levels option in the Global Switches V-Ray tab.


The procedure is as follows:

  1. Create a FireSmokeSim or a LiquidSim object in your scene. The grid size is not important because the imported cache files will override it.
  2. From the Input rollout click the Cache Path... button and pick any file of your sequence and the entire sequence will be loaded. You can also manually type in the format of the sequence using format specifiers for the frame number. Phoenix supports the following frame number formats types:

    Code Block
    #: frame 1 becomes "1", frame 10 becomes "10", frame 1000 becomes "1000";
    ##: frame 1 becomes "01", frame 10 becomes "10", frame 1000 becomes "1000";
    ####: frame 1 becomes "0001", frame 10 becomes "0010", frame 1000 becomes "1000";
    %d: frame 1 becomes "1", frame 10 becomes "10", frame 1000 becomes "1000";
    %4d: frame 1 becomes "⋅⋅⋅1", frame 10 becomes "⋅⋅10", frame 1000 becomes "1000";
    %04d: frame 1 becomes "0001", frame 10 becomes "0010", frame 1000 becomes "1000";
    <frame>: frame 1 becomes "1", frame 10 becomes "10", frame 1000 becomes "1000";
    <frame4>: frame 1 becomes "⋅⋅⋅1", frame 10 becomes "⋅⋅10", frame 1000 becomes "1000";
    <frame04>: frame 1 becomes "0001", frame 10 becomes "0010", frame 1000 becomes "1000";
  3. Phoenix will ask you if you'd like to load a predefined render preset. The presets Phoenix comes with are to be used as starting points when importing a foreign cache.
  4. By that time you will be able to see a preview of the cache in the viewport, and you will also be able to check which grid channels are loaded under the Simulation rollout, in the Cache File Content list.
  5. In case you want to render using motion blur, or resimulate over the imported cache, you must have the velocity channel exported as well. You can scale the motion blur velocities if needed, by adjusting the Motion Blur Multiplier parameter in the Rendering rollout.