Points node

Point Density

Point Density is the resampler of the point-cloud pipeline: it raises or lowers the number of points in any cloud without changing its overall shape. A positive Amount inserts new interpolated points (densify); a negative Amount thins the cloud out (decimate). Use it to push a sparse outline up to a lush, dense cloud for Plexus, to smooth a jagged polyline into a flowing curve, or to lighten a heavy cloud before an expensive consumer.

Inputs

PortTypeDefault
PointsThe cloud to resample. Ordered clouds like lines and contours give the cleanest results in Subdivide and Smooth.structure—
ModeHow new points are placed: Subdivide between neighbours in order, Nearest between each point and its closest one, Random between random pairs, or Smooth for a Chaikin curve. Values outside the list act as Subdivide.int0
AmountPositive inserts that many points per pair, capped at 16 (Smooth caps at 6 smoothing passes); 0 passes through; negative thins, where -1 keeps every 2nd point, -2 every 3rd. Output never exceeds 50000 points.int1
SeedFixes the random draw in Random mode, so the same number always gives the same fill. Any whole number works; other modes ignore it.int0

Outputs

PortType
PointsThe cloud to resample. Ordered clouds like lines and contours give the cleanest results in Subdivide and Smooth.structure
Countint

How It Works

The node extracts the incoming cloud, then branches on the sign of Amount.

Densify (Amount > 0)

Amount is the number of points inserted per segment or pair (clamped to 16), interpreted by Mode:

IndexModeInsertion ruleBest for
0SubdivideAmount evenly-spaced points between each consecutive pair, treating the cloud as an open pathOrdered clouds: lines, contours, landmark chains, shape edges
1NearestAmount points between each point and its nearest neighbor, found via a 3D spatial hash gridScattered, unordered clouds — thickens local structure fast
2RandomAmount × count extra points, each at a random interpolation between two random points (Seed-controlled)Organic interior fill; webs between distant points
3SmoothChaikin corner-cutting: each Amount is one iteration (capped at 6) that replaces every segment with two points at t = 0.25 and t = 0.75, keeping both endpointsTurning a polyline into a flowing curve while densifying

Growth rates differ sharply: Subdivide and Nearest grow linearly (roughly count × (1 + Amount)), Random adds exactly count × Amount extra points, and Smooth roughly doubles the count per iteration — 6 iterations on a 100-point path is already ~6400 points.

Decimate (Amount < 0)

The keep factor is (-Amount) + 1: Amount -1 keeps every 2nd point, -2 every 3rd, and so on. Subdivide, Nearest, and Smooth modes all decimate sequentially (every Nth point, shape-preserving for ordered clouds); Random mode instead drops points at random with keep probability 1/factor, controlled by Seed — better for unordered clouds where regular skipping would create visible patterns.

Amount = 0, a single-point cloud, or fewer than 2 points pass through unchanged. The output is always capped at 50 000 points.

Purity and memoization

Point Density is a pure function of its inputs — it holds no time-based state. The node fingerprints the incoming cloud and parameters, and when nothing changed it returns the cached result without re-extracting or resampling. A live upstream that re-emits an identical cloud therefore costs almost nothing here. The flip side: the result for a given input never varies over time — for motion, animate upstream (Point Animation) or downstream, not this node.

Determinism extends to Random mode: the same Seed always produces the same insertions or drops, so the cloud is stable frame-to-frame and safe to feed into connection-sensitive consumers like Plexus.

Parameters in Depth

  • Points (Structure) — the input cloud, [SIMD3] in Grafit units. Ordered sources (Geometry to Points Edges, landmark chains) make Subdivide and Smooth meaningful; unordered scatters suit Nearest and Random.
  • Mode (Int, default 0 = Subdivide) — one of Subdivide, Nearest, Random, Smooth (see table). The mode also selects the decimation flavor when Amount is negative: Random drops randomly, all others keep every Nth.
  • Amount (Int, default 1) — the density control, positive to insert and negative to thin. Positive values are clamped to 16 insertions per segment (Smooth: 6 iterations); each negative step raises the skip factor by one (-1 → 1/2 of the points, -2 → 1/3, -4 → 1/5…). 0 is a pass-through.
  • Seed (Int, default 0) — reseeds the deterministic RNG. Only visible in the inspector (and only meaningful) in Random mode, where it picks both the random pairs when densifying and the random survivors when decimating.

Outputs: Points (the resampled cloud) and Count (its new size — watch it while tuning Amount, especially in Smooth mode).

Use Cases

  • Dense plexus from a cheap outline — Geometry to Points (Circle, Edges, Count 60) → Point Density (Subdivide, Amount 4) → Plexus → Canvas. A 60-point outline becomes a 300-point ring, giving Plexus far more line candidates without paying for 300 samples upstream.
  • Silky curves from tracked landmarks — Vision Tracking → Landmarks to Points → Point Density (Smooth, Amount 3) → Plexus → Canvas. Chaikin iterations round the angular joint chain into a fluid body contour.
  • Organic interior webbing — Geometry to Points (Triangle, Vertices) → Point Density (Random, Amount 16) → Plexus → Canvas. Three corners explode into a random interior scatter; different Seeds give different — but each perfectly stable — fills.
  • Thinning for performance — Liquid Flow → Point Density (Amount -3, Random mode) → Points Visualize → Canvas. Keep roughly a quarter of a heavy simulated cloud; random dropping avoids the striping that every-Nth selection would print on ordered data.
  • Morph resolution matching — Geometry to Points (Line) → Point Density (Subdivide, Amount 8) → Point Morph (Points A) with a dense Sphere on Points B. Bringing both clouds to similar counts makes the morph fronts read cleanly.
  • Comet ribbons — Mouse → Point Trail → Point Density (Smooth, Amount 2) → Plexus → Canvas. Smooths the discrete trail echoes into a continuous, curving ribbon before connecting them.

Tips

  • Subdivide and Smooth assume point order is meaningful — on a random scatter they connect arbitrary neighbors in array order and produce noise. For scatters, use Nearest or Random.
  • Smooth doubles the point count per iteration; check the Count output before pushing Amount up, and remember the hard 50 000-point output cap will silently truncate beyond it.
  • Chaikin smoothing (Smooth mode) slightly shrinks the shape toward its interior with every iteration — corners are literally cut. Two or three iterations are usually the sweet spot.
  • Decimating with Subdivide/Nearest/Smooth keeps every Nth point sequentially, which preserves the path of ordered clouds; Random decimation preserves the statistics of unordered ones. Match the flavor to your data.
  • The node is memoized: identical input + parameters return a cached result. This makes it essentially free behind a static source — feel free to leave it in the chain even when Amount is 0 during tuning.
  • Related nodes: Geometry to Points (raise Count at the source first — it's exact rather than interpolated, up to its 5000 cap), Points Merge (densify individual sources before or after merging), Point Trail (Point Density placed after it smooths echo chains).

Open Point Density in the interactive catalog →

Point Density 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.

More Points nodes