|On this page|
This node builds offset geometry at a specified distance from a planar graph of connected polylines. It can generate polyline outlines, or polygonal surfaces.
This is useful for generating road geometry from connected polylines.
Currently the node does not handle polylines that simply overlap in space — the polylines must be connected with fused points. You will need to use tools such as Curvesect and Fuse to set up the input geometry.
The node sets point attributes on the generated geometry when outputting Offset Curves and Offset Surfaces, and also sets primitive attributes when outputting Offset Surfaces.
The node computes the straight skeleton of the input, and to do so tries to build a triangulation of the input and its convex hull. It will error with Failed to process triangulation if there is a problem with this step. The common causes of this failure are overlapping curves, duplicate points, or a graph with a degenerate convex hull.
The node may warn about other problems encountered during the skeleton computation, reporting a Bad partition of collapsed polygon, or X flip event(s) ignored because of infinite loop detection, with the second warning often a consequence of the first. These warnings are typically an indication of numeric problems cropping up during the execution of the algorithm and may often be alleviated by either decreasing or increasing the Coincidence Tolerance or changing the scale of the input.
The computation of the skeleton is sensitive to size. If you are getting artifacts, try changing the Coincidence Tolerance or scaling your geometry. As a rough guide, you might need to increase the Coincidence Tolerance if the problem appears to be missed intersections, and decrease it if the problem appears to be missing primitives.
The computation of the skeleton is more sensitive to parallel edges when a non-uniform Inside Scale or Outside Scale is used. If you are getting artifacts, try increasing the Parallelism Tolerance.
The optional Edge Distance Attribute created while generating Offset Surfaces can be used to “raise the roof”. Translating the output by this amount in the direction of the plane’s normal will result in roof-like geometry. For non-uniform offsets, i.e., when local scale attributes are used, you’ll first need to divide the value by the optional Edge Speed Attribute.
The primitives whose edges form the input planar graph. Leave this empty to use all input geometry.
How the node converts the 3D point positions in the geometry to 2D.
Project the points onto an imaginary plane that best fits their 3D positions.
Select Projection Plane
Manually specify the plane to project onto.
When 2D Positions is Select Projection Plane, the origin of the plane to project the points onto.
When 2D Positions is Select Projection Plane, the distance along the Plane Normal direction between the projection plane and the Plane Origin.
When 2D Positions is Select Projection Plane, a vector controlling the orientation of the projection plane.
The type of offset geometry to generate.
Generate polygonal curve outlines.
Generate polygonal surfaces.
How far to offset the edges of the new geometry from the original curves.
Number of offsets to perform. Numbers greater than
1 divide the offset distance into multiple evenly spaced outlines.
How to determine which sides of edges represent the inside and the outside of the input graph.
The vertex order of any primitives referencing an edge determines which side of the edge is considered the inside or the outside.
A simple separation of the plane into an outside and possibly multiple insides, with the outermost closed edge loops, if any, separating the outside from the inside(s).
A nested separation of the plane into outsides and insides. The outermost closed edge loops, if any, separate the outside from the inside(s). The next outermost closed edge loops, if any, separate those insides from embedded outsides. The next outermost closed edge loops, if any, separate those embedded outsides from even more embedded insides, and so on.
Alternating Reachability With Permeable Shared Edges:
A nested separation of the plane into outsides and insides similar to Alternating Reachability, with the additional constraint that a closed edge loop creates a nested outside region only when it consists entirely of unshared edges. In this context, an edge is considered shared when its reverse is also an edge. This approach is useful for inside regions containing polygonal meshes.
Generate the inner offset geometry (on the inside of closed loops).
Generate the outer offset geometry.
Keep Input Geometry
Include the original curves in the output. The default is off.
Split Offset Curves To Omit End Caps
By default, the generated offset curves wrap around dangling edges. Turning this option on will split such offset curves into multiple primitives to remove these end caps.
Local attributes can be used to generate non-uniform offset geometry, by scaling the offset for each edge.
It is possible to get overlapping offset curves across different division levels when generating levels of non-uniform offset curves.
Scale the inside offset for each edge by the value of this attribute. A vertex, point, or primitive attribute can be used. Non-positive values are ignored and treated as having a value of 1. If no Outside Scale is specified, then this attribute is also used for the outside offset. The value will be averaged across any adjacent collinear edges.
Scale the outside offset for each edge by the value of this attribute. A vertex, point, or primitive attribute can be used. Non-positive values are ignored and treated as having a value of 1. If no Inside Scale is specified, then this attribute is also used for the inside offset. The value will be averaged across any adjacent collinear edges.
Create Output Groups
Create groups for inside and outside geometry.
Put the generated inner geometry (on the inside of closed loops) in this group.
Put the generated outer geometry in this group.
Edge Distance Attribute
When Output is Offset Surfaces, create this vertex attribute with the distance of each vertex from the original polyline that generated it.
Edge Speed Attribute
When Output is Offset Surfaces, create this primitive attribute with the propagation speed of the original polyline that generated it. This will be 1 when no local Inside Scale or Outside Scale attributes are used.
Treat points within this distance in the 2D projection as coincident.
Treat lines within this angle of each other (in radians) as parallel.
This control provides workflow options, by changing how this node behaves when the computation of the straight skeleton fails.
Fail with Error
Report the failure as an error. This is the least forgiving option.
Warn and Output Empty Geometry
Report the failure as a warning and output empty geometry.
Cache Straight Skeleton
Cache the computed 2D graph to improve performance.
Recompute Point Normals
Recompute point normals (if they exist).