Generator node
Plexus
Connects a cloud of points with line segments — the classic network / constellation look. Feed it any point structure (Geometry to Points, Point Animation, L-System, Vision landmarks, particles) and Plexus builds distance-based connections between neighbors, with optional dots at the points, gradient coloring, depth of field, and glow. Reach for it whenever you want data, geometry, or motion to read as a living web of relationships.
Inputs
| Port | Type | Default |
|---|---|---|
| EnableTurns the web off and clears its image. | bool | true |
| PointsThe cloud to connect — cable Geometry to Points, Point Animation, Vision landmarks, particles or any point structure. Only the first 1500 points are used; with nothing connected a small demo sphere appears. | structure | — |
| GPUMoves neighbour search and line building onto the GPU for big animated clouds. The look changes slightly: Order is ignored and Max Connections becomes a mutual nearest-neighbour count capped at 16. | bool | false |
| SeedShuffles the deterministic randomness behind Stable Random ordering and Line Variability. Any whole number works, and the same seed always rebuilds the same web. | int | 0 |
| Max DistanceHow far apart two points may be and still be linked, in Grafit units. Negative values are treated as 0, which switches every line off; around 0.1…1 is the usual band. | float | 0.4 |
| Min DistancePoints closer than this are not linked, which opens up dense clusters. Negative values are treated as 0, and anything above Max Distance is pulled down to it. | float | 0.0 |
| Max ConnectionsCap on how many lines a single point may own. 0 means unlimited; negative values are treated as 0. Low values thin a hairball into an elegant mesh. | int | 0 |
| Max SegmentsCap on the total number of lines drawn. 0 means no limit beyond the built-in safety ceiling, and the ceiling of 50000 applies either way. | int | 0 |
| OrderWhich candidate pairs win when the caps bite: Nearest keeps the shortest links, Stable Random picks a fixed scattered set. Anything other than Nearest behaves as Stable Random. | int | 0 |
| Line LengthShrinks each segment toward its own midpoint — 1 spans the full gap, 0.5 leaves a dash floating between the points. Negative values are treated as 0; above 1 the lines overshoot past their endpoints. | float | 1.0 |
| Line VariabilityRandomises each segment's length so the dashes are uneven. Clamped to 0…1. | float | 0.0 |
| Line ThicknessWidth of the connecting lines in Grafit units. Negative values are treated as 0; typical values are tiny, around 0.001…0.02. | float | 0.004 |
| Color ModeWhether lines take the flat Line Color or sample the Gradient along an axis, radius, depth or their own length. Values outside the list sample the middle of the gradient. | int | 0 |
| GradientCable a Gradient node here; it is only read when Color Mode is something other than Solid. Unconnected falls back to the flat colours. | structure | — |
| Line ColorFlat colour of every connection, used when Color Mode is Solid. | color | — |
| Distance FadeWidth of the soft edge where a line fades out just before it snaps, as a fraction of the distance window. Clamped to 0…1; 0 makes connections pop in and out. | float | 0.5 |
| Show PointsDraws a dot at every point as well as the lines. Off leaves only the web. | bool | true |
| Point SizeRadius of those dots in Grafit units. Negative values are treated as 0; typical values are around 0.002…0.03. | float | 0.008 |
| Point ColorFlat colour of the dots, used when Color Mode is Solid — otherwise the gradient colours them. | color | — |
| OpacityOverall transparency of the whole web. Not clamped, so 0…1 is the meaningful range; higher values simply stay fully opaque. | float | 1.0 |
| DoFHow strongly out-of-focus depths dim and bloat into bokeh. Clamped to 0…1; 0 turns the whole depth-of-field section off. The cloud needs depth variation to show anything. | float | 0.0 |
| Focus DistanceThe depth that stays perfectly sharp, in raw Grafit Z. Not clamped — match it to where your cloud actually sits. | float | 0.0 |
| Focus RangeHow deep the sharp band is around the focus distance. Negative values are treated as 0, which leaves only the exact focal plane crisp. | float | 0.3 |
| FalloffHow far past the sharp band it takes to reach full blur. Negative values are treated as 0, which makes the transition instant; larger values are a gentle roll-off. | float | 0.6 |
| GlowBloom around the bright parts of the web. 0 is off; negative values are treated as 0. Useful roughly 0…3. | float | 0.0 |
| Glow SpreadHow far the bloom reaches, from tight to very wide. Clamped to 1…5. | int | 4 |
| Glow CutoffHow bright something must be before it blooms. Clamped to 0…1; raise it so only the hottest lines glow. | float | 0.0 |
Outputs
| Port | Type |
|---|---|
| Image | image |
| Width | float |
| Height | float |
Live Preview
How It Works
Each frame, Plexus takes the point cloud from the Points input (capped at 1500 points on the CPU path; if nothing is connected, a small 120-point fallback cloud is generated so the node is never empty). It then finds candidate pairs whose true 3D distance lies inside the [Min Distance, Max Distance] band, using a spatial grid so the search costs O(n·k) instead of O(n²).
Candidates are ordered by the Order mode, then selected greedily under two caps — Max Connections per point and Max Segments total (hard safety cap 50 000 segments):
| Order | Value | Behavior |
|---|---|---|
| Nearest | 0 | Shortest connections win first — the tightest, most "structural" web |
| Stable Random | 1 | A deterministic seeded hash per pair decides priority — same Seed always produces the same web, independent of distance |
Selected segments are shortened symmetrically toward their midpoint by Line Length, with per-pair deterministic jitter from Line Variability (seeded — the pattern never flickers between frames). Distance Fade gives every line a tolerance-centered soft edge: a connection smoothly fades out as its length approaches Max Distance (and fades in near Min Distance when a minimum gate is set) instead of popping when points drift in or out of range. The fade width is a fraction of the [Min, Max] window.
The cloud is projected 3D → 2D with an automatic perspective camera centered on the cloud's centroid: the camera distance adapts to the cloud's depth extent (camDist = zHalf × 2.5 + 2.0), so genuinely 3D clouds get gentle foreshortening while a flat cloud (z ≈ 0) projects exactly to itself — no toggle, no tuning.
Color Mode selects how lines and points are colored. Mode 0 uses the solid Line Color / Point Color; modes 1–7 sample a connected Gradient node along a chosen axis of the cloud's bounding box:
| Color Mode | Value | Gradient coordinate |
|---|---|---|
| Solid | 0 | No gradient — Line Color and Point Color are used |
| Left → Right | 1 | Normalized X position |
| Right → Left | 2 | Inverted X position |
| Top → Down | 3 | Inverted Y position (+Y is up) |
| Bottom → Up | 4 | Y position |
| Radial | 5 | Distance from the cloud centroid |
| Z-Depth | 6 | Normalized Z position |
| Line Length | 7 | Per-segment: segment length / Max Distance (points sample the gradient midpoint) |
GPU mode (the GPU toggle) moves neighbor search and line building into compute shaders with an indirect instanced draw — the CPU never touches a single line. Use it for big or heavily animated clouds. Two documented differences from the CPU path: Order is not applied (pairs land in grid order), and Max Connections becomes a deterministic mutual k-nearest-neighbors rule — each point links to its K nearest points that also chose it back, with K capped at 16.
Depth of field (DoF > 0) is a fast per-element effect, not a blur pass: an element whose depth lies outside the [Focus Distance ± Focus Range] band gets dimmer (alpha drops by up to 92 %) and larger (bokeh-style radius growth up to 4×), with a smoothstep transition over Falloff. A band of the cloud stays crisp while the rest defocuses.
A rebuild cache hashes the point cloud plus every input; when nothing changed, the previous frame's geometry is returned in ~0 ms, so static patches cost almost nothing.
Plexus is a generator: it renders to an offscreen texture exposed on the Image output (with Width/Height reporting 2 × 2 Grafit units) and needs a Canvas node to appear on screen. Output is premultiplied alpha; coordinates follow the Grafit convention (origin at viewport center, shorter edge maps to [-1, 1]). Setting Enable to false clears the texture.
Parameters in Depth
| Port | Default | Meaning |
|---|---|---|
| Enable | true | Off clears the output texture |
| Points | — | The point cloud (any structure of points). Empty/unconnected → 120-point fallback cloud |
| GPU | false | Compute-shader path for big/animated clouds (Order ignored, Max Connections = mutual k-NN, K ≤ 16) |
| Seed | 0 | Seed for Stable Random ordering and Line Variability jitter |
| Max Distance | 0.4 | Upper connection distance, Grafit units. 0 disables all lines |
| Min Distance | 0.0 | Lower connection gate; clamped to ≤ Max Distance. Non-zero adds a fade-in edge |
| Max Connections | 0 | Per-point connection cap (0 = unlimited) |
| Max Segments | 0 | Total segment cap (0 = safety cap of 50 000) |
| Order | 0 | 0 Nearest · 1 Stable Random — candidate priority under the caps |
| Line Length | 1.0 | Fraction of each connection drawn, centered on its midpoint (0.5 = half-length dashes) |
| Line Variability | 0.0 | 0…1 seeded per-pair length jitter |
| Line Thickness | 0.004 | Stroke thickness, Grafit units |
| Color Mode | 0 | Solid / Left → Right / Right → Left / Top → Down / Bottom → Up / Radial / Z-Depth / Line Length |
| Gradient | — | Stops from a Gradient node, sampled per Color Mode (up to 16 stops on the GPU path) |
| Line Color | (0.3, 0.8, 1.0, 1.0) | Solid line color (hidden in the inspector when a gradient mode is active) |
| Distance Fade | 0.5 | Width of the soft fade edge as a fraction of the [Min, Max] window (0 = hard pop) |
| Show Points | true | Draw dots at the point positions |
| Point Size | 0.008 | Dot radius, Grafit units |
| Point Color | (1.0, 1.0, 1.0, 1.0) | Solid dot color (gradient modes color dots too) |
| Opacity | 1.0 | Overall output opacity |
| DoF | 0.0 | Depth-of-field strength 0…1 (0 = off; reveals Focus controls) |
| Focus Distance | 0.0 | Z depth that stays sharp |
| Focus Range | 0.3 | Half-width of the fully sharp depth band |
| Falloff | 0.6 | Depth span over which sharp transitions to fully defocused |
| Glow | 0.0 | Post-process bloom intensity (0 = off) |
| Glow Spread | 4 | 1 Tight · 2 Small · 3 Medium · 4 Wide · 5 Very Wide — bloom radius |
| Glow Cutoff | 0.0 | Brightness threshold below which pixels don't bloom |
Parameter interactions worth knowing: Min/Max Distance define the connection band and the fade window; Line Length and Line Variability act on the already-selected segments; DoF works on raw point z, so it needs actual depth variation in the cloud to show.
Use Cases
- Classic animated plexus: Geometry to Points (Sphere or Cube, Random distribution) → Point Animation (drift) → Plexus — the standard floating-network motion graphic
- Audio-reactive web: Audio FFT → Remap → Max Distance, so connections grow and collapse with the music; add Glow for a club look
- Growing-tree constellation: L-System
Live Tipsoutput → Plexus Points — the advancing growth front becomes a slot-stable web that never flickers - Face/pose mesh: a Vision landmark structure → Plexus with Max Connections 3 and Nearest order for a wireframe-scan look over a person
- Depth-graded network: a 3D cloud with Color Mode
Z-Depth+ Gradient node, plus DoF 0.8 with a narrow Focus Range for a cinematic rack-focus feel - Particle flocks: for thousands of moving points, enable GPU and let the compute path build the k-NN web every frame
Tips
- Like every generator, Plexus needs a Canvas node to be visible — the Image output is an offscreen texture until a Canvas composites it
- Max Distance is the main cost driver: a large band over a dense cloud explodes the candidate count. Cap it with Max Connections / Max Segments before reaching for GPU mode
- The CPU path caps the cloud at 1500 points; anything beyond is truncated. Switch on GPU for big clouds — but remember Order is not applied there
- Gradient coloring only activates with a real Gradient cable and a non-Solid Color Mode; unconnected structure inputs are deliberately ignored
- Distance Fade is what makes motion look organic — at 0, lines pop in and out; at 0.5+, they breathe
- Line Length below 1.0 with some Line Variability turns the web into scattered midpoint dashes — a great "data noise" texture
- Anti-aliasing is global (the app-wide AA multiplier); there is no per-node AA quality control
Open Plexus in the interactive catalog →
Plexus 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.