Documentation / Node reference / geo nodes

geo/LineExpand

Widens a polyline into a flat ribbon of triangles.

Transform

Pushes each point of a segment chain out to both sides, at right angles to the line and to `up`, and meshes the result. What comes out is a RIBBON: a flat strip that follows the curve, facing whichever way `up` says. `up` is in the curve's own frame, so the ribbon turns with its object.

A 2D curve gives a 2D ribbon, laid out in the curve's own plane, and `up` is ignored.

Every CHAIN of an object gets its own ribbon, all of them in that object's one output geometry. A chain runs until a free end or a fork, so separate chains are never joined. A chain that comes back to its first point is CLOSED: its seam is a corner like any other, with no notch.

`amount` is a HALF-width: each side reaches `amount` from the line, so the ribbon is twice this across. That matches geo/PolyWire's and geo/M2DStroke's radius.

Corners are MITERED by default: the two offset edges are carried out to where they meet, so a closed square gives exactly the square grown and shrunk by `amount`. A sharp corner reaches out a long way, which is what `miterLimit` cuts back to a BEVEL. Open ends are cut square at their point (BUTT), or `amount` past it (SQUARE), which is what closes the corners of a set of single segments.

The arithmetic is also exported as plain procs (LineExpandKernel.jai): an application that moves the source points itself can rebuild the ribbon's positions without a cook, and gets the cook's own result.

geo/PolyWire is the round-tube version of the same idea. For a curve with a width as a FLAT SHAPE that can be booleaned rather than as a mesh, use geo/M2DStroke, which also handles self-crossings.

Parameters

Name Type What it does
up Vector3 Which way the ribbon faces, in the curve's own frame, so the ribbon turns with its object. The width is laid out at right angles to both this and the line, so this is what stops the strip twisting along the curve. Ignored on a 2D curve, whose ribbon always lies in the curve's own plane.
amount Float How far each point is pushed out to EACH side, so the ribbon is twice this across. A half-width, like geo/PolyWire's and geo/M2DStroke's radius.
joinType UInt8 MITER · BEVEL What a corner looks like: miter carries the two offset edges out to their sharp meeting point, bevel cuts straight across the outside of the corner.
miterLimit Float How far a miter may reach, as a multiple of `amount`, before it is cut back to a bevel. 0 means no limit. Only used when the join is miter.
capType UInt8 BUTT · SQUARE What the ENDS of an open chain look like: butt stops flat at the last point, square carries on `amount` past it. A closed chain has no ends, so this does nothing to one.

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.