Shape Morph
Interpolates ("morphs") between two or more input shapes, driven by a single keyframeable
mixvalue.
Category: Shape Ops Menu path: Shape Ops > Shape Morph
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
shapes_in | shape | input (multi) | Two or more shapes to morph between. Connect them in order — the morph sequence follows the vertical edge fan on the port (top edge = first). |
out | shape | output | The morphed shape at the current mix. |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
mix | scalar | 0 | Position along the input chain. 0 = first shape, 1 = second, 2 = third, … Fractional values blend the two bracketing shapes (e.g. 1.5 = halfway between the 2nd and 3rd input). Clamped to [0, n-1]. Keyframe this to animate the morph. |
points | scalar | 64 | Resample resolution per path. Each input is resampled to this many evenly-spaced points before interpolating. Higher = smoother morph (and slightly more cost); lower = chunkier. |
autoAlign | boolean | true | Matches winding direction and picks the lowest-travel start offset for each pair, so the shape deforms in place instead of swirling/folding through itself. Leave on for clean morphs; turn off if you want the spin/rotation it removes. |
offset | scalar | 0 | Extra manual rotation of the vertex correspondence on the next shape of each pair (0–1, wraps), added on top of Auto Align. Nudge it to fine-tune, or (with Auto Align off) to dial in a deliberate spin. |
How It Works
There's no vertex correspondence to set up by hand: each input shape is resampled to a common point count (points) at uniform arc-length, then the matching points are linearly interpolated by mix. For three or more inputs, mix picks the bracketing pair (floor(mix) and the next) and blends within it, so a single value sweeps the whole chain.
The naive mapping — point i of A to point i of B — only looks good when the two outlines happen to start at the same place and wind the same way; otherwise vertices take long crossing paths and the shape appears to swirl through itself. Auto Align fixes this: for each pair it flips the second shape's winding to match the first, then searches all cyclic start offsets for the one that minimizes total vertex travel (centroid-relative), so corresponding points are as close as possible and the morph deforms in place.
Shapes morph path-for-path by index, so single-path shapes (polygon, circle, star, blob) "just work." Multi-path shapes morph their paths up to the shared count.
Usage Examples
Basic: Morph between three shapes
Wire Polygon, Circle, and Star into one ShapeMorph (in that order), then ShapeMorph → DrawShape → Output. Keyframe mix: 0 at frame 0, 1 at frame 30, 2 at frame 60. The polygon flows into the circle, then into the star.
Creative: Driven morph
Expose-free driving: connect a Time (or any scalar) through to mix via a keyframe curve with hold/ease so the shape "pops" between forms, or pingpong mix 0 → 2 → 0 for a looping cycle.
Tips
- If the morph swirls or folds through itself, make sure Auto Align is on — it's the fix for exactly that (winding + start-point mismatch). If a particular pair still isn't ideal, nudge
offsetto slide the correspondence. - Connection order = morph order. Re-drag the edges if
0/1/2aren't the shapes you expect (the fan order on the port is the sequence). pointsis the smoothness knob. 64 is a good default; bump it for large/curvy shapes, drop it for a deliberately faceted look.- Inputs don't need matching vertex counts — that's the whole point. Resampling handles it, so you can morph a 3-point triangle into a 200-point blob.
Related Nodes
- ResampleShape — the arc-length resampler Shape Morph uses internally; reach for it directly if you only need to normalize one shape's point count.
- MergeShapes — combines shapes as separate paths (no interpolation), using the same multi-input port pattern.
- EditableShape — for hand-authored path keyframing (drag the same points between poses) when you want full manual control of a morph.