finalFluid™ 1.0

finalFluid Grid Object

The finalFluid Grid behaves exactly like any other standard 3ds Max Object. You may create one ore multiple independent grids in a scene.
fFluidGrid is an essential component when creating Fire and Smoke simulations. Every fluid simulation in a 3d scene has to have at least one Grid Domain object. As explained in the About finalFluid section of this manual, the main simulation Domain is key to all of the controls and effects you wish to create.

This Grid object contains the main parameters to control the overall memory consumption and performance, along with simulation behavior and rendering settings.

On - check this option to enable the helper object (Grid Domain).

Select Device - click this button to bring up a CUDA device Selection dialog. It is strongly suggested to pick a secondary CUDA card for simulation calculations.

Cache - this acts as a shortcut for the Geometry Cache function. Click this button to generate a file cache of any animated objects in the simulation.

Preview - press this button to activate finalFluid's native Realtime preview playback window. You may still move the camera and modify objects in the 3ds Max editor.
Note: Character animations or object animations in general need to be cached before Realtime playback is possible.

Preview in VP - press this button to allow a Realtime preview inside of the 3ds Max 2024/23 viewport. This option is linked to the frame-slider and the preview will be in sync with the frame/playback of the 3ds Max viewport. Keep in mind, there is still a simulation going on, jumping to specific frames in an animation means the simulation has to be calculated beginning with frame 0!

Show VP - this option visualizes the "intended" true 3ds Max size Grid Domain. It is more than likely that this Grid size and position will never be achieved in a 3ds Max scene. Grids can only be placed in a fixed raster in space. The true simulation Domain Grid (VGrid) is the actual position and extend of the Domain that is used for simulations.

Show VGrid - check this option to visualize the true finalFluid Domain as it is placed in the 3ds Max scene. Keep in mind due to GPU acceleration restrictions Simulation Grids can only be placed in a fixed raster. This visualization of the Domain Grid will tend to jump around as the Size or position is adjusted.

Edit on Fly - check this option to Edit values on the fly. The realtime simulation continues and parameters will be adjusted in realtime. If this option is off, the simulation starts all over for every single parameter change.

Show Debug - check this option to turn on debug information in the Realtime view port. Cells and emitter bounding boxes will be drawn on top of the simulation.

Icon Scale - lets you set the help icon scale.

Cell Size - sets the Voxel size. Keep in mind cutting cell size in half is an 8x increase in the total amount of number of cells (voxels).

Grid Width/Height/Depth - sets the size of the simulation Grid Domain. Thanks to the sparse Grid approach, the dimensions can be indefinitely large, Blocks of voxels will only be assigned/created when and where needed.

Memory Limit (GB) - sets a maximum "estimate" memory amount to be used for a simulation. For higher resolution effects, this memory parameter can be increased. finalFluid uses a highly dynamic Sparse Grid approach with an extreme lazy allocation/deallocation memory pool. Setting this to a 5GB does not necessarily mean it will use only 5 GB on the graphics card. An indication of a value too low would be visible clipping or missing voxels in debug mode.

Multi GPU - check this option to simulate on secondary GPUs when available, offering a potential performance increase.

Gravity X,Y,Z - sets the gravity direction vector in X,Y,Z direction for buoyancy effects. This specifies not only direction, but can be used to increase or decrease the buoyant force for all emitters.

Volume Shadows - check this option to get shadows in the realtime preview.

Single Pass Advection - check this option to get an optimized but less physically accurate gas pressure model.

Big Effect Mode - check this option to simulate large scale effects like volcano eruptions or gasoline explosions.

Predict Time - this sets the sampling time needed to create new voxels in the grid.

Sim. Sub Samples - sets the grid update rate. finalFluid uses a fixed time stepping for consistent simulation behavior. Increasing sub-frame sampling can improve grid response time, at the cost of performance. In general finer detail and fast expanding or moving gas needs much higher sub-frame sampling.

Simulation Speed - artificially sets the "playback" speed of a simulation.

Simulation Start - defines the simulation start frame. This can either be set by the 3ds Max time line or manually at a specific frame.

Frame - becomes active when Custom in Simulation Start is chosen. Set any frame as the start frame of the simulation.

Emitter, Colliders, Forces and Preview

Emitters & Colliders - finalFluid is a fuel based simulation system, cells need to be filled with fuel to ignite and burn off. For finalFluid, Emitters are practically the same as Colliders. The main difference being, the Couple Rate with high "overwrite" factors. All Emitters in this list will be actively used in the simulation. 

Pick - use this button to pick any emitter helper in found in the scene.

Remove - click this button to remove any selected emitter

Load/Save - use either the Load or Save button to store or save a preset for a selected Collider/Emitter.
Note, a message box will pop up on load. It will allow You to choose to either load the data into global (Grid) or local (emitter) settings. In all cases the the following settings will be saved/loaded:
Advection - Gradient - Vorticity - Fading - Sparcity. In addition, saving a local setting will also store emitter specific settings (e.g. Velocity).

Forces 

Forces in finalFluid can be either standard 3ds Max Space Warps or you can use the dedicated finalFluid Space Warp which enables you to use an OpenVDB velocity field.

Pick - pick any compatible 3ds Max Space Warp object (helper) to add it to the list

Remove - click this button to remove the selected object from the list

Preview 

Emitters, by default, will be shown in the preview window (including animation when cached). This object list allows you to add any other geometry object from the scene to the realtime preview. In addition to removing/adding Geometry to the Realtime preview window, the standard 3ds Max visibility flag (hide object) can be used to hide an object in the Realtime view.

Pick - pick any 3ds Max scene object (geometry) to add it to the list

Remove - click this button to remove the selected object from the list

 

Advection 

The core simulation controls, primarily affecting the look of a simulation, are found in the Advection menu section. Those settings are influencing the Grid domain and will affect all emitters and forces, unless Local options are active for specific emitters..

Ignition Temp. - as a fuel based solver, all simulations start with an amount of fuel that will eventually ignite and end up as heat,flame  and smoke. This control sets the combustion temperature of the fuel (when it starts to burn into flames).

Burn Per Temp. - defines how much of the fuel is burnt in one go when first ignited. A value of 100 will burn all fuel available in one go and 50 half and  so on ...

Fuel Per Burn - sets the minimum amount of fuel needed to start the ignition. higher numbers will usually create smaller flames or burns. lower numbers will start fires much faster.

Temp. Per Burn - when fuel is ignited, heat is generated. This sets the amount of temperature that each burn/ignition produces. This can be used to control a chain reaction by igniting a small amount of fuel, first.

Smoke Per Burn - where there is fire there is smoke. This sets the amount of smoke each burn creates.

Divergence Per Burn - each ignition creates extra pressure that spreads out fuel, fire and smoke. Divergence lets you control the spread per burn. The higher this number, the more spread out will be the effect.

Buoyancy Per Temperature - sets the amount of up/down drift (depending on Gravity) driven by temperature. Heat accelerates up-drift reduced heat will slow down upwards movement. 
Note: This parameter will only work when there is a Gravity greater zero.

Cooling Rate - defines how fast the fire and smoke cools down. Higher numbers will cool down faster.

 

Fading & Damping

Nearly all simulation settings, in finalFluid, are adjusted around individual component's Fade and Damping values. Velocity, Fuel,Temperature and Smoke can individually be adjusted to fade at very specific thresholds.

Fading

Blending or fading out effects is done by component or layer. Velocity for example is the pure velocity component of a simulation step. Velocity, just like Fuel or Temperature can be faded out at very specific thresholds within voxels in the Grid.

Velocity - sets the fading factor for the velocity. This value is applied with each sub step of the simulation.

Fuel - fading factor for the fuel component. Each simulation step the amount of fuel is reduced by this factor.

Temperature - fading factor for the temperature component. Each simulation step the amount of temperature is reduced by this factor.

Smoke - fading factor for the smoke component. Each simulation step the amount of smoke is reduced by this factor.

Damping

Damping reduces the effect of the simulation component, which is in contrast to Fading, which will remove the effect from the simulation grid over time.

Velocity - sets the amount of dampening applied to the velocity component of the simulation. With each sub-step the influence of velocity in each voxel is is reduced.

Fuel - sets the amount of dampening applied to the fuel component of the simulation. With each sub-step the influence of fuel in each voxel is reduced.

Temperature - sets the amount of dampening applied to the temperature component of the simulation. With each sub-step the effect of temperature in each voxel is is reduced.

Smoke- sets the amount of dampening applied to the smoke component of the simulation. With each sub-step the influence of smoke in each voxel is reduced.

Sparsity

finalFluid is a true Sparse Grid solver. Blocks of Voxels are only created when and where needed. This allows to have an infinite Grid Domain without any memory issues or overhead. "Burnt out" voxels will be instantly recycled in memory, making it the most memory efficient method of all grid based solvers.

Allocation Weight 

Voxels need to be created only in those areas deemed necessary and worth it. Allocation weights are controlled per component and define the "importance" factor for creating new blocks of voxels.

Velocity - sets the importance factor in creating new voxels when velocity changes or "appears" in a block of voxels. A value of 0 means no voxels will be created when velocity is changing/appearing in a block of voxels.

Fuel - sets the importance factor in creating new voxels when fuel changes or "appears" in a block of voxels. A value of 0 means no voxels will be created when fuel is changing/appearing in a block of voxels.

Temperature - sets the importance factor in creating new voxels when temperature changes or "appears" in a block of voxels. A value of 0 means no voxels will be created when temperature is changing/appearing in a block of voxels.

Smoke - sets the importance factor in creating new voxels when smoke changes or "appears" in a block of voxels. A value of 0 means no voxels will be created when factor in creating is changing/appearing in a block of voxels.

Allocation Threshold 

Voxels are created based on the Allocation Weight, however this allocation factor can only be triggered when there is "enough" of the component available in a block of voxels. 

Velocity - sets the "amount" of velocity that needs to be present to trigger velocity allocation weight. Setting this to, lets say, 200 will only trigger the creation of a new block of voxels when the velocity is 200 or higher in the next time step.

Fuel - sets the "amount" of fuel that needs to be present to trigger fuel allocation weight. Setting this to, lets say, 50 will only trigger the creation of a new block of voxels when the amount of fuel is 50 or higher in the next time step.

Temperature  - sets the temperature that needs to be present to trigger temperature allocation weight. Setting this to, lets say, 8 will only trigger the creation of a new block of voxels when the temperature is 8 or higher in the next time step.

Smoke - sets the "amount" of smoke that needs to be present to trigger smoke allocation weight. Setting this to, lets say, 100 will only trigger the creation of a new block of voxels when the amount of smoke is 100 or higher in the next time step.

 

Color Gradient

Fire,Smoke is defined by temperature. While this color gradient allows you to create a nice representation of the Fire and smoke colors in the Realtime preview window, it is not meant to represent a final rendering. For that you would export the simulation volumes to an OpenVDB file sequence and render with an advanced rendering solution like finalRender or any other renderer supporting OpenVDB volumes.

The color gradient allows to load and save gradients. Those gradients can be easily loaded back into finalRender or thinkingParticles for example. To learn more about how to use the gradient Tool, CLICK HERE

Vorticity 

finalFluid simulations can be driven by all sorts of forces or parametric conditions. An overall  "force less" vorticity factor can be applied to all components individually or as whole. Vorticity acts as a global, constant disturbance added to components of a simulation (velocity,temperature ..) within each simulation step.

Strength - defines the strength of the constant disturbance added to the flow.

Velocity Mask - sets the vorticity factor to be applied to velocity for each time step in the simulation.

Temp. Mask - sets the vorticity factor to be applied to temperature for each time step in the simulation.

Smoke Mask - sets the vorticity factor to be applied to smoke for each time step in the simulation.

Fuel Mask - sets the vorticity factor to be applied to fuel for each time step in the simulation.

Constant Mask - sets the vorticity factor to be applied to all components for each time step in the simulation.


Geometry Cache

With a realtime workflow as implemented in finalFluid, every animated property affecting geometry or positional changes of emitters will need to be cached beforehand, to see and adjust the effect in the realtime preview window.

Note: 
The cache file is automatically created in the folder where the 3ds Max file resides.

Enable - when checked, the Geometry cache will be used in the Realtime preview window to play back object or emitter animations. Simple parameter animations, do not require a Geometry cache, 3ds Max animations will work as normal.

Active Time Segment - check this option to use the current Active Time Segment to cache the animation.

Custom Range - when checked, a custom animation range can be set.

Start Frame - sets the start of the Animation to cache.

End Frame - sets the End Frame for caching the animation.

Cache on Export - toggle this button to enable an automatic geometry cache whenever an VDB export happens

Generate - press this button to create a Geometry Cache necessary for the realtime playback.

VDB Export

OpenVDB is the industry standard used to store and transport massive volume data between applications. At the very end of a simulation setup, stands the production quality rendering of the finalFluid simulation. Rendering is done through a renderer of your choice which must support OpenVDB volume rendering. finalRender for example is such an advanced rendering solution offering volumetric realtime rendering through the GPU accelerated NanoVDB interface.

Active Time Segment - check this option to export the volume data as individual components nested within one OpenVDB grid.

Custom Range - check this option to define a custom range to export the data.

Start Frame - sets the start of the Animation to cache.

End Frame - sets the End Frame for caching the animation.

Nth Frame - defines every Nth Frame to be saved to an OpenVDB File. Keep in mind that this must be synced with the final rendering setup (Every 2nd frame in rendering and in OpenVDB export).

Format

Z is up - this is the space 3ds Max uses.

Y is up - this is the space Maya and Houdini uses

World Space - check this option to store all voxels in world space.

Example:

To use an exported finalFluid VDB file for simulation and rendering with thinkingParticles You would export as Y is up and World Space checked. thinkingParticles uses the Houdini/Maya space by default. World-Space ensures that the finalFluid simulation is automatically placed at the exact same position it was, when created with finalFluid.

Channels

Channels are individual grids in an OpenVDB file. Each simulation component can be stored in its own 3D volume grid within one OpenVDB file. Keep in mind, the target rendering application must support multiple grids within one OpenVDB grid.

Density -  check this option to export the Density channel

Temperature - check this option to export the Temperature channel

Fuel - check this option to export the Fuel channel

Fire - check this option to export the Fire channel

Smoke - check this option to export the Smoke channel

Color - check this option to export the color grid as well. This is especially useful when color mixing happens.

Velocity - check this option to generate a velocity grid when exporting

VDB File - opens up a standard windows file save dialog.

Export - use this option to start the file export. Be Patient exporting immense amounts of volume data takes its time!


Show in ViewPort

This option is only valid for 3ds Max 2023 and newer. The volume data stored in VDB file sequences can be visualized right within the 3ds Max viewport. 

On - check this option to display the volume data in the 3ds Max viewport.

Grid Drop Down - pick any reasonable grid form the VDB file to visualize within the 3ds Max viewport

Multiplier - this is a global multiplier to adjust or modify the density of the volume.


License

Active/Inactive - indicates if a license is active or inactive on this PC.

Server: - displays a short feedback from the licensing tool indicating the amount of licenses available/used.

I - press the Information button to see more details about the current license situation.

 

 

© cebas VIsual Technology Inc.