The ShapeOffsetter allows you to generate many variations of a source shape. The shapes that the ShapeOffsetter generates are always parallel to the source, either because they have been given an offset or thickness, or both. You can control the roundness of the offset or thickened output to adjust how the corners are handed..

ShapeOffsetter offsetting a merger Shape.

The ShapeOffsetter can take any 2D Shape node as its Input Shape. In the example above, a Circle has been subtracted from a HouseShape from the 2D Library using a ShapeMerger, whose Difference output is then fed into the ShapeOffsetter.

Node graph with a ShapeOffsetter.

While tou can thicken and offset any Shape in a Shape input or output parameter of any node, the ShapeOffsetter node is needed when you want to relate an offset or thickness to a value in another node in the graph.

When you use 2D Repeaters with ShapeOffsetters, you can get rich results. In the example below, a RadialRepeater2D is used.

Offsetting and thickening repeated and merged Shapes.

In the following example, a GridRpeater2D of thickened Circles is subtracted from a Cross Shape.

Offsetting and thickening repeated and merged Shapes.




The thickness determines how thick the Shape should be made. It has a minimum value of zero, at which point the input Shape is left untouched. Currently, the input Shape is thickened equally on either side by thickness/2. Eventually you will be able to specify a right and left thickness.




The offset value grows or shrinks the Shape depending on whether the offset value is positive or negative.  The result of the ShapeOffsetter will never overlap itself, but rather shrink-wrap the original shape if the offsetting exceeds the lengths of various legs of the Shape. In the example to the right, the “legs” at the bottom of the Shape disappear as the negative offset increases.

Offset and Thicken

If you offset and thicken, the offset is considered first, so the Shape that gets thickened is the offsetted Shape. Combining the two allows you to not only add many interesting and varied forms generated from source shapes, but also add a thickness that is left or right of the source line.

JoinType [Square | Round |Miter] 

As soon as you set a value for either offset or thickness, an option pulldown element appears that allows you to specify how the corners of the output Shape should be handled.


JoinType: Square

A Square JoinType will cut a chamfer at the corners. If the offset is positive, the chamfer will be cut on convex corners but not concave corners. If the offset is negative, the opposite result will be given. To Square all the corners, you could connect two ShapeOffsetters, one with a positive offset and one with a negative.



JointType: Round

With a Round JoinType,  you can specify that the corners should have a radius. When you choose Round, you expose a new parameter called Roundness, which lasts you determine how many segments the rounded corner should have.



JoinType: Miter

A Miter JoinType essentially leaves the corners sharp. This will produce the fewest vertices in the resulting Shape, but can lead to some geometry errors as you manipulate the input Shape. In general, a JoinType of Square or Round will usually smooth over such errors.