Documentation / Node reference / geo nodes

geo/CurveProperties

Opens or closes each chain of a curve.

Topology

A curve made of segments is closed when its last segment points back at the point it started from. Nothing else says so: there is no flag on the geometry, and a chain that merely finishes where it began, on a second point sitting on top of the first, is an OPEN chain to everything downstream. This node is where that gets decided.

MOSTLY WHAT MOVES IS NOT THE SHAPE, it is what the curve IS to the nodes after it. OPEN never touches the drawing, and neither does CLOSED on a chain that already finishes where it started. The one case that does draw something new is CLOSED on a chain whose ends are genuinely apart: the closing edge appears, because it was not there before. Give it three sides of a square and you get the square.

CLOSED joins the ends. If the chain already ends on a copy of its first point, that copy is fused away rather than joined to with a zero-length segment, so the result is a clean ring: one point per corner, one segment per side. That is the cure for a curve imported from a font or an SVG, which is usually written out that way. The fuse keeps the FIRST point and its attributes, and drops the duplicate along with its own.

OPEN does exactly the reverse: the point where the ring closes is SPLIT into two points at the same position, one ending the chain and one starting it. Every segment stays, so the drawing is untouched, and every node that cares about inside and outside now says there is no inside. That is the point. Send an open chain into geo/SDFCreate and the field is the plain DISTANCE to the curve, positive on both sides, which is what geo/SDFOffset turns into a stroke of a given width. geo/M2DTriangulate into here into geo/SDFCreate is the whole recipe for the OUTLINE of a filled shape.

One thing to know about the two points OPEN leaves at the seam: geo/Fuse welds them back together, which closes the chain again. To take a SIDE off a ring rather than open it, reach for geo/Delete, which lets you say which side.

KEEP, the default, leaves every chain as it found it, so dropping this node into a graph changes nothing until you ask it to.

Chains are found the way every other node finds them: a run ends where one segment's second point is not the next segment's first. So an object holding several chains has each one treated on its own, and a mesh, a manifold or anything else that is not made of segments passes straight through.

Parameters

Name Type What it does
group String Which objects to edit, by OBJECT group. Empty means every object on the input. Objects left out pass through untouched, as do objects that are not made of segments.
closeMode UInt8 KEEP · OPEN · CLOSED OPEN splits the point where a chain closes into two points at the same position, so the chain opens and keeps every segment. CLOSED joins the ends, fusing a duplicated end point into the first rather than leaving a zero-length segment behind. Those two are exact inverses and neither changes the shape; CLOSED on a chain whose ends are genuinely apart is the one case that draws a new edge. KEEP leaves each chain as it arrived, which is why it is the default: this node should not close something behind your back. The fuse keeps the FIRST point, with its attributes, and drops the duplicate. It fires when the two ends sit within 0.0001 of each other, measured in WORLD UNITS and not as a fraction of the curve, so a glyph modelled very small can fuse ends you meant to keep apart and a part modelled very large can fail to fuse ends you meant as one. Scale the curve into a sane range first if that bites. A chain too short to enclose anything is left open whatever this says, and so is one whose duplicated end point is shared with another chain: adding the closing edge there would leave a segment of no length behind, which is worse than leaving the chain as it is.

See also

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.