This page provides information on the Grid rollout.
The PhoenixFDSimulator works best when the scale of the container matches the real-world size of the simulated effect. For example, If you are simulating a camp fire, your container should be at most a couple of meters wide. Note that it doesn't matter if this is two meters or two thousand millimeters - the way you view the units is irrelevant. Phoenix always converts the units to a common world-size length, so the only important thing is the size of the container. If you are simulating a volcano for example, the container should be several hundred meters wide, or several hundred thousand millimeters.
If your scene is structured in a way that makes it hard for you to scale the objects to their real-world size, you can use the Scene Scale parameter to tell Phoenix FD to treat the container as larger / smaller than it actually is when measured in Scene Units. This will influence the dynamics of the simulation, allowing to you achieve the correct behavior for your simulation without the need to tweak the size of the objects in your scene.
Using the parameters on this roll-out you can:
- Specify the Size and Resolution of the Simulator
- Enable / Disable Adaptive Grid which is a performance optimization allowing you to keep the size of the Simulator as small as possible thus reducing RAM usage
- Specify which Walls of the Simulator will be considered Open (infinite) or Jammed (ie. as solid obstacles, closed)
- Link multiple Simulators in a Cascade setup - for more information, please check the following article: Transferring fluid between Simulators using a Cascade Connection.
- Specify a Confine Geometry to limit the fluid calculations only to the volume of the specified object
UI Path: ||Select PhoenixFDSim|| > Attribute Editor > Grid rollout
Lock Voxel Count | lockGridRes – When enabled, changing the Cell Size will adjust the simulator size and preserve the original grid resolution. When disabled, changing the Cell Size will adjust the grid resolution and preserve the simulator size.
Units | metricUnits – Set the scale of the units used by the Phoenix simulation. By default the metric units are taken from Maya, but can be overridden to use certain units.
Scene Scale | unitsScale – Specifies a multiplier for the original scene units of the scene. Phoenix FD works best when the container size is close to the real-world size of the desired effect. You can use this parameter to make the simulator see the container as bigger or smaller than it actually is in the scene, in case you cannot change the general scene units of 3ds Max. Check the labels to the right of X, Y, Z for the container sizes affected by this parameter. Bigger scale would make the fluid move more slowly because it needs to travel a greater distance, while smaller scale makes the fluid move faster and more chaotic. For more information, see the below.
Cell Size | cellSize – The size of a single voxel, in Units. When Lock Voxel Count is disabled, these values change the number of cells. When Lock Voxel Count is enabled, these values change the size of the grid without changing the number of cells. For more information on the impact of the Cell Size on your simulations, see the below.
X Size, Y Size, Z Size | xSize, ySize, zSize – The grid size in cells. The dimensions shown in the Total Cells info box include the Scene Scale parameter - these sizes show how big the container would be for the simulation. In case you want to see how big the container for the loaded cache is in the scene without accounting for the Scene Scale, see the Container Dimensions in the Simulation rollout. Changing one of the sizes to 1 allows the simulator to perform a 2D Simulation. For more information on how to do this, please see the Setting up a 2D Simulation example below.
Increase/Decrease resolution – Changes the resolution of the grid while maintaining its size.
Example: Units (Scene) Scale
The following video provides examples to show the differences when Units (or Scene) Scale is set to 1.0, 5.0, and 15.0.
Example: Grid Resolution
The following video provides examples to show the differences when the Total cells from the Grid's Resolution is at 570,000, 4,000,000, and 16,000,000.
Example: Setting up a 2D Simulation
A 2D Simulation can be performed by adjusting the Grid dimensions such that either X Size, Y Size, or Z Size is set to 1. The main application of this feature is to create very wide fires that would otherwise be time-consuming with a 3D simulation, like the image below.
To keep features like the embedded gravity and pressure decay, it is recommended to leave the Y direction active and set the X or Z size to 1.
X,Y,Z | gridBCX, gridBCY, gridBCZ – Select between different container wall conditions for the simulation grid.
Open – The fluid is allowed to leave the bounding box of the Simulator through this wall. When simulating Liquids, if Fill Up for Ocean is enabled, the Wall is treated as if there is infinite liquid below the Initial Fill Up level.
Jammed(-) – The simulation behaves as if there is a solid boundary in the negative direction. The Adaptive Grid will not expand in this direction.
Jammed(+) – The simulation behaves as if there is a solid boundary in the positive direction. The Adaptive Grid will not expand in this direction.
Jammed Both – The simulation behaves as if there is a solid boundary in both directions. The Adaptive Grid will not expand in this direction.
Wrap – The left and right boundaries are connected (toroidal topology). E.g. Fluid leaving the Simulator from the +X wall will enter it again from the -X wall.
Use Confine Geometry | gridUseGizmo – When enabled, constrains the simulation only to the volume of a shape.
Set Selected Object as Confine Geometry – You can specify a closed geometry object with normals pointing outwards, and the simulation will run only inside this object. The rest of the cells will be frozen as if a solid body was covering them. This way you can fill irregular shapes with liquid, or generally speed up your simulation by chopping off empty cells when you have an irregular fluid shape, e.g. a rocket launch.
While using a Confine Geometry can speed up a simulation, it will not reduce RAM usage.
Confine Geometry | gridGizmo – Shows the currently selected Confine Geometry.
Use Cascade Simulator | gridUseCascade – When enabled, turns on the Cascade Connection Simulator. The liquid will be transferred from another simulator to this one in the region where both simulators intersect.
Set Selected Object as Cascade Simulator – Specifies another Phoenix Simulator which will transfer fluid to this simulator. This allows you to join several simulators into a structure with a complex shape. This can help you reduce memory usage by using many smaller simulators in place of a single large simulator. To set the Cascade simulator, select the main simulator first, then select the simulator to be used for the cascade. Then from the top Phoenix FD Menu choose Set Simulator Cascade Connection. For more information, see the Cascade tutorial for liquid simulations. For fire/smoke, see the Connecting Two Simulators in a Cascade Setup section on the Tips and Tricks page.
- The simulators must be run sequentially and each one should be started only after the previous one has finished simulating. The Cascade Simulator parameter points to the previous simulator in the sequence.
- For the Liquid Simulations to function correctly, you need to have the Velocity Grid Channel and all Particle Groups that are simulated in the Source Simulator exported to its cache files - otherwise the connection will not work properly.
- If you intend to use any additional channels such as RGB, particle IDs or Ages, etc, they also need to be exported from the Source simulator's Output roll-out before running the current simulator
Cascade Simulator | gridCascade – Shows the currently selected Cascade Simulator.
Adaptive Grid | adaptive – Enables the adaptive grid option and determines which channel to use (see the Threshold parameter). The grid will then resize to fit the volume occupied by the selected channel. Only channel values above the Threshold will affect the adaptive grid. Note that only the Open Container Walls will expand and contract using the Adaptive Grid.
Either keep Adaptive Grid disabled or set the Container Walls: Y to Jammed Both when simulating Oceans. The Ocean Level parameter in the Rendering rollout depends on the vertical size of your simulator.
Threshold | gridThreshold – When Adaptive Grid is enabled, the grid expands when the content of a cell near the borders crosses this value. On the contrary, when No Smaller Than Initial Grid is disabled, the grid will contract when there are no cells with content above this value near the borders.
The Threshold value depends on the channel used for adaptation. For Smoke, a value of 0.01 is a good starting point. For Fire, setting the Adaptive Grid Channel to Temperature/Liquid and increasing the Threshold to 800 or more should give you good results.
Extra Margin | adaptMargin – Specifies the number of cells between the end of the grid and the active zone. You can use this to give the fluid a bit more room if the adaptive grid can't keep up with the simulation.
No Smaller Than Initial Grid | nbiGrid – When enabled, the Adaptive Grid can't contract to a smaller size than what is given as the initial X,Y,Z size for the Simulator. Note that this way the initial grid box is always included, even if the fluid has moved farther from it. If this option is disabled, the grid will always encompass only the active fluid and will move together with it if needed.
Expand and Don't Shrink | onlyExpand - When enabled the Adaptive Grid will expand without shrinking. If this option is disabled, the grid may shrink if the content of the tracked channel for a given section of the simulator is below the Treshold value. This option is useful when making very thin smoke simulations which usually will contract the grid when the fluid gets below the Threshold value.
Limited By | gridLimitedBy – Determines whether the grid's expansion is limited. If it is limited, this parameter also determines the units in which the Limited To value is expressed.
None – No limitation. If Preallocate Memory is enabled, this means all available memory can be used.
Memory – The expansion is limited by the total consumed memory. The limit is specified in percentages.
Cells – The expansion is limited by the cell count. The limit is specified in millions of cells.
Limited To | gridLimitedTo – Specifies the limit of grid expansion if Adaptive Grid or Preallocate Memory are enabled. The meaning of this value corresponds to the Limited By parameter.
Preallocate Memory | gridPrellocate – When the grid size is changed, a new grid is allocated and the old content is transferred into the new space. However, during this process, both grids, the new and the old one, exist simultaneously and the RAM usage is doubled. This way you will be able to use only as much as half of your memory. To solve this problem, this option allocates all memory in the beginning of the simulation at once (eventually limited by the Max Memory and Maximum expansion), and simulates only in a part of it, allowing re-size without doubling the memory usage.
Disabled – Allocates the exact amount of memory. If the grid changes its resolution during the simulation, a new piece of memory is allocated for it, and the old one is copied over. This temporarily increases the overall consumed memory. This mode is the easiest to set up but is not recommended for huge grids.
When Adaptive – Preallocates memory when the Adaptive Grid mode is enabled. Limited By and Limited To control how much memory is preallocated at the start of the simulation. No other grid memory allocations are done during the simulation.
Always – Always preallocates memory at the start of the simulation, regardless of grid settings/resizing. Limited by and Limited To control the exact amount. This can be used if the grid is manually resized.
Manual Adaptation Limits
By default, the adaptation algorithm uses the Container Walls to determine if the grid can be extended in a particular direction. If the wall is open, this means that cells in that direction can be added. The maximum grid expansion is only limited by total cells or memory used. This section allows fine control over the grid expansion in each direction.
Enable Limits | adaptLimitEnbl – Enables using manual limits along each axis when adapting the grid.
+/- X | adaptLimitXp, adaptLimitXn – Specifies the limits along X axis.
+/- Y | adaptLimitYp, adaptLimitYn – Specifies the limits along Y axis.
+/- Z | adaptLimitZp, adaptLimitZn – Specifies the limits along Z axis.
Fit Camera | adaptCamera – Species a camera whose frustum will be used to determine the maximum expansion. The Adaptive Grid will not resize beyond the frustum. Note that the algorithm might not handle complicated cases properly. For such cases, the limits must be animated manually.
When a Fit Camera is provided, the Adaptive Grid will expand no further than the already specified Adaptation Limits.