Skip to content
Voro
  1. Geometry
  2. Solvers

FLIP Liquid

FLIP Liquid simulates liquid particles on a velocity grid. Use it for pours, splashes and pooling. Its whitewater modes add spray, surface foam or bubbles, with separate or combined particle outputs.

Place FLIP Liquid in the Voro menu’s Geometry view, under Solvers. Start with Seed Source set to Fill Box, Resolution at 96 and Bound Size at 2. Keep the fill inside the domain. This gives you a finite amount of liquid to test before adding an emitter.

For a continuous pour, choose Empty (Emitter Only), turn Liquid Emit On on and set a positive Liquid Emit Rate. A starting rate of 1000 makes it easy to check the emitter’s position and direction. Reset after changing the seed setup. Input POP is available for both seeding and emission; connect your points to the geometry input and choose it in the appropriate Source menu.

The geometry input supplies seed or emitter points. On Resources, add a Connections row, choose the sdf input in Type and select an SDF Collider resource. Use a velocity row for a Force Field or another solver’s velocity, and xforms for moving-body transforms.

The named outputs carry liquid positions P, velocity v, id, Cd and type. Foam outputs depend on Foam Mode and Foam Output. Density and velocity grids require Publish Grid Fields (liquid), which is off by default. Contact publication has its own toggle and capacity. These are simulation resources; liquid points do not become a meshed Path Trace surface automatically.

  • Simulate pauses or advances the simulation. Reset restarts it from the seed setup. Auto-Rebuild on Build Params applies structural edits as you make them; turn it off to collect edits, then press Rebuild when Status shows REBUILD PENDING.
  • Resolution sets grid detail within Max Resolution. Bound Size and Bound Center place that grid. Keep the domain close to the liquid before raising resolution.
  • FLIP Blend starts at 0.92. Moving toward 0 gives the more damped PIC behavior. Pressure Iterations starts at 40; Dt starts near 1/60 second.
  • Water Amount scales seeding and emission. Liquid Viscosity, Surface Tension and Collider Adhesion change the liquid response; add them after checking the basic pour.
  • Velocity Field Coupling starts at 0. A connected wind field needs a positive coupling value to affect the liquid.
  • Foam Mode starts off. Choose Separate output to keep whitewater distinct, or Combined to include it with liquid and distinguish particles by type. Whitewater Max Particles and Lifetime limit how much persists.

Max Particles is a pool limit. At Max Particles chooses whether an emitter stops or recycles the oldest particles. Display Max Points limits presentation separately.

Grid fields and whitewater add work and storage. Leave both off while establishing the liquid motion, then enable the outputs you need.

Inputs

  • geometry points
  • sdf sdf collider
  • velocity velocity field
  • xforms transforms

Outputs

  • P points
  • v points
  • id points
  • Cd points
  • type points
  • foam points
  • foamtype points
  • density density field
  • velocity velocity field
  • contact contacts

FLIP Liquid

Auto-Rebuild on Build Params (Autorebuild) Toggle op('flip').par.Autorebuild
Default:
On
Options:
Off, On
Rebuild (Rebuildnow) Pulse op('flip').par.Rebuildnow
Default:
None
Simulate (Simulate) Toggle op('flip').par.Simulate
Default:
On
Options:
Off, On
Reset (Resetsolver) Pulse op('flip').par.Resetsolver
Default:
None

Outputs

Liquid Resources (Hdrres) Str op('flip').par.Hdrres

Read only.

Default:
"" (Empty String)
Liquid Points Resource (Liquidname) Str op('flip').par.Liquidname
Default:
liquid_pts
Density Output Resource (Densityname) Str op('flip').par.Densityname
Default:
smoke_density
Velocity Output Resource (Velocityname) Str op('flip').par.Velocityname
Default:
smoke_vel
Publish Grid Fields (liquid) (Liquidfields) Toggle op('flip').par.Liquidfields
Default:
Off
Options:
Off, On
Display Max Points (Displaymaxpoints) Int op('flip').par.Displaymaxpoints
Default:
1048576
Range:
1 to 4194304
Display Particle Pscale (liquid) (Particlepscale) Float op('flip').par.Particlepscale
Default:
0.05
Range:
0 to 0.5

Domain

Max Resolution (pool) (Maxresolution) Int op('flip').par.Maxresolution
Default:
128
Range:
16 to 256
Resolution (Resolution) Int op('flip').par.Resolution
Default:
96
Range:
8 to 256
Bound Size (cube) (Boundsize) Float op('flip').par.Boundsize
Default:
2
Range:
0.1 to 8
Bound Center X (Boundcenterx) Float op('flip').par.Boundcenterx
Default:
0
Range:
-10 to 10
Bound Center Y (Boundcentery) Float op('flip').par.Boundcentery
Default:
0
Range:
-10 to 10
Bound Center Z (Boundcenterz) Float op('flip').par.Boundcenterz
Default:
0
Range:
-10 to 10

Solver

Dt (Dt) Float op('flip').par.Dt
Default:
0.0166667
Range:
0.0001 to 0.5

Liquid

Pressure Iterations (Iterations) Int op('flip').par.Iterations
Default:
40
Range:
1 to 200
Gravity (Gravity) Float op('flip').par.Gravity
Default:
9.8
Range:
0 to 30
FLIP Blend (0=PIC) (Flipness) Float op('flip').par.Flipness
Default:
0.92
Range:
0 to 1
CFL Speed Clamp (cells/step) (Cflclamp) Float op('flip').par.Cflclamp
Default:
3
Range:
0.5 to 8
Liquid Viscosity (Liquidviscosity) Float op('flip').par.Liquidviscosity
Default:
0
Range:
0 to 10
Liquid Cohesion (Liquidcohesion) Float op('flip').par.Liquidcohesion
Default:
0
Range:
0 to 30
Surface Tension (Surfacetension) Float op('flip').par.Surfacetension
Default:
0
Range:
0 to 30
Collider Adhesion (wetting) (Liquidadhesion) Float op('flip').par.Liquidadhesion
Default:
0
Range:
0 to 10
Spray Drag (Liquiddrag) Float op('flip').par.Liquiddrag
Default:
0
Range:
0 to 10
Velocity Field Coupling (vel:) (Windcoupling) Float op('flip').par.Windcoupling
Default:
0
Range:
0 to 1000
Volume Restore (Volumerestore) Float op('flip').par.Volumerestore
Default:
0
Range:
0 to 10
Liquid Particle Cell Radius (Particlecellradius) Float op('flip').par.Particlecellradius
Default:
0.5
Range:
0.5 to 4
Liquid Volume Mult (live) (Simsize) Float op('flip').par.Simsize
Default:
1
Range:
0.01 to 8
Rebuild Grid (Rebuild) Pulse op('flip').par.Rebuild
Default:
None
Reset Fields (Resetfields) Pulse op('flip').par.Resetfields
Default:
None

Seed

Max Particles (pool) (Maxparticles) Int op('flip').par.Maxparticles
Default:
1048576
Range:
4096 to 4194304
Seed Source (Seedsource) Menu op('flip').par.Seedsource
Default:
0
Options:
Fill Box, Input POP, Empty (Emitter Only)
Liquid Fill Center X (Fillcenterx) Float op('flip').par.Fillcenterx
Default:
-0.6
Range:
-10 to 10
Liquid Fill Center Y (Fillcentery) Float op('flip').par.Fillcentery
Default:
-0.4
Range:
-10 to 10
Liquid Fill Center Z (Fillcenterz) Float op('flip').par.Fillcenterz
Default:
0
Range:
-10 to 10
Liquid Fill Size X (Fillsizex) Float op('flip').par.Fillsizex
Default:
0.7
Range:
0.01 to 10
Liquid Fill Size Y (Fillsizey) Float op('flip').par.Fillsizey
Default:
1.1
Range:
0.01 to 10
Liquid Fill Size Z (Fillsizez) Float op('flip').par.Fillsizez
Default:
1.2
Range:
0.01 to 10
Water Amount (seed/emit) (Wateramount) Float op('flip').par.Wateramount
Default:
1
Range:
0.01 to 16
Reseed Liquid (Reseed) Pulse op('flip').par.Reseed
Default:
None

Coupling

Coupling (Hdrcouple) Str op('flip').par.Hdrcouple

Read only.

Default:
"" (Empty String)
Publish Contact Set (Publishcontacts) Toggle op('flip').par.Publishcontacts
Default:
On
Options:
Off, On
Max Published Contacts (Contactmaxpublish) Int op('flip').par.Contactmaxpublish
Default:
65536
Range:
1024 to 4194304
Contact Mass Scale (Contactmassscale) Float op('flip').par.Contactmassscale
Default:
1
Range:
0.001 to 1000

Emitter

Liquid Emit On (Liquidemiton) Toggle op('flip').par.Liquidemiton
Default:
Off
Options:
Off, On
Emitter Source (Emittersource) Menu op('flip').par.Emittersource
Default:
0
Options:
Sphere, Box, Input POP
Liquid Emit X (Liquidemitx) Float op('flip').par.Liquidemitx
Default:
0
Range:
-10 to 10
Liquid Emit Y (Liquidemity) Float op('flip').par.Liquidemity
Default:
0.3
Range:
-10 to 10
Liquid Emit Z (Liquidemitz) Float op('flip').par.Liquidemitz
Default:
0
Range:
-10 to 10
Emitter Size X (Liquidemitsizex) Float op('flip').par.Liquidemitsizex
Default:
0.24
Range:
0.001 to 10
Emitter Size Y (Liquidemitsizey) Float op('flip').par.Liquidemitsizey
Default:
0.24
Range:
0.001 to 10
Emitter Size Z (Liquidemitsizez) Float op('flip').par.Liquidemitsizez
Default:
0.24
Range:
0.001 to 10
Liquid Emit Rate (Liquidemitrate) Float op('flip').par.Liquidemitrate
Default:
0
Range:
0 to 50000
Liquid Emit Vx (Liquidemitvx) Float op('flip').par.Liquidemitvx
Default:
0
Range:
-50 to 50
Liquid Emit Vy (Liquidemitvy) Float op('flip').par.Liquidemitvy
Default:
0
Range:
-50 to 50
Liquid Emit Vz (Liquidemitvz) Float op('flip').par.Liquidemitvz
Default:
0
Range:
-50 to 50
Input Velocity Attribute (Inputvelattr) Str op('flip').par.Inputvelattr
Default:
v
Input Velocity Scale (Inputvelscale) Float op('flip').par.Inputvelscale
Default:
1
Range:
-100 to 100
Input Velocity Add (Inputveladdx) Float op('flip').par.Inputveladdx
Default:
0
Range:
-50 to 50
Input Velocity Add Y (Inputveladdy) Float op('flip').par.Inputveladdy
Default:
0
Range:
-50 to 50
Input Velocity Add Z (Inputveladdz) Float op('flip').par.Inputveladdz
Default:
0
Range:
-50 to 50
At Max Particles (Emitoverflow) Menu op('flip').par.Emitoverflow
Default:
0
Options:
Stop Emitting, Recycle Oldest

Foam

Foam Mode (Foammode) Menu op('flip').par.Foammode
Default:
0
Options:
Off, Whitewater (spray+foam+bubbles), Bubbles (trapped air), Carbonation / Beer (nucleation), Boil (bottom-up)
Foam Output (Foamoutput) Menu op('flip').par.Foamoutput
Default:
0
Options:
Separate (<liquid>_foam buffer), Combined (into <liquid> + _type)
Whitewater Max Particles (Whitewatermax) Int op('flip').par.Whitewatermax
Default:
262144
Range:
256 to 4194304
Foam Generation Rate (Foamgen) Float op('flip').par.Foamgen
Default:
2
Range:
0 to 10
Wave Crest / Spray Weight (Foamcrest) Float op('flip').par.Foamcrest
Default:
1
Range:
0 to 4
Trapped Air (churn) Weight (Foamtrapped) Float op('flip').par.Foamtrapped
Default:
0.8
Range:
0 to 4
Churn Threshold (Foamthreshold) Float op('flip').par.Foamthreshold
Default:
0.5
Range:
0 to 1
Nucleation (carbonation) (Foamnucleation) Float op('flip').par.Foamnucleation
Default:
0
Range:
0 to 20
Foam Scale (cells) (Foamscale) Float op('flip').par.Foamscale
Default:
0.5
Range:
0 to 4
Whitewater Lifetime (s) (Foamlifetime) Float op('flip').par.Foamlifetime
Default:
2
Range:
0.1 to 8
Surface Foam Decay (1/s) (Foamdecay) Float op('flip').par.Foamdecay
Default:
1
Range:
0 to 10
Bubble Buoyancy Lift (Foambuoyancy) Float op('flip').par.Foambuoyancy
Default:
1
Range:
0 to 10
Bubble/Foam Drag (Foamdrag) Float op('flip').par.Foamdrag
Default:
4
Range:
0 to 15

Color

Liquid Base Color (Basecolorr) Float op('flip').par.Basecolorr
Default:
0.2
Range:
0 to 1
Liquid Base Color G (Basecolorg) Float op('flip').par.Basecolorg
Default:
0.45
Range:
0 to 1
Liquid Base Color B (Basecolorb) Float op('flip').par.Basecolorb
Default:
0.9
Range:
0 to 1
Liquid Color Speed Brightness (Colorspeed) Float op('flip').par.Colorspeed
Default:
0
Range:
0 to 1
Liquid Color Speed Normalize (Colorspeedmax) Float op('flip').par.Colorspeedmax
Default:
4
Range:
0.01 to 20
Spray Color (Spraycolorr) Float op('flip').par.Spraycolorr
Default:
1
Range:
0 to 1
Spray Color G (Spraycolorg) Float op('flip').par.Spraycolorg
Default:
1
Range:
0 to 1
Spray Color B (Spraycolorb) Float op('flip').par.Spraycolorb
Default:
1
Range:
0 to 1
Foam Color (Foamcolorr) Float op('flip').par.Foamcolorr
Default:
0.92
Range:
0 to 1
Foam Color G (Foamcolorg) Float op('flip').par.Foamcolorg
Default:
0.96
Range:
0 to 1
Foam Color B (Foamcolorb) Float op('flip').par.Foamcolorb
Default:
1
Range:
0 to 1
Bubble Color (Bubblecolorr) Float op('flip').par.Bubblecolorr
Default:
0.7
Range:
0 to 1
Bubble Color G (Bubblecolorg) Float op('flip').par.Bubblecolorg
Default:
0.82
Range:
0 to 1
Bubble Color B (Bubblecolorb) Float op('flip').par.Bubblecolorb
Default:
1
Range:
0 to 1