Scene Troubleshooting - bakcxoj/OpenFLIP GitHub Wiki

This document will detail common scene and simulation problems and how they can be resolved.


Thin obstacles, leaking fluid

Fluid leaking through thin obstacles is a common issue with FLIP simulations. The simulator uses particles to track where the fluid exists and if particles are moving quickly, they may clip through the walls of a thin obstacles and a collision won't be detected. The simulation works on a grid, and if the obstacle is too thin, it may not show up effectively on the simulation grid. This will cause fluid to slip through the obstacle. Some fixes for this include:

  1. Increase domain resolution (Simulation Panel) - This will increase grid detail to help the object show up better on the simulation grid.
  2. Increase obstacle thickness - A thicker obstacle will show up better on the simulation grid.
  3. Use a thick object for simulation and a thin object for rendering - This will depend on what kind of animation you are trying to achieve.
  4. Reduce the CFL Safety Factor number (Advanced Panel) - This will limit how far fluid can move in a time step and may prevent fluid from passing through the obstacle.

Thick obstacles, leaking fluid, unexpected behaviour

Make sure that your object mesh is Manifold.


Animated obstacle is static when running the simulation

If your object has animation more complex than keyframed location/rotation/scale, you will need to enable the Export Animated Mesh option (Obstacle Settings).


Simulation not generating enough whitewater (foam/bubble/spray)

  1. Increase domain resolution (Simulation Panel) - In general, higher resolution simulations will produce higher detail and larger quantities of whitewater
  2. Increase Wavecrest Emission Rate (Whitewater Panel) - This will increase the amount of whitewater at wavecrests and will generally produce more foam particles. Try values in the range of 100 - 1000.
  3. Increase Turbulence Emission Rate (Whitewater Panel) - This will increase the amount of whitewater in areas of high turbulence and will generally produce more bubble particles. Note that bubble particles rise to the surface and become foam, so this will also increase the amount of foam over time. Try values in the range of 100 - 1000.
  4. Lower Min Energy Speed (Whitewater Panel) - This is the minimum speed of the fluid (in m/s) that will begin triggering whitewater generation. Set this to a value appropriate to your domain size. By default, one Blender unit is equal to one meter. Note that large domains will generally have higher speed fluid and smaller domains will generally have lower speed fluid.

Whitewater particles are too large/small when rendered

Adjust the whitewater particle scale in the Display Settings.


Whitewater particles do not show up when viewport shading is set to Rendered

Uncheck the Render Only setting in the Display Settings. This will make the particles visible in the 3D viewport.


Inflow will not fill up a tank when submerged

See this document for how to use the Inflow Constrain Fluid Velocity setting to fill up a tank: Creating a submerged pipe to fill a tank.


Small inflow not emitting fluid (low resolution simulation)

If the domain resolution is low and the inflow mesh is small/narrow, fluid may not be emitted when baking the simulation. This is because inflow calculations are run on a grid where the domain resolution defines how detailed the grid is. If the domain resolution is too low, then calculations might not show up effectively on the grid and the inflow will not emit fluid. The solution is to either increase the size of the inflow mesh or increase the the simulation resolution.

The inflow thickness/size should be at least one grid cell large to begin emitting fluid. Tip: You can visualize the domain grid by enabling the Display Grid setting in the Debug Panel.


Mesh banding artifacts against curved obstacles

The mesh generator uses a grid to convert particles to a triangle mesh. When thin layers of fluid are against an obstacle, the particles may not show up well on the meshing grid. Some fixes for this include:

  1. Increase surface subdivision level (Surface Panel) - This will create a finer mesh grid and generate a higher quality fluid mesh. This will also take more time to compute but the result is often worth the extra time.
  2. Increase particle scale (Surface Panel) - This will increase particle size when meshing. The particles will show up better on the meshing grid. This does not take much more time to compute, but your fluid surface may end up looking 'blobby'. Try values in the range of 1.30 - 1.50.

Fluid behaviour changes when increasing resolution

The reason for this is due to how fluid calculations are made in a simulation. Calculations are run on a grid where the resolution defines how detailed the grid is. Higher resolutions lead to higher detailed grids. At a higher resolution, more detailed and accurate simulation calculations are made and this is why the simulation ends up being higher quality and more detailed. A higher resolution simulation is able to capture finer detailed splashes that may not appear in lower resolution simulation due to lack of accuracy. In a high resolution sim, these splashes not present in low res sims will affect the future course of the simulation and that is why you will see differences.

A good simulation workflow can be to run a low, medium, and then finally a high resolution simulation and make adjustments as necessary along the way. If a final simulation is going to take a very long time to compute, it may be worth it to run a medium resolution simulation that takes a few hours before committing to the final simulation.


Fast moving fluid disappears from simulation

When fluid is moving quickly across the domain, the simulator may need to remove fluid particles from the domain in order to keep the simulation stable. If fluid is moving very quickly, such as from a high speed inflow, it is possible the the simulator may be required to remove all fluid particles in order to keep a stable simulation.

The fix for this issue is to allow the simulator to take more frame substeps in order to keep the simulation stable and to prevent loss of quick moving fluid. This can be done by increasing the Max Frame Substeps value in the Advanced Panel. Try setting this to a high value such as 50. The simulator will only take as many substeps as it needs to keep the simulator stable, so setting this to a higher value will not increase baking time more than is necessary.

Explanation:* In order to keep the fluid simulation stable, the simulator limits the maximum distance a fluid particle can travel in a single substep. A particle is limited to only travelling a certain number of grid cells (CFL Condition Number) in a substep. If a particle is moving quickly, the simulator will take additional substeps in a frame to make sure a particle does not exceed the grid cell distance limit. The Max Frame Substeps value limits the total number of substeps the simulator is allowed to take per frame. If particles are moving at a speed that cannot be resolved within the maximum number of substeps, the particles will be removed. Since this 'speed limit' is related to the number of grid cells, the speed will be related to the grid resolution and this issue will become more prevalent in higher resolution simulations. Note that if using a a small domain or world size will also make this issue more prevalent since in general, fluid will move faster across a small domain than a large domain.


Simulator does not continue baking after increasing frame range

To update the simulation settings, such as frame range, you will need to tell the addon to re-export the settings. This can be done by setting the Bake Export Mode to Force (Simulation Panel).


Difficulty achieving small scale fluid effects with small World Size

The FLIP simulation method excels at large scale fluid effects, but can lack in realism for small-scale fluid effects. This is due to the lack of surface tension forces in the simulation method, which play a larger role in small scale fluid effects.

There can be issues with running a simulation with a small domain or small World Size setting (less than 1m). It is common in fluid simulation not to use real world scales for small scale effects. This is due to how math is processed in the computer. With computations, there is a limited amount of precision in the math and small scales can lead to very small numbers which require too much precision and cause problems in the fluid physics solver. In fluid simulation, you will often need to work around the limitations of the solver and use scales/values that do not make sense physically. For a small scale effect, it is recommended to use a large domain size and alter the timing or gravity value to achieve the animation speed and look that you want to achieve.


Blender often crashes suddenly or does not apply transforms while rendering

This can be caused by instability handling large meshes in the 3D viewport. At the moment the cause is unknown, but a workaround that commonly fixes the issue is to set the Render Display to Full Screen (Blender Render Properties Documentation).

Note: This workaround will only work if your are running a scene within a single window. If you are running a Blender scene on multiple windows/monitors, any extra windows should be closed before beginning a render. You will still be able to run multiple instances of Blender while rendering.

The most stable way to render large simulations is to render from the command line. See this document for instructions: Rendering from the Command Line.


Export to Alembic cache is not exporting animated meshes

Alembic export is not officially supported in the OpenFLIP addon. The reason for this is that the Blender Alembic exporter can be buggy and unstable with the large meshes produced by the fluid simulator. The Alembic exporter also does not offer much in terms of customizability, so how the cache is imported into other software may be unpredictable.

However, there is a workaround that may help you export the fluid meshes to an Alembic cache. In order for Blender to recognize the fluid object meshes for export (fluid_surface, whitewater_foam, whitewater_bubble, whitewater_spray), a modifier must be added to the objects. A modifier which does nothing such as a smooth operator with 0 repeats would be a good choice. The animated meshes can then be exported within Blender (Blender > File > Export > Alembic (.abc)).