Documentation / Node reference / geo nodes
geo/Clip
Cuts geometry with a plane and keeps one side of it.
Topology
The plane is a point on it and a direction across it, so the defaults cut across Y through the origin. Primitives entirely on the kept side come through untouched, and the ones the plane crosses are cut at the crossing, with the new points carrying their edge endpoints' attributes blended at the crossing parameter.
A cut leaves the surface open where the plane went through it. Turn on closed to cap it, which fills the boundary loops the cut opened. That needs the input welded first, so put a geo/Fuse before the clip: an unwelded box has no loop to find.
A 2D input comes out 2D, in the layout it arrived in: a clip preserves its input's shape, and a cut point is placed along the edge it cut rather than lifted out of the plane. The plane is read in the object's OWN frame, so aiming a 2D object with its direction does not move the cut. To cut a 2D object against a world plane, put a geo/DimensionPromote before this node.
Each piece keeps the placement and the parenting of the object it was cut from. When KEEP ALL cuts a PARENT in two, its children stay with the first of the two halves: a child belongs to the whole parent, so one half has to be picked and it is the first one.
Inputs the node cannot cut are refused by name rather than dropped. A brep is one of those: cutting it is a boolean against a half space, which is geo/CADBoolean's job. Volumes and SDFs pass through untouched, since a half space has no meaning against a sampled or implicit field.
Parameters
| Name | Type | What it does |
|---|---|---|
| mode | UInt8 KEEP_ABOVE · KEEP_BELOW · KEEP_ALL | Which side of the plane survives. KEEP_ALL emits both halves, as two objects. |
| origin | Vector3 | A point the cutting plane passes through, in world space. |
| direction | Vector3 | The direction across the plane, which is its normal, in world space. It points at the side KEEP_ABOVE keeps. It does not have to be a unit vector. |
| addSplitPrimitives | Bool | Cut the primitives the plane crosses, adding a point where it crosses each edge. Off keeps every straddling primitive whole, on the side its furthest point is on, so the result follows the input's edges instead of the plane. |
| closed | Bool | Cap the hole the cut opened, by filling the boundary loops it left. The input has to be welded for a loop to exist, so put a geo/Fuse before this node. |
| keepUnreferencedPoints | Bool | Keep the points of the half that was removed, unreferenced, in the point buffer. Off, which is the default, drops them and renumbers the survivors from 0. On preserves the input's point numbering, which is what point groups, ptnum() expressions and index correspondence in geo/AttributeCopy read. |
| allocator | UInt8 TEMP · POOL · FLAT_POOL | Which allocator the cook's scratch memory comes from. TEMP is reset every frame; POOL suits a clip cooking many times over. |
See also
- geo/Delete
- geo/Fuse
- geo/PolyFill
- geo/Transform
This page is generated from the engine, so it describes the release you can download. The same text is in the editor's Help panel next to the node itself.