Every points wire carries a small table of per-point data — position, scale, rotation, group — and can carry your own named channels (“attributes”) on top, like Blender’s geometry attributes. The Spreadsheet panel shows that table live for whatever node you select.
Click any panel’s editor-kind chip (top-left corner) and pick Spreadsheet. The panel follows your selection: click a node in the node editor and the table shows the data flowing out of it — one row per point, one column per channel. It updates live while the graph plays.
The table works even on a node whose branch isn’t connected to anything — the panel quietly forces that node to evaluate, exactly like the hover peek on an output socket.
Every points value has a fixed set of built-in channels. Some are always present, the rest exist only when a node upstream produced them:
| Column | Meaning |
|---|---|
index | The point’s position in the list — its identity. Not stored anywhere; it simply is the row number. |
x, y (and z for 3D) | Position. 2D points are normalized canvas space; 3D points are world-space meters. |
scale x, scale y | Per-point scale, consumed by Copy to Points and friends. |
rotation | Per-point rotation (shown in degrees). |
group | An identity tag assigned by Collect and friends — which source a point came from. Group-aware nodes (Group Pick, Copy to Points’ variant picking) key off it. |
nx, ny, nz | Surface normals on 3D scattered points. |
On top of the built-ins, points can carry any number of named channels you define — a weight per point, an age, a color. A channel has a name, a type (float, vec2–vec4, or color), and one value per point. Once written, it travels down the wire through every point node — transforms, filters, merges, simulations — and shows up as an extra column in the Spreadsheet.
name.x, name.y, …).x, y, index, rotation, scale, group, …) — those are reserved and writes to them are ignored.The Set Named Attribute node (point category) is the direct way to author a channel. Wire points (or a spline — see below) through it, type the name right on the node body, pick a type, and choose where the values come from:
Stack several Set Named Attribute nodes to build up multiple channels; same-name writes replace the previous channel.
Point Expression can read and write channels from code, which makes attributes programmable:
attr("weight")reads the current point’s weight (0 if absent). attr("color", 1) reads a specific component of a multi-component channel.setattr("age", t) writes a float channel at the current point, creating it if needed.For example, cull by a channel written upstream: keep = attr("weight") > 0.5. Or bake a computed value for downstream inspection: setattr("dist", hypot(px - 0.5, py - 0.5)).
setattr in the same expression isn’t visible to attr, so results never depend on the order points are processed in.Point Expression also runs on spline anchors: set its Target to “spline anchors” and the same code runs once per anchor — read px/py, the handle offsets inx0/iny0/outx0/outy0, width0, and subpath; write x, y, inx, iny, outx, outy, width, and keep. attr()reads anchor channels (falling back to the subpath’s) and setattr() writes them.
Three companion nodes operate on channels directly. Everywhere a node asks for an attribute name, the field offers a dropdown of the channels actually present on the wired input — pick one, or type a new name freely.
Channels also drive three existing nodes: Filter Points gained an attribute mode (keep points whose channel clears a threshold); Copy to Pointsreads channels three ways — a Tint attribute (each copy’s color, image mode), an Opacity attribute (each copy’s alpha, image mode), and an “attribute” variant pick (which variant lands on each point, every mode — the channel’s 0–1 value spreads across the variant set exactly like image luminance); and Point Labels / Points to Text templates accept {attr:name} alongside {x} and friends.
Splines carry named channels too, on two domains: per anchor (like the built-in width profile) and per subpath(like the group tag). Set Named Attribute’s Target parameter picks the domain; the input socket retypes to spline automatically. Spline channels survive the editing operations that copy anchors — trims, joins, transforms — and show in the Spreadsheet’s spline table (subpath channels repeat across their anchors, labeled “(subpath)”).
You shouldn’t have to think about this — channels just follow the points — but the rules are simple and worth knowing:
setattr writes float channels only — use Set Named Attribute for vectors and colors.points3d values, but the attribute nodes accept 2D points only, and 3D instancing doesn’t read channels yet (Instance Color’s attribute source is planned).