Points node
Liquid Flow
Makes a point cloud ride the velocity field of a Liquid Simulation. Connect the fluid's Image output and any Points source, and each point is moved by the local flow — either as a live displacement layered on top of the input, or as free-floating dust that drifts through the field over time. The result stays an ordinary point cloud, so it composes with Plexus, Point Trail, Points Visualize, and the particle system like any other Points node.
Inputs
| Port | Type | Default |
|---|---|---|
| PointsThe point cloud to move. Connect any points source — geometry, landmarks, notes, a trail. With no points nothing comes out. | structure | — |
| ImageThe Liquid Simulation whose velocity field drives the motion. Connect that node's Image output; any other picture carries no field to read. | image | — |
| ModeDisplace offsets the incoming points by the local flow each frame, keeping the input authoritative; Flow seeds a copy once and lets it drift like dust. Anything other than Flow is Displace. | int | 0 |
| StrengthHow strongly the fluid moves the points. Not clamped; 0 leaves them alone, negative pushes them against the current, and roughly 1…5 reads well. | float | 1.0 |
| ResetOn the rising edge, re-seeds the drifting cloud back onto the input points. Only matters in Flow mode. | bool | false |
Outputs
| Port | Type |
|---|---|
| PointsThe point cloud to move. Connect any points source — geometry, landmarks, notes, a trail. With no points nothing comes out. | structure |
How It Works
The Image input is not sampled as pixels — it is used to identify the upstream Liquid Simulation node, and Liquid Flow reads that simulation's internal velocity field directly. Sampling is bilinear over a snapshot of the GPU velocity texture (refreshed at most every 4 ms), converted from Grafit coordinates with the correct y-flip; positions outside the simulated area clamp to the field's edge. Because the node declares that its image source must keep rendering, the fluid keeps simulating even if its Image is not connected to any Canvas — you can use the liquid purely as an invisible force field.
Two modes, chosen by the Mode dropdown:
| Mode | Value | State | Behavior |
|---|---|---|---|
| Displace | 0 | Stateless | Each frame, output = input points offset by the local velocity: p + v · Strength · 0.08. The input stays authoritative — landmarks keep tracking, geometry keeps its shape; the fluid adds motion on top. |
| Flow | 1 | Stateful | The input cloud is copied once as seed positions, then advected every frame: p += v · Strength · dt. Points wander away from their origins like weightless dust. |
In Flow mode the internal cloud re-seeds from the input when the input's point count changes or on a rising edge of Reset. The integration timestep is clamped to at most 1/15 s, so a stalled frame or window drag cannot catapult points across the screen. Only x and y are advected — z passes through in Displace mode and stays as seeded in Flow mode, so depth-based coloring downstream keeps working.
If the Points input is empty or no Liquid Simulation is reachable through the Image input, the node passes the input cloud through unchanged and drops any stored Flow state.
Parameters in Depth
- Points (structure) — the cloud to move. Accepts anything the point-cloud extractor understands: point arrays, Vision landmark structures, nested x/y(/z) data. In Flow mode this is the seed set; in Displace mode it is re-read every frame.
- Image (image) — connect the Image output of a Liquid Simulation node. This is a reference to the simulation, not a texture lookup; without it the node is a pass-through. Keeping this cable connected also keeps the fluid simulating even when it is never drawn.
- Mode (int, default 0) — 0 = Displace, 1 = Flow (dropdown in the inspector; see table above). Switching from Flow back to Displace discards the advected cloud.
- Strength (float, default 1.0) — scales the sampled velocity. In Displace mode it scales the offset distance (with a fixed 0.08 lead factor); in Flow mode it scales drift speed. Negative values push points against the flow.
- Reset (bool, default false) — rising-edge trigger that snaps the Flow-mode cloud back to the current input positions. Has no effect in Displace mode. Wire a Keyboard node or a beat pulse here for on-cue re-forms.
Use Cases
- Body silhouette stirring dust: Camera Input → Person Segmentation → Liquid Simulation (mask emits and stirs), plus Geometry to Points → Liquid Flow (Flow mode) → Points Visualize — a field of particles the performer pushes around with their body.
- Wobbling constellation: Geometry to Points → Liquid Flow (Displace mode) → Plexus. The plexus mesh keeps its overall shape but shimmers and bends wherever the fluid moves, since displacement is layered on intact geometry.
- Landmarks with liquid inertia: Vision Tracking → Landmarks to Points → Liquid Flow (Displace) → Points Visualize — tracked joints stay locked to the person while the fluid adds organic secondary motion.
- Dust with comet tails: Liquid Flow (Flow mode) → Point Trail → Points Visualize with Additive enabled — every drifting point drags a fading echo through the swirls.
- Beat-synced re-form: Audio Analysis (or Pitch Detection's Note On) → Reset. Points scatter into the flow between beats and snap back to the source shape on every hit.
- Morph inside a storm: Point Morph between two shapes → Liquid Flow (Displace) → Points Visualize — the morph provides the A-to-B journey, the fluid roughens every intermediate frame.
Tips
- Displace preserves the input's structure and count exactly, so per-index features downstream (gradients by index, Get by Index picks) stay valid. Flow also preserves count and order — but positions decouple from the source over time.
- In Flow mode, any change in the input's point count triggers a full re-seed. Feed it a count-stable source (Landmarks to Points rather than raw landmarks, a fixed-count Geometry to Points) to avoid visible snapping.
- The fluid's motion is what you sculpt on the Liquid Simulation node itself — its Force, Swirl, Drag and Speed inputs shape what Liquid Flow samples. If points barely move, raise the simulation's forces, not just Strength here.
- Velocity is sampled from a CPU snapshot refreshed every ~4 ms, so very large clouds are fine; the per-point cost is a bilinear lookup. The usual bottleneck is the renderer downstream, not this node.
- Points that drift outside the simulated area feel the clamped edge velocity, which can park them at the border in Flow mode. Use Reset (or a periodic LFO-driven pulse into it) to recall wanderers.
- The Liquid Simulation does not need to be visible: skip its Canvas entirely and use the fluid purely as a hidden force field driving points.
Open Liquid Flow in the interactive catalog →
Liquid Flow is one of 381 nodes in Grafit Pro.
Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.