Points node
Geometry to Points
Geometry to Points is the primary producer of the composable point-cloud pipeline. It samples a 2D or 3D shape — square, circle, triangle, cube, sphere, torus, tube, pyramid, cylinder, cone and more — into a live point cloud, distributed on the shape's volume, surface, edges, or vertices. The result is a [SIMD3<Float>] array in Grafit units, emitted on the structure-typed Points output with zero serialization, ready to feed Plexus, Points Visualize, Point Animation, Point Morph, or any other point-cloud consumer.
Inputs
| Port | Type | Default |
|---|---|---|
| GeometryThe mesh to sample — cable any Geometry output AND set Shape to “Geometry”. The cable alone does nothing: choosing the mode keeps a patch from switching source behind your back. Distribution still rules: Vertices takes the mesh’s own points, Surface scatters over its triangles by area, Edges walks the wireframe. | structure | — |
| ShapeWhich shape the points are sampled from — square, rectangle, circle, triangle, line, grid, ring, cube, sphere, torus, pyramid, cylinder, cone, plane or tube. Unknown numbers fall back to Square. | int | 2 |
| DistributionWhere on the shape the points land — through its Volume, on its Surface, along its Edges, or exactly on its Vertices. Unknown numbers fall back to Volume. | int | 0 |
| CountHow many points to sample. Clamped to 0…5000; ignored for Vertices, where the shape decides the count. | int | 200 |
| Size XHalf-width of the shape in Grafit units. Not clamped; negative mirrors the cloud, and 0 flattens it onto the axis. | float | 0.8 |
| Size YHalf-height of the shape in Grafit units. Not clamped; negative mirrors the cloud, and 0 flattens it onto the axis. | float | 0.8 |
| Size ZHalf-depth of the shape in Grafit units. Not clamped; it has no effect on the flat 2D shapes, which live on z = 0. | float | 0.8 |
| Inner RadiusThe size of the hole in a ring, torus or tube, as a fraction of the outer radius. Clamped to 0…0.98. | float | 0.5 |
| TaperTop radius of a cone or pyramid, as a fraction of the base. Clamped to 0…1, where 0 is a sharp point and 1 is a straight column. | float | 0 |
| SeedChanges the random scatter without changing the shape. Any whole number gives a different but repeatable cloud. | int | 0 |
| Rotate XRotates the cloud around the X axis, in degrees. Any value works; it just keeps turning. | float | 0 |
| Rotate YRotates the cloud around the Y axis, in degrees. Any value works; it just keeps turning. | float | 0 |
| Rotate ZRotates the cloud around the Z axis, in degrees. Any value works; it just keeps turning. | float | 0 |
| Position XMoves the whole cloud horizontally, in Grafit units, after rotation. Any value works. | float | 0 |
| Position YMoves the whole cloud vertically, in Grafit units, after rotation. Any value works. | float | 0 |
| Position ZMoves the whole cloud in depth, in Grafit units, after rotation. Any value works. | float | 0 |
Outputs
| Port | Type |
|---|---|
| Points | structure |
| Normals | structure |
| CountHow many points to sample. Clamped to 0…5000; ignored for Vertices, where the shape decides the count. | int |
Live Preview
How It Works
Every shape is generated in a normalized space (half-extent or outer radius = 1), then scaled non-uniformly by Size X / Size Y / Size Z, rotated (X → Y → Z, in degrees), and finally translated by Position X / Y / Z. With the default Size of 0.8, a shape spans roughly ±0.8 Grafit units — comfortably inside the [-1, 1] shortest-edge viewport range.
Sampling is fully deterministic: a seeded xorshift RNG means the same Shape, Distribution, Count, Seed, and parameters always produce the identical cloud, frame after frame. Nothing jitters unless you change an input.
Shapes
| Index | Shape | Space | Notes |
|---|---|---|---|
| 0 | Square | 2D | Unit square in the XY plane |
| 1 | Rectangle | 2D | Built-in aspect: half-height 0.62 (reshape further with Size Y) |
| 2 | Circle | 2D | Area-uniform disc fill (default shape) |
| 3 | Triangle | 2D | Equilateral, apex up |
| 4 | Line | 2D | Horizontal segment from -1 to +1 |
| 5 | Grid | 2D | Random picks from an 8 × 8 lattice (points snap to grid crossings) |
| 6 | Ring | 2D | Annulus; hole size via Inner Radius |
| 7 | Cube | 3D | Unit cube |
| 8 | Sphere | 3D | Uniform sphere (volume, surface, or lat/long wireframe) |
| 9 | Torus | 3D | In the XY plane, tube bulging into Z; hole via Inner Radius |
| 10 | Pyramid | 3D | Base at z = 0, top at z = 2 (normalized); Taper turns it into a frustum |
| 11 | Cylinder | 3D | Radius 1, height z ∈ [-1, 1] |
| 12 | Cone | 3D | Base radius 1 at z = -1, top radius = Taper at z = +1 |
| 13 | Plane | 3D | Identical to Square (flat quad, useful as a 3D floor once rotated) |
| 14 | Tube | 3D | Hollow pipe: outer radius 1, inner wall = Inner Radius, z ∈ [-1, 1] |
Distributions
| Index | Distribution | Meaning |
|---|---|---|
| 0 | Volume | Points fill the shape's interior (area-uniform for discs, annuli, and solids) |
| 1 | Surface | Points sit on the shape's skin (sphere shell, cube faces, cylinder side + caps…) |
| 2 | Edges | Points trace the wireframe — square outlines, cube edges, torus tube rings, sphere lat/long lines, cylinder top/bottom rings |
| 3 | Vertices | Exact corner sets, ignoring Count: square/plane and rectangle (4), triangle (3), line (2), cube (8), pyramid (5 with an apex, or 8 as a frustum) |
Shapes without a natural corner set (circle, ring, grid, sphere, torus, cylinder, cone, tube) fall back to random sampling when Vertices is selected.
A few sampling details worth knowing:
- Circle / Ring volume uses square-root radial sampling, so density is uniform by area — no clustering at the center.
- Torus derives its geometry from Inner Radius: tube radius
t = (1 - inner) / 2, major radiusR = (1 + inner) / 2, so the outer extent is always exactly 1 before scaling. Edges mode quantizes the tube angle into 6 discrete rings running around the torus. - Sphere Edges draws a wireframe of 6 longitude lines and 5 latitude rings.
- Pyramid and Cone interpolate their cross-section from base to top; Taper is the top radius (0 = sharp point, 1 = straight prism/cylinder).
- Cylinder Surface distributes ~70% of points on the side wall and ~30% on the caps; Cone Surface puts ~80% on the slant.
After sampling, the transform runs in a fixed order: rotate around X, then Y, then Z (positive degrees = clockwise, per the Grafit convention), then translate. The rotation pivot is the shape's own origin.
Parameters in Depth
- Shape (Int, default 2 = Circle) — selects the geometry from the table above. Saved projects store the raw index, so the list is append-only and stable.
- Distribution (Int, default 0 = Volume) — Volume, Surface, Edges, or Vertices. For flat 2D shapes, Volume and Surface are equivalent (both fill the face); Edges gives the outline.
- Count (Int, default 200) — number of sampled points, clamped to 0…5000. Hidden in the inspector when Distribution is Vertices, because the corner count is fixed by the shape.
- Size X / Size Y / Size Z (Float, default 0.8 each) — non-uniform scale per axis, applied to the normalized shape. Size 1.0 means the shape reaches ±1 (full shortest-edge height). Size Z is hidden for flat 2D shapes (Square, Rectangle, Circle, Triangle, Line, Grid, Ring, Plane) since they live at z = 0. Stretch a Sphere with unequal sizes to get an ellipsoid, a Cube into a slab, a Circle into an ellipse.
- Inner Radius (Float, default 0.5) — the hole, as a fraction of the outer radius (clamped 0…0.98). Only shown for Ring, Torus, and Tube. Small values make a fat donut / thick pipe; values near 1 make a thin band.
- Taper (Float, default 0) — top radius as a fraction of the base (clamped 0…1). Only shown for Pyramid and Cone. 0 is a sharp apex; anything above 0 produces a truncated frustum (and, in Vertices mode, switches the pyramid from 5 corners to 8).
- Seed (Int, default 0) — reseeds the deterministic RNG. Same seed, same cloud; change it to get a different (but equally stable) arrangement.
- Rotate X / Rotate Y / Rotate Z (Float, default 0) — rotation in degrees, applied in X → Y → Z order around the origin. Rotate Z spins in the screen plane; Rotate X/Y tilt 3D shapes into perspective.
- Position X / Position Y / Position Z (Float, default 0) — final translation in Grafit units. Position Z pushes the whole cloud toward (+) or away from (-) the camera for downstream 3D renderers.
The Points output carries the cloud; the Count output reports the actual emitted point count (useful for driving other parameters, or checking the fixed Vertices count).
Use Cases
- Classic plexus constellation — Geometry to Points (Sphere, Surface) → Point Animation (Curl) → Plexus → Canvas. The staple network-of-lines look, breathing with divergence-free noise.
- Wireframe 3D object — Geometry to Points (Cube or Torus, Edges) → Point Transform (animate Rotation Y with an LFO) → Points Visualize → Canvas. A spinning point-wireframe with zero geometry assets.
- Shape morphing — two Geometry to Points nodes (e.g. Circle and Triangle, Edges) → Point Morph (drive Morph with an LFO or Audio FFT band) → Plexus → Canvas. Seamless dissolve between silhouettes.
- Star field with structure — Geometry to Points (Grid) → Point Animation (Drift, small Amount) → Points Visualize (small Size, Additive) → Canvas. The 8 × 8 lattice keeps an underlying order while drift keeps it alive.
- Composite scenes — Geometry to Points (Ring) + Geometry to Points (Line, rotated 90°) → Points Merge → Plexus → Canvas. Build compound figures from primitives, each placed with its own Rotate/Position before merging.
- Audio-reactive geometry — Audio FFT → Math (remap a band to 0.4…1.2) → Geometry to Points Size X/Y → Points Visualize → Canvas. The shape pulses with the music while the point arrangement itself stays rock-stable thanks to the fixed Seed.
Tips
- Count is capped at 5000. If you need a denser cloud, chain a Point Density node after it (Subdivide or Nearest) — its ceiling is 50 000.
- Vertices mode is the cheapest possible cloud (2–8 points) and pairs beautifully with Plexus at large Max Distance: instant geometric line figures.
- The pyramid's normalized height runs z = 0 to z = 2 (not centered) — use Position Z ≈ -0.8 (with default Size) or Point Transform with Center enabled to pivot it around its middle.
- Sampling is deterministic per Seed, so animating Count grows/shrinks the cloud without reshuffling existing points — handy for reveal effects.
- All parameters re-sample the cloud when changed, which is cheap at these counts, but the node is not time-based: for continuous motion use Point Animation downstream instead of animating Seed (which teleports every point).
- Prefer transforming here (Rotate/Position inputs) when the node is the only source; reach for a separate Point Transform node when you need to re-orient a merged or animated result further down the chain.
Open Geometry to Points in the interactive catalog →
Geometry to Points 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.