Shape Smooth
Softens a shape by averaging each point's position toward the midpoint of its two path-neighbors. Useful for organic softening of rough shapes from ShapeBoolean, ContourExtract, or hand-drawn EditableShape paths.
Category: Shape Ops Menu path: Shape Ops > ShapeSmooth
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
shape_in | shape | input | Shape to smooth |
out | shape | output | Smoothed shape |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
amount | scalar | 0.3 | Per-iteration interpolation toward neighbor midpoint. 0 = no change, 1 = snap to midpoint. Values above ~0.5 can collapse shapes rapidly — useful range is 0.1–0.5 |
iterations | scalar | 3 | Number of smoothing passes. Each pass applies amount once. Clamped to 50. More iterations = more organic softening at the cost of shape shrink |
Expose Channels
When enabled (E button on node header), adds input ports that override params via edge connections:
| Port | Type | Overrides |
|---|---|---|
amount_in | scalar | amount |
Useful for driving the smoothing strength from a Time ramp (animated softening), a Math expression, or any other scalar source.
How It Works
Laplacian smoothing: each iteration replaces every anchor point's position with a linear interpolation between its current position and the average of its two path-neighbors.
- Closed paths: the first and last points wrap — each point has exactly two neighbors.
- Open paths: endpoints are pinned (they only have one neighbor, which would bias smoothing toward it). Interior points smooth normally.
Bezier control points shift by the same displacement as their owning anchor, so curve shape is locally preserved — smoothing softens the path envelope without distorting individual bezier segments.
Point IDs and attributes are preserved — smoothing is position-only.
Usage Examples
Clean up jagged boolean output
Heart → ShapeBoolean ← Circle → ShapeSmooth → DrawShape. The sharp intersection corners soften into gentle bumps.
Organic softening of a polygon
Polygon (sides: 6) → ShapeSmooth (amount: 0.3, iterations: 5) → DrawShape. Hexagon → blobby hexagon.
Smoothing a hand-drawn path
EditableShape → ShapeSmooth (amount: 0.2, iterations: 2) → DrawShape. Removes small jitters while preserving overall form.
Stack with RoundCorners
QuickShape (Star) → ShapeSmooth (light) → RoundCorners → DrawShape. Smooth subtly first, then apply explicit corner rounding — the slight smoothing pre-pass softens the interior while RoundCorners gives clean arcs.
Keyframe for reveal
Keyframe iterations from 0 to 10 over a few seconds — the shape progressively melts into a smoother form.
Tips
- Shrink is expected. Repeated smoothing pulls convex corners inward. For a square, amount=1.0 iter=1 collapses the whole shape to its center. Keep amount modest (0.2–0.4) and use iterations for the smoothing "dose."
- Amount vs iterations. Two half-steps ≠ one full step — smoothing compounds non-linearly. Getting the same softness via
iterations=2vsiterations=10gives different envelope behavior, especially on shapes with sharp corners. - For EDIT workflows, chain
ShapeSmooth → ResampleShape → ShapeSmoothto redistribute points between smoothing passes — helps when source paths have uneven spacing. - Downstream
RoundCornerswon't fire on a heavily-smoothed shape because explicit corners have been blended away. Apply RoundCorners BEFORE ShapeSmooth if you want both. - Smoothing does NOT change point count — if you need fewer points, follow with ResampleShape or simplify upstream.
Limitations
- No "preserve volume" mode yet — convex shapes shrink slightly each pass. Add a Transform2D with scale > 1 downstream to compensate if needed.
- Open path endpoints stay pinned. Deliberate — keeps line/stroke endpoints anchored. If you want endpoints to smooth too, close the path upstream.
- Shared vertices (one point referenced by multiple paths) smooth across ALL incident neighbors. Unusual configuration but defined.
Related Nodes
- RoundCorners — explicit circular-arc rounding at sharp corners. Good for exact control.
- OffsetPath — pair with negative distance to counteract smoothing shrink.
- ResampleShape — redistribute points along arc length after smoothing.
- ShapeBoolean — common upstream source; the boolean output often benefits from a pass of ShapeSmooth.