Resample
Resample 2D paths to a target anchor count or spacing, or decimate 3D meshes.
What it does
Resample redistributes the anchors on a 2D shape, or thins out the triangles of a 3D mesh. Which one happens depends entirely on what is plugged into Input. A shape has its path anchors rewritten in place: fill, stroke, and every other shape property stay as they were, and only the anchor positions and count change. A mesh is decimated instead, collapsing edges to hit a target polygon budget while trying to keep the silhouette intact.
On shapes, three modes control anchor placement: a fixed Count, a fixed spacing Length along the path, or an Adaptive mode that packs more anchors into tight curves and fewer into straight runs.
When to use it
Simplifying a shape traced or imported with too many anchors
An exact anchor count on a path, for animation rigging, dash patterns, or anything needing a predictable point count
Even spacing along a path for scattering or stamping points
Reducing the triangle count on a heavy imported mesh
A hand-drawn curve turned into hard, straight-edged segments: Polyline Output
| Parameter | Type | Default | What it does |
|---|---|---|---|
input | Primitives or Geometries | — | Shape (Crc) to resample or Geometry to decimate |
mode | String | "Count" | Count: fixed target, Length: fixed spacing, Adaptive: curvature-based. One of: Count, Length, Adaptive. |
count | Number | 32 | Target anchor count per path |
length | Number | 10 | Arc-length spacing between anchors |
min_length | Number | 2 | Minimum distance between anchors in high-curvature areas |
max_length | Number | 20 | Maximum distance between anchors in straight sections |
curvature_scale | Number | 1 | How strongly curvature affects anchor density (higher = more anchors at curves) |
corners_only | Boolean | false | Zero the bezier handles on every output anchor — produces a polyline (no curve fitting) |
ratio | Number | 0.500 | Fraction of triangles to keep (0.1 = 10%, 0.5 = 50%) |
preserve_boundaries | Boolean | true | Prevent collapsing edges on mesh borders — preserves silhouette of open meshes |
preserve_seams | Boolean | true | Prevent collapsing across normal discontinuities and UV seams |
max_normal_deviation | Number | 45 | Reject collapses that would change face normals by more than this angle |
strength | Number | 1 | Effect strength / wet-dry (0 = no effect, 1 = full). Editable, wirable, keyframable. |
Gotchas
On mesh decimation the strongest lever today is Max Normal Deviation, which caps how far a collapse may change a face's normal and is what keeps the silhouette from collapsing along with the geometry. Ratio, Preserve Boundaries, and Preserve Seams are present for finer control but are not yet fully wired into the decimator, so do not rely on them to protect specific edges.
Resample reads what is connected to Input, not the Mode dropdown, to decide between redistributing shape anchors and decimating a mesh. Mode, Count, Length, and the Adaptive controls only apply, and only appear, when a shape is connected.
Polyline Output zeroes the curve handles on every anchor, turning a smooth bezier shape into hard straight segments: a faceted, low-poly look, or preparation for an operation that expects straight edges.
Worked example
Add a Resample and wire a traced or imported shape into Input.
Leave Mode on Count and set it to the exact number of anchors you need. 32 is a good starting point for a smooth curve.
Switch to Adaptive if the shape has both tight curves and long straight runs, and raise Curvature Scale until the curves hold their shape.
Enable Polyline Output for hard corners instead of smooth curves.
To decimate a mesh instead, wire a Geometry output into Input and lower Ratio to keep only the fraction of triangles you need.