Merge Points
Combines two or more point streams into a single Points output, remapping IDs and tagging each stream's origin for downstream selection.
Category: Point Ops Menu path: Point Ops > Merge Points
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
points_in | points | input (multi) | Two or more point inputs. Use the + button on the node to add more slots. |
out | points | output | Single Points stream concatenated in slot order. |
Parameters
None.
How It Works
MergePoints is the points-side analog of MergeShapes — a pure structural combine, no math. Each input contributes its points verbatim to the output, with PointIds re-keyed to fresh values so downstream nodes that rely on stable identity still work.
Stream order matches slot order: slot 0 comes first, the last slot comes last. The output point indices [0 .. n-1] follow this concatenation order. Drag inputs in the node graph to reorder.
sourceIndex
A sourceIndex per-point attribute is always emitted (overwriting any incoming sourceIndex). It's a scalar 0, 1, 2... matching the input slot each point came from — useful for routing branches downstream:
PointAttributes (color from sourceIndex via Remap)→ color each origin differently.PointAttributes (scale from sourceIndex)→ make stream A bigger than stream B.PointDelete (threshold on sourceIndex)→ drop a specific stream after a downstream branch already used it.
Attributes (conservative merge)
Per-point attributes (scale, opacity, rotation, color, custom) are preserved only when present on every input with the same type. Diverging attribute surfaces get dropped rather than zero-padded — silently zeroing opacity or scale on points that lacked the attribute would produce invisible or zero-size points downstream, which is rarely what you want.
If you need an attribute to survive a merge across mismatched sources, normalize first: insert a PointAttributes (target: Opacity, value: 1.0) on the branch that lacks the attribute, and the merge will pass it through cleanly.
Disconnected slots are skipped. A MergePoints with only one connected input is a no-op passthrough.
Usage Examples
Combine procedurally-generated and shape-derived points
Grid → MergePoints slot 0 + Rectangle → ShapeToPoints → MergePoints slot 1 → DrawPoints. You get the grid plus the rectangle corners in one stream, with sourceIndex available for later routing.
Two scatter passes with different seeds
Rectangle → PointScatter (seed=0) + Rectangle → PointScatter (seed=42) → MergePoints → DrawPoints. Twice as many points without changing count.
Animated grouping
Two Grid chains with different counts feeding MergePoints → PointAttributes (color from sourceIndex via Colorize ramp) → DrawPoints. Each stream gets its own color, but they all animate as one population.
Tips
- MergePoints does not deduplicate — coincident points from multiple streams stay coincident. Use a downstream filter (e.g.
PointRelax,PointDelete) if you want to thin them. - Reach for MergePoints when you want streams to coexist; reach for a dedicated boolean/relaxation node if you want them to interact.
- The node grows additional input slots on demand via the
+button. - Empty / disconnected slots are silently ignored.
Related Nodes
- MergeShapes — the shape-side analog when you want to combine shape geometry instead of point streams.
- PointAttributes — set or normalize attributes before merging if you need them preserved.
- PointDelete — thin a merged stream using
sourceIndexor any attribute. - DrawPoints — rasterizes the combined stream.