Generator node
Lines Visualize
Draws one continuous GPU line through any point structure -- routed by index, direction, depth, spiral, zig-zag, nearest-neighbor chain, Hilbert curve or random. Straight or smooth (Catmull-Rom), dash patterns, taper, additive glow; parallel fiber copies with turbulence offsets; kaleidoscope mirroring; animatable draw window whose live endpoints are exposed as Start/End Point outputs. Cable a Color Analysis' Colors structure straight in and the node draws ONE LINE PER COLOR -- each group's blob outline in its own base+subtone gradient, every parameter applying to all lines with per-line variance.
Inputs
| Port | Type | Default |
|---|---|---|
| PointsThe point cloud the line is threaded through — any points structure. Cable a Color Analysis Colors structure instead and you get one line per colour group. | structure | — |
| EnableOff clears the output to transparent. | bool | true |
| Order ModeThe route the line takes through the points: index order, left to right, spiral, zig-zag, nearest neighbour, Hilbert curve, random and more. Unlisted values fall back to index order. | int | 0 |
| Closed LoopJoins the last point back to the first, so the stroke becomes an outline instead of an open path. | bool | false |
| Break DistanceAny gap longer than this ends the line and starts a new one, so distant clusters are no longer hauled together. At least 0, where 0 never breaks; in Grafit units. | float | 0 |
| Line TypeStraight connects the points with segments, Smooth Curve rounds through them. Anything outside the two draws straight. | int | 0 |
| Curve DetailHow many sub-steps each curved segment is drawn with. Clamped to 2…16, and only used with Smooth Curve; higher is smoother and slower. | int | 8 |
| SmoothingRounds the corners by averaging neighbouring points. Clamped to 0…1, which is up to eight rounding passes — at 1 the shape visibly shrinks inward. | float | 0 |
| WidthStroke thickness in Grafit units. At least 0.0002; about 0.002…0.03 covers hairline to bold. | float | 0.008 |
| Taper ModeWhere the stroke thins out: nowhere, at both ends, at the start or at the end. Unlisted values draw no taper. | int | 0 |
| TaperHow strong the thinning is. Clamped to 0…1, where 1 tapers to a point. | float | 0.5 |
| SoftnessBlurs the stroke edges into a glow-like haze. Clamped to 0…1; 0 is a crisp line. | float | 0 |
| OpacityFades the whole drawing. Clamped to 0…1. | float | 1 |
| AdditiveBlends the line by adding light instead of covering, so crossings burn brighter. Good for neon and trails, and it never darkens what is behind. | bool | false |
| ColorThe stroke colour used in Single Color mode. | color | (1, 1, 1, 1) |
| GradientCable a Gradient node here to colour the line. It is used by every Color Mode except Single Color; with nothing connected the plain Color is used. | structure | — |
| Color ModeHow the gradient is read: one solid colour, or along the path, per segment, per fibre, by depth, radially, or randomly. Unlisted values draw a single colour. | int | 0 |
| Color VarianceHow far each line or fibre drifts from its gradient colour, for a hand-drawn feel. Clamped to 0…1. | float | 0 |
| Dash LengthLength of each dash along the path. At least 0, and 0 draws a solid line. | float | 0 |
| Dash GapLength of the empty space between dashes. At least 0.001; small gaps read as a dotted line. | float | 0.05 |
| Dash PhaseSlides the dash pattern along the path. Not clamped; animate it to make the dashes crawl, negative values crawl backwards. | float | 0 |
| StartWhere the drawn part of the line begins, as a fraction of its length. Values wrap around, so animating it endlessly chases the stroke along the path. | float | 0 |
| LengthHow much of the line is drawn from Start onward. Clamped to 0…1, where 1 draws the whole path. | float | 1 |
| Length VarianceHow much each extra fibre's drawn length differs from the others. Clamped to 0…1. | float | 0 |
| Offset VarianceHow much each extra fibre's start point is shifted along the path. Clamped to 0…1. | float | 0 |
| FibersHow many parallel copies of the line are drawn, turning one stroke into a bundle. Clamped to 1…64. | int | 1 |
| SpacingSideways distance between fibres, in Grafit units. Not clamped; negative values simply stack them the other way. | float | 0.01 |
| Spacing VarianceHow unevenly the fibres are spaced, so the bundle stops looking machine-made. Clamped to 0…1. | float | 0 |
| Width VarianceHow much the fibres differ in thickness. Clamped to 0…1. | float | 0 |
| TurbulenceSideways noise wobble pushed into the fibres. At least 0; around 0.01…0.1 reads as hand-drawn, more turns the bundle into smoke. | float | 0 |
| Turbulence ZThe same wobble in depth, so the bundle also weaves toward and away from the viewer. At least 0. | float | 0 |
| Noise ScaleSize of the sideways wobble — small numbers make long lazy waves, big numbers a fine tremble. At least 0.01. | float | 4 |
| Noise Scale ZSize of the depth wobble. At least 0.01. | float | 4 |
| Noise SpeedHow fast the wobble evolves. Not clamped; 0 freezes the shape and negative values run it backwards. | float | 0.2 |
| Depth ShadingDarkens the parts of the line that sit further back, using the points' depth. Clamped to 0…2, where 0 is flat lighting. | float | 0 |
| KaleidoscopeRepeats the drawing around a circle. Clamped to 1…12, where 1 is a single copy. | int | 1 |
| MirrorAdds a mirrored twin to each kaleidoscope wedge for true reflection symmetry. Needs at least two copies to show. | bool | false |
| SeedFixes the random ordering, colour variance and fibre variation. Any whole number; the same seed always draws the same picture. | int | 0 |
Outputs
| Port | Type |
|---|---|
| Image | image |
| WidthStroke thickness in Grafit units. At least 0.0002; about 0.002…0.03 covers hairline to bold. | float |
| Height | float |
| Start Point | structure |
| End Point | structure |
| Count | int |
Live Preview
How It Works
Each frame the CPU flattens the Points input into 3D positions (arrays, [x, y, z] tuples, nested {x,y,z} structures or JSON all work), capped at 50,000 points (20,000 in Nearest Neighbor mode). It then orders them into a single path using the selected Order Mode, optionally relaxes corners (Smoothing runs up to 8 Laplacian neighbor-averaging passes; open-path endpoints stay pinned), and computes normalized cumulative arc length for every vertex. Ordering is deterministic for a given cloud, mode and Seed.
Everything after that is GPU: the path renders as instanced capsules — one quad per subsegment, with capsule distance fields giving round caps and joints for free. Total instances = segments × curve subdivisions × fibers × kaleidoscope copies, budget-capped at 4 million (fibers, then kaleidoscope copies are reduced first; the path itself is never cut). Coordinates are Grafit units (origin at viewport center, shorter edge maps to [-1, 1]); the output texture is premultiplied alpha. Enable = false (or fewer than 2 points) clears the texture. Width/Height report the viewport-fit size, Count the number of points used, and Start Point / End Point output the live 3D positions of the visible window's ends.
| Value | Order Mode | Route through the cloud |
|---|---|---|
| 0 | Index | Points in their incoming order |
| 1 | Reverse Index | Incoming order, backwards |
| 2 | Left → Right | Sorted by X |
| 3 | Top → Bottom | Sorted by Y descending |
| 4 | Diagonal | Sorted by X + Y |
| 5 | Depth | Sorted by Z |
| 6 | Center → Out | By distance from the centroid, inside first |
| 7 | Out → Center | Same, rim first |
| 8 | Angle Sweep | By polar angle around the centroid — one radar rotation |
| 9 | Spiral | Angle + radius combined — 3 turns from center to rim |
| 10 | Zig-Zag | Serpentine scanlines: rows by Y, alternating direction |
| 11 | Nearest Neighbor | Greedy chain from the leftmost point — organic connect-the-dots |
| 12 | Hilbert Curve | Space-filling order (1024×1024 quantization) — locality-preserving, beautiful on dense clouds |
| 13 | Random | Seeded shuffle |
Line Type 0 = Straight segments; 1 = Smooth Curve, a Catmull-Rom spline evaluated at Curve Detail (2–16) subdivisions per segment. A single shared path evaluator produces continuous positions and tangents across joints, so offset fibers never tear at segment boundaries.
Draw window: Start (wrapping 0–1) and Length (0–1) select the visible slice of the path by arc length; animate Start and the line travels its own route. Fibers (1–64) renders parallel copies offset along the path's normals by Spacing, with optional fbm turbulence displacement in XY (Turbulence, Noise Scale, Noise Speed) and in Z (Turbulence Z, Noise Scale Z) — Depth Shading (0–2) then brightens +Z / darkens −Z parts for a lit-bundle look. Kaleidoscope (1–12) rotates whole copies of the result around the cloud centroid; Mirror flips every odd copy for true mirror symmetry.
| Value | Taper Mode | Width profile over the visible window |
|---|---|---|
| 0 | None | Constant width |
| 1 | Both Ends | Sine bulge — thin at both ends |
| 2 | Thin Start | Grows from zero to full |
| 3 | Thin End | Full to zero |
Taper (0–1) blends between constant width and the selected profile.
| Value | Color Mode | Gradient parameter |
|---|---|---|
| 0 | Single Color | — (uses Color) |
| 1 | Gradient: Along Path | Position across the visible window |
| 2 | Gradient: Segment | Segment index along the path |
| 3 | Gradient: Fiber | Fiber index across the bundle |
| 4 | Gradient: Depth | Z position (including Z turbulence) |
| 5 | Gradient: Radial | Distance from the cloud center |
| 6 | Gradient: Random | Per-segment/fiber hash |
Dashes are measured in real arc length: the pattern repeats every Dash Length + Dash Gap Grafit units, shifted by Dash Phase — animate the phase for marching-ants motion.
Parameters in Depth
Path & shape
| Port | Default | Meaning |
|---|---|---|
| Points | — | Point structure to route through |
| Enable | true | Off clears the output texture |
| Order Mode | 0 | Routing algorithm 0–13 (table above) |
| Closed Loop | false | Connects last point back to first; smoothing and splines wrap |
| Line Type | 0 | 0 = Straight, 1 = Smooth Curve (Catmull-Rom) |
| Curve Detail | 8 | Spline subdivisions per segment, 2–16 (Smooth Curve only) |
| Smoothing | 0 | 0–1; corner-rounding passes (Laplacian), up to 8 |
| Width | 0.008 | Line thickness in Grafit units |
| Taper Mode | 0 | 0–3 (table above) |
| Taper | 0.5 | 0–1 blend toward the taper profile |
| Softness | 0 | 0–1; feathered edges instead of the global AA edge |
| Opacity | 1 | Global opacity 0–1 |
| Additive | false | Additive blending — crossings glow |
Color
| Port | Default | Meaning |
|---|---|---|
| Color | (1, 1, 1, 1) | Flat line color (Single Color mode) |
| Gradient | — | Gradient stops for Color Modes 1–6 (up to 16 stops) |
| Color Mode | 0 | 0–6 (table above) |
| Color Variance | 0 | 0–1; per-fiber random hue rotation up to ±360° |
Dashes & draw window
| Port | Default | Meaning |
|---|---|---|
| Dash Length | 0 | Dash length in Grafit units of arc; 0 = solid line |
| Dash Gap | 0.05 | Gap between dashes |
| Dash Phase | 0 | Pattern offset — animate for motion |
| Start | 0 | Window start along the path (0–1, wraps) |
| Length | 1 | Visible fraction of the path (0–1) |
| Length Variance | 0 | 0–1; per-fiber shortened ends — brush-like tips instead of a razor cut |
| Offset Variance | 0 | 0–1; per-fiber start-phase shift — fibers travel out of step |
Fibers & turbulence
| Port | Default | Meaning |
|---|---|---|
| Fibers | 1 | Parallel copies of the path, 1–64 |
| Spacing | 0.01 | Perpendicular distance between fibers (Grafit units) |
| Spacing Variance | 0 | 0–1; per-fiber offset jitter — organic bundle instead of a comb |
| Width Variance | 0 | 0–1; per-fiber thickness jitter (×0.1–×2) |
| Turbulence | 0 | fbm displacement amplitude along the normals |
| Turbulence Z | 0 | Independent fbm displacement in depth |
| Noise Scale | 4 | Spatial frequency of XY turbulence along the arc |
| Noise Scale Z | 4 | Spatial frequency of Z turbulence |
| Noise Speed | 0.2 | Turbulence animation speed (time-driven) |
| Depth Shading | 0 | 0–2; +Z brightens, −Z darkens (uses the cloud's own Z range) |
Symmetry & determinism
| Port | Default | Meaning |
|---|---|---|
| Kaleidoscope | 1 | Rotational copies around the cloud center, 1–12 |
| Mirror | false | Mirrors every odd kaleidoscope copy |
| Seed | 0 | Seeds Random order, shuffle and every per-fiber hash |
Use Cases
- One-line drawing: Geometry to Points → Lines Visualize (
Order Mode = Nearest Neighbor) → Canvas — the cloud becomes a single meandering stroke; addSmoothingfor a hand-drawn feel. - Self-drawing animation: LFO or Time →
Length(withTaper Mode = Thin End) — the line draws itself along a Hilbert or Spiral route; readEnd Pointinto a Circle generator's position so a "pen" rides the tip. - Muscle-fiber / rope bundles: Point Animation → Lines Visualize with
Fibers = 20, smallSpacing,Turbulence,Spacing VarianceandWidth Varianceup,Color Mode = Gradient: Fiber→ Canvas. - Instant mandalas: any small cloud →
Order Mode = Angle Sweep,Closed Loopon,Kaleidoscope = 8,Mirroron, Additive on — rotating the source cloud spins the whole mandala. - Neon signage / marching ants:
Dash Length+ animatedDash Phaseon a smooth closed loop, Additive with a strong color. - 3D undulating streams:
Turbulence ZwithDepth Shading = 1.5— fibers weave in depth and shade themselves light/dark as they pass front/behind.
Tips
- Generators are invisible on their own — route
Imageinto a Canvas node to see the result. - The
Start Point/End Pointoutputs are the current visible window endpoints, updated live — perfect for attaching generative objects (a glow sprite at the pen tip) that follow the animated line. - Nearest Neighbor is the most expensive ordering (greedy search, capped at 20,000 points); Hilbert Curve gives a similar organic locality at much lower cost on dense clouds.
- The instance budget is 4,000,000 capsules; if segments ×
Curve Detail×Fibers×Kaleidoscopeexceeds it, fibers and then kaleidoscope copies are silently reduced — lowerCurve Detailon huge clouds to keep your multipliers. - All variance and turbulence is deterministic in (
Seed, time): the same patch replays identically, and changingSeedre-rolls the whole bundle at once. Softnessreplaces the global AA edge with a wide feather scaled by line width — combine with Additive for laser-glow cores.- Companion nodes: Points Visualize draws the same clouds as dots; Point Animation, Point Morph and Point Trail upstream make the path move.
Open Lines Visualize in the interactive catalog →
Lines Visualize 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.