Points
Points: one at a position, or a distribution filling a region or source geometry by Poisson Disk, Stable Blue Noise, Jittered Grid, or Random.
What it does
Points emits a point cloud. With nothing wired into Geometry it emits a single point at Position. Wire a source in and it distributes points over that source: a mesh surface, the interior of a shape, a Distance Field or a Volume, the outline of an analytic shape, or the bright regions of an image.
Every point carries a position, a radius as @pscale and an id, so downstream nodes can instance geometry, seed particles, or feed a stamp directly. Layout is pure random, blue-noise Poisson disk, a GPU blue-noise variant that stays stable under animation, or a jittered grid. Quantity is set as an exact count or as a spacing distance.
Geometry doubles as a preset menu. Picking Rectangle, Circle, Cube or Sphere drops that shape node into the graph, already wired in.
When to use it
Points over a surface, inside a shape, along an outline, or across the bright regions of an image.
One point placed by hand, as a locator or a single hero placement: leave Geometry unwired.
Seeding a particle sim, a spawn stream, or an instancing chain.
Varying density: an image into Density Modulator rejects points in darker areas, and Density Attribute biases density by a named attribute.
Points without visible clumps: raise Relax Iterations, or use Poisson Disk or Stable Blue Noise.
| Parameter | Type | Default | What it does |
|---|---|---|---|
geometry | Geometries or Points or Primitives or Field or Color Field | "None" | What the points fill or sit on — geometry, shapes, SDF, volume, or raster. Picking a preset drops that shape node into the graph, wired here. Unwired: a single point. One of: None, Rectangle, Circle, Cube, Sphere. |
density_modulator | Raster | — | Raster image — post-scatter rejection (brighter = keep, darker = reject) |
fill | Color or Color Field or Color[] or Field or Material or Material[] or Frame Sequence | — | Color source — Image, Color Field, or any Field. Evaluates at each point position to assign vertex colors. |
density_attribute | String | "" | Source attribute (e.g. \"density\") that modulates scatter density per-region. Empty = off. Mesh uses per-prim avg; Points uses nearest-neighbour. |
mode | String | "Interior" | Surface: area-weighted on a mesh. Interior: fills the inside — shape / SDF / volume, or a mesh (converted to a distance field). Edges: arc-length on Crc shape outlines. Density: luminance rejection — a candidate survives with probability equal to the pixel's brightness, so the delivered count scales with the image's MEAN brightness (a dark image returns fewer than count). Grid: deterministic per-cell sampling of any field (raster/colour → @Cd, scalar → @density, vector → @v) into a point grid. One of: Surface, Interior, Edges, Density, Grid. |
seed | Number | 0 | Random seed (same seed = same result) |
distribution | String | "Poisson Disk (CPU)" | Random: pure white-noise scatter. Poisson Disk (CPU): strict blue-noise (Bridson) — no two points within min_distance, slower. Stable Blue Noise: GPU sample-elimination — fast, animation-stable, approximate min_distance. Jittered Grid: stratified grid with jitter. One of: Random, Poisson Disk (CPU), Stable Blue Noise, Jittered Grid. |
count_mode | String | "By Count" | By Count: target an exact point count (algorithm picks spacing). By Density: target a min-distance spacing (count emerges from bounds area). One of: By Count, By Density. |
count | Number | 500 | Target number of points. Algorithm picks spacing to hit this count. In Density mode this is the CANDIDATE budget, not the delivered count — luminance rejection then scales the result by the image's mean brightness. |
min_distance | Number | 3 | Spacing between points. Smaller = more points. Count emerges from bounds area. |
jitter_amount | Number | 0.500 | Random offset within each grid cell. 0 = perfect grid, 1 = maximum jitter. |
grid_resolution | Number | 256 | Points along the longer axis of the field. Shorter axis follows the field's aspect ratio. Grid mode only. |
position | Vec3 | (0, 0, 0) | Position (X, Y, Z) of the single point emitted when nothing is connected. |
pscale | Number | 1 | World-space radius of each point. Output as @pscale. |
pscale_variance | Number | 0 | Per-point size variation (0 = uniform, 1 = ±100% variation). |
apply_color | Boolean | false | Write the @Cd color attribute (off by default — downstream nodes may colour the points) |
color | Color | rgba(1.00, 1.00, 1.00, 1.00) | Per-point color (@Cd) |
relax_iterations | Number | 0 | Relaxation iterations. 0 = off. 4-8 typical. Spreads clumps and reduces variance in nearest-neighbour distance. |
relax_strength | Number | 0.500 | Repulsion strength per relax iteration. Ignored when relax_iterations = 0. 0 = no displacement, 1 = strong push (~min_distance per iteration in clumped regions). |
strength | Number | 1 | Effect strength / wet-dry (0 = no effect, 1 = full). Editable, wirable, keyframable. |
Gotchas
Mode is advised, not obeyed. When the wired source cannot be consumed the way Mode asks, the node substitutes the natural mode for that kind and records the substitution in the log.
Density Attribute reads only from wired geometry or points. On a Distance Field, a Volume, an image or an analytic shape it does nothing. Density Modulator is the reverse: it takes an image and nothing else.
Poisson Disk runs on the CPU and never lets two points come closer than Min Distance, but it is slower and can jump frame to frame under an animated seed. Stable Blue Noise gives the same look with an approximate spacing guarantee, stays stable under animation, and runs on the GPU. Prefer it for anything moving.
Grid Resolution applies in Grid mode only, Jitter Amount to Jittered Grid only, and Position only while Geometry is unwired.
Apply Color and Color write a colour on the single-point form only. On a distributed scatter both stay visible and do nothing. Wire a colour source into Fill instead: it evaluates at every point position, the single one included.
Picking a preset on Geometry adds a real node to the graph. Editing that node does not change the menu, deleting it returns the menu to None, and picking a different preset spawns the new shape and leaves the old one behind.
Worked example
Add a Points node. With nothing wired in it emits one point at Position.
Pick Circle on Geometry. A Circle node drops into the graph wired in, and the single point becomes a scatter filling it.
Set Count Mode to By Count and raise Count, or switch to By Density and lower Min Distance.
Wire an image into Density Modulator to thin the points in its darker regions, and a colour source into Fill to tint them.
Raise Relax Iterations if the result still clumps.
See also
Iterator · Spawn · Particle Sim · Points