VecFlow0.1.0
Effects guides

Liquid looks

Shaping the liquid's surface for the shot: pushed out or in, cut to the camera, only the main body, values carried onto the mesh, a mesh for each liquid, and wet maps on what it touches.

VecFlow 0.1.0

The Liquid panel's Surface Shape settings change the mesh the bake makes of the liquid, not how the liquid moves: change them and bake the surface again. At their defaults, the surface is as before.

Pushed out or in

Surface Offset moves the whole surface out (more than 0) or in (less), in metres: a little out to fatten thin streams for a render, a little in so a liquid sits inside its glass without poking through. Drops smaller than an inward offset go.

Only what the camera sees

Clip to Camera cuts the surface to the scene camera's view, pushed out by Clip Margin (a share of the view's width), so a big ocean of liquid is meshed only where it's seen. Fewer faces, smaller files. The cut is closed, so the mesh stays watertight for glass-like materials. Keep a margin: reflections and motion blur reach past the frame.

Clip Objects: a collection of closed meshes; the surface is cut away inside them. A box over the part of a tank behind a wall, for one.

Against the objects it wets

The solver keeps every particle a little off the glass, the floor and the bodies in the liquid, so the surface it makes stops short of them and a thin gap shows between the water and its glass, or round a ball in it. Wet Objects brings the surface to the colliders and rigid bodies the liquid wets, across that gap, and Overlap (in gaps between particles, 0.25) into them, so the join is hidden inside the object. Reach (1) is how far from an object the surface is brought to it: the water climbs that far up a wall it touches, as a meniscus does, and a drop further off is left alone. Objects must be closed meshes. A rigid body is wetted as the mesh it was made from, not as the hull or ball that stands in for it in the solver, so the water follows what you see: a strawberry's leaves, not the hull over them.

Only the main body

Core Only meshes only particles with many neighbours: the body of the liquid, without the loose drops and spray round it. At about 5 the drops a splash throws leave the mesh, which no mesher shapes well, and stay round.

Loose Drops leaves out the particles whose neighbours are further apart, on average, than this many gaps between particles. Packed liquid reads about 1.1 whether it is a pool or a sheet one particle thick, so at about 1.4 a sheet stretched thinner than a particle, or a cloud of spray, leaves the mesh, which would otherwise paint a film across it (its sheet-shaped kernels reach twice as far as the solver's): a splash's crown tears into drops instead of hanging as a torn sheet. 0 (the default) keeps everything.

Tear Sheets leaves out the liquid one particle thick: a sheet or a thread the solver can't thin any further. A water sheet that thin tears into drops in life (its rim beads up and breaks into fingers within milliseconds), so a splash's crown, which the solver holds as a sheet a particle thick, shows as drops rather than a torn film. Off (the default) for honey or paint, whose sheets hold, and for old bakes.

Splash Drops shows the particles Core Only, Loose Drops and Tear Sheets leave out as drops: each a sphere this big (its radius, in gaps between particles, about 0.6 for water's) in the surface's material, moving with the particle. At 0 (the default) they're left out, to render as whitewater or as particles instead. The liquid object's Splash input scales them without re-baking.

Values on the mesh

Mesh Values: names of values, separated by commas (color, temperature). Each is carried from the particles onto the surface's vertices, smoothly, as the attribute vf_name (a vector as vf_name_x, _y, _z). Read it in the material with an Attribute node: a liquid colored where dye was poured in, lava glowing by its temperature.

One mesh per liquid

With two liquids in a flow, One Mesh per Liquid makes a surface for each, as its own object, “name Liquid 1”, “name Liquid 2”, … (in the order of their events), so each takes its own material: oil and water, milk and honey. Where they meet, each mesh stops at the other's.

Wet maps

Turn on Wet Map on a Collide: each of its objects keeps a map of where the liquid has touched it, saved with the bake. After the bake, the object gets a VecFlow Wet modifier that puts two attributes on its vertices each frame:

  • vecflow_wet: 1 where it's wet now, falling to 0 as it dries over the Collide's Dry seconds (with Dry 0 it stays wet).
  • vecflow_waterline: 1 where the liquid's edge has been, for a line of dirt, foam or darker stain.

Read them with an Attribute node to darken and gloss the material where it's wet. The map is per vertex, so give the object enough vertices for a sharp edge. They play without VecFlow, on a render farm too.

On this page