FLIP Domain Object
The Domain object is a FLIP (Fluid Implicit Particle) solver for the simulation of fluids, gases, smoke, fire, etc.
For details of how to use the FLIP solver and the XP Material for volume rendering, see the main Volume Rendering page.
Note that this is quite different from the SPH fluids object also present in X-Particles.
The object's interface has several tabs:
Each tab is shown in its own section below.
- Object tab
- Emitters tab
- Modifiers tab
- Colliders tab
- Sources tab
- Display tab
For the buttons at the bottom of the interface and the 'Groups Affected' tab, please see the 'Common interface elements' page.
These are general settings for the solver.
This drop-down has three options, allowing you to choose the type of solver:
The solver uses algorithms for the simulation of liquids.
This type of solver is more intended for gas. smoke, and fire simulations.
If 'Gaseous' mode is selected the domain object will create its own internal emitter to generate particles for smoke, fire, etc. This is convenient but does not allow access to the many options in the emitter. If you need to change those, choose 'Particles (Gas)' mode and drag an emitter into the link field which appears.
A link field for an emitter; this field only appears if 'Type' is set to 'Particles (Gas)'.
Particles Per Voxel
Not available if the solver type is 'Liquid'. In the other two types, the solver volume is divided into a number of virtual small cubes known as voxels. The solver requires a particle emitter to provide air for the simulation (this is created automatically in 'Gaseous' mode, in 'Particles (Gas)' mode you must supply one). This setting is the number of air particles per voxel. Larger numbers result in a more accurate simulation at the expense of longer playback times.
This is a weak force between the particles that push them apart to give better particle distributions during simulation. FLIP can loose volume over time, this helps to combat that. For liquids it helps to keep the liquid volume, for gas it helps to keep the air particles better distributed giving a more accurate simulation. Please note: this does add some small overhead, turning it off will save some memory and computation time.
This value represents how strongly the particles are pushed apart by the weak springs.
When solving simulations energy and swirling motion can be lost due to inaccuracy and interpolation. Vorticity calculates this swirling motion and boosts it, enabling you to put back or boost this motion. This can be used to give more turbulent motion, especially useful for fire/smoke simulations that will have turbulent motion. Adding a Turbulence modifier can also help to inject additional movement or an additional Vorticity modifier to have larger or smaller motion. The vorticity in the Domain object is at the grid resolution.
This setting changes the viscosity of a fluid. With higher values the particles stick together more strongly, giving a thicker, more treacly fluid.
These settings control the size of the solver.
This is the voxel size within the boundaries of the solver. The solver volume is divided into cubes of this size. Smaller values result in more accurate simulations but are slower to playback and render. As the voxels get smaller, more particles are required to generate the smoke, etc.
The number of voxels used and the memory required are shown in this section after the 'Size' setting.
Changing this value will offset the solver volume from the object axis. Note that any particles which are no longer inside the solver as a result will not be used for the simulation.
The size of the solver, represented by a yellow box in the editor. Particles will not escape from this box but will collide from its walls.
For information, the number of voxels used on each axis and the memory required. The memory shown is a guide, note that a small change in voxel size can result in a very large change in memory use and computational time.
By default the solver has 6 walls, along the 6 orthographic axes (X+, X-, etc.). You can turn off any or all of these walls by unchecking the relevant switch. This is not just a cosmetic effect: particles will not rebound from disabled walls and will escape the solver. Once outside the solver they will not take part in the simulation.
As in the emitter, this value can be used to slowdown or speed up the simulation. The diffusion of properties (smoke) cannot be changed by this, the diffusion is an inherent part of the solving and due to the voxel resolution and interpolation of the particles to/from voxels.
The domain is an iterative solver, refining the calculations each iteration. More iterations result in a more accurate simulation but will take longer to complete. The accuracy setting determines how close to 'exact' the solution is; the higher it is the more likely it is to reach the maximum number of iterations.
Click the small black arrow to the left of the word 'Accuracy' to see this option.
By default this is unchecked, which gives the most stable solver. Checking this switch will give a faster solve but also reduced stability.
The maximum number of iterations allowed, for very fast velocity changes (explosions) this may need to be higher if you notice artifacts (the 'Accuracy' setting may also have to be increased). Each iteration takes the particle velocities closer to being divergent free.
PIC (particle in cell) is the direct voxel solution and tends to be more viscous. FLIP is the particle flow and tends to be noisy and vibrant. Blending the two helps to keep down noise from pure particle advection whilst keeping the fluid motion lively. This field controls the blend between the two.
The solving will only be accurate if particles don't move beyond a single voxel. The motion is broken into small times (substeps, just like the project Subframes value except done only during the solving). This setting limits how small the time steps are, many substeps will slow the simulation but make it more accurate. For very fast moving fluid (such as explosions) this may need to be higher if you notice incorrect simulations or artifacts.
This is not available in 'Liquid' mode. Inaccuracies in the simulation can cause volume loss, for gaseous simulations this can result in pockets of empty voxels. This option ensures that voxels always have air particles in them. Using this option can result in some loss of information from resampling and slightly slower simulation computation.
The amount of memory required and time to calculate depends on the number of voxels used. Enabling this option will limit the voxels calculated to be only around those that contain any information (such as liquid particles or smoke). This helps to reduce memory use and speed up calculation when only a small part of the domain has any particles.
Note: if adaptive bounds are enabled motion blur in the domain will NOT work as the domain size changes with time.
This setting determines the level below which is considered no (zero) information for smoke, velocity etc.
This setting expands the adaptive bounds by this number of voxels to allow the smoke/velocity within to flow into more of the domain. For fast moving simulations (such as explosions) this may need to be higher or adaptive not used as the fluid may flow out of the bounded volume.
If this switch is checked, only emitters in the same System object hierarchy as the domain object will be affected by it. If it is unchecked any emitters may be affected by the domain (if they are within its bounds, of course).
If 'Mode' is set to 'Exclude' you can drag any emitters into this list which you do not want to be affected by the domain. If it is set to 'Include' no emitters will be affected by the domain except the ones you drag into the list.
The list of emitters.
If this switch is checked, only modifiers in the same System object hierarchy as the domain object will affect it. If it is unchecked any modifier may affect the domain.
If 'Mode' is set to 'Exclude' you can drag any modifiers into this list which you do not want to affect the domain. If it is set to 'Include' no modifiers will affect the domain except the ones you drag into the list.
The list of modifiers.
If 'Mode' is set to 'Exclude' you can drag any objects into this list which you do not want to act as obstacles in the domain. If it is set to 'Include' no objects will act as obstacles except the ones you drag into the list.
The list of objects.
If 'Mode' is set to 'Exclude' you can drag any Domain tags into this list from objects which you do not want to act as sources in this domain. If it is set to 'Include' no objects will act as sources except the ones whose Domain tags you drag into the list.
The list of Domain tags.
This tab controls the solver display in the editor.
This the solver display itself. The drop-down has four options:
The solver is not displayed in the editor.
A 3D grid is shown with each grid cell corresponding to one voxel.
A 2D grid displayed on whichever wall faces the camera (so it will change as the view is rotated).
A 2D grid which is always displayed on the base of the solver.
If this switch is checked the domain object will display the interior bounds of the domain as they change during the simulation. This can help to see what is calculating and to fine tune the 'Threshold' and 'Expand' settings so you can see if the adaptive bounds are far enough away from where your smoke/fire is located. The reason for this is that the simulation may not look as good if the bounds are very close to the simulation.
If checked, the velocity (speed and direction) of the simulation are shown as coloured lines in the solver. The colours are taken from the 'Speed' colour and alpha gradients. Note that if you set the 'Property' option to anything other than 'None' both the velocity display and the property display will be shown. This may result in slightly odd artifacts in the editor display but these will not appear in the render.
Collider objects (more properly 'obstacles' in the domain) will probably enclose many voxels completely, many not at all, and some only partially. Where the particles in a simulation hit the obstacle, you may see some leak through the obstacle geometry. These can occur where voxels are only partially enclosed by the mesh.
When checked, this switch will show solid voxels (i.e. those enclosed by the collider object). If you see leaking particles, it can help decide where leaks might be occurring.
This drop-down controls which particle parameter is used to display the simulation. It has seven settings:
Nothing is displayed, giving the fastest possible simulation.
The temperature of the particle is used for the display. The colour used is taken from a gradient.
A second gradient is used to control transparency of the areas with different temperatures. The transparency maps to the colour gradient, so that with the default settings the blue (cold) areas are transparent whereas the red (hot) areas are opaque. You can alter this gradient to see areas with different temperatures.
Smoke, Fire, Fire + Smoke, Fuel and Speed
These parameters are used to colour the particles using different colour and transparency gradients for each parameter.
Speed Color, Speed Alpha
Gradients used to control the display when 'Velocity' is checked OR when 'Speed' is selected from the 'Property' menu
When a property other than 'None' or 'Speed' is selected from the 'Property' menu, a colour and alpha gradient will appear which are used to control the display for the selected parameter.
The overall opacity of the display.
When this switch is checked, the colour and alpha gradients for the displayed property are automatically mapped to the range of values in that property. For example, if temperature is displayed, the coldest areas are given the colour blue while the hottest ones are red. If this switch is unchecked you can choose the temperature range to map to the gradients using the 'Temp Min' and 'Temp Max' settings.
Min, Max settings
These settings are only available if the corresponding property is selected for display, except in the case of 'Speed Min' and 'Speed Max' which will also be available if 'Velocity' is checked.
The settings displayed will vary depending on the property being displayed.
The resolution of the display in the editor. Decrease the value for a faster but lower-resolution display.
The number of 'slices' taken through the domain to display in the editor. More slices give a more precise display. Easier to use than to explain!