Editable Shape
A freeform bezier shape with two modes — Draw (pen-tool authoring) and Edit (apply per-vertex deltas to an upstream parametric shape). The same node covers "draw from scratch," "trace a reference," and "tweak this preset" workflows.
Category: Shapes Menu path: Shapes > EditableShape
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
shape_in (Source) | shape | input | Optional source shape. In Draw mode, used as a tracing reference (rendered as a dimmed outline in the viewport, output unchanged). In Edit mode, becomes the live base — output = upstream + per-PointId deltas applied each frame. |
out (Shape) | shape | output | Shape data — either pen-authored (Draw) or upstream-edited (Edit) |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
mode | enum | Draw | Draw (pen-authored path is authoritative) or Edit (apply deltas to shape_in) |
path | path | (empty) | Multi-sub-path bezier data — edited via the pen tool, used as output in Draw mode. Keyframeable (each keyframe = a full snapshot of the points at that frame). |
edits | shapeEdits | (empty) | Per-PointId position deltas applied in Edit mode. Internal state — interact via the viewport gizmo or the Input Shape section in Properties. Keyframeable (each keyframe = a snapshot of the delta map). |
closed | enum | Auto | Auto defers to the per-sub-path closed state from the pen tool. Open and Closed force a single state across all sub-paths. |
reverse | boolean | false | Reverses the winding direction of the path |
Input Shape Section (Properties panel)
When the node has an shape_in connection (or has any state to show), Properties surfaces an Input Shape section with mode-dependent action rows:
- Source — name and shape stats of the upstream node, or
(none — connect a shape to source)if nothing is wired. - Path (Draw mode) —
Import/Appendbutton: copies the upstream geometry into this node'spathas additional sub-paths (or as the first sub-path ifpathis empty). Whenpathis keyframed, Append atomically writes a new path keyframe at the playhead so the merged result is visible at the current frame. The badge to the right showsN kfsand turns amber when the playhead is on a path keyframe. - Edits (Edit mode) —
Capture/ReplaceandClearbuttons. Capture snapshots the current delta map as a keyframe at the playhead. Clear discards all deltas and keyframes, reverting to pristine upstream. Badge showsN deltas · N kfs.
The two keyframe systems (Path = literal coords per frame, Edits = delta map per frame) are independent. They surface their own counts next to the actions that operate on them so it's obvious which one a given button affects.
How It Works
Draw mode (default)
The path parameter holds the full bezier data (sub-paths, control points, tangent handles) and is populated by the pen tool. The shape_in upstream, if connected, is purely a visual reference — output always comes from path.
Edit mode
Output is always upstream + edits. The edits param stores per-PointId deltas that re-apply on top of the live upstream every frame — change the upstream's params (radius, sides, etc.) and your tweaks follow naturally. Topology is locked to upstream: drag vertices to tweak; can't add or delete them. Each delta is keyed by the upstream's stable PointId.
Animating edits
The edits param is keyframeable. To animate:
- Drag vertices at frame 0. Click Capture — saves the current edits as a keyframe at frame 0.
- Scrub to frame 30. Drag vertices again — autoKey adds a second keyframe at this frame.
- Animation plays back: the deltas interpolate over time, and the upstream still drives the underlying shape (animated upstream + animated deltas compose).
A delta only present at one keyframe fades to zero at the other — useful for "this point was tweaked at frame 10 only, returns to upstream elsewhere." Click Clear to discard all deltas and keyframes.
Animating the path itself
The path param can be keyframed too (via the keyframe diamond next to Path in Properties). Each keyframe is a full snapshot of the bezier points at that frame. Drawing or appending while keyframed automatically writes to the keyframe at the playhead, so changes are visible immediately.
Auto-mode on connect
Connecting a shape to shape_in while the node is still in default Draw mode (and has no edits yet) automatically switches the mode to Edit. Once you've manually picked a mode or added an edit, the auto-switch is suppressed.
Anchor space default
When the pen tool creates a new EditableShape layer, the auto-wired Transform2D defaults to anchorSpace = Comp (instead of the usual Content). Pen-drawn points are literal local-space coordinates, so Content-mode's "pivot = AABB center" would shift the shape under the cursor as new points get added. Comp mode pins the pivot to a fixed comp point so the drawing stays glued to where the user clicks.
Usage Examples
Basic: Draw a custom shape
Press G to activate the pen tool. Click to place corner points, click-and-drag to create curves. Press Enter or click the first point to close the path.
Continue editing
Select the layer, press G again to re-enter the pen tool on the existing EditableShape. Add points or start a new sub-path.
Tweak a preset shape (Edit mode)
QuickShape (Heart) → EditableShape (shape_in) → DrawShape. Connecting auto-switches to Edit mode. Press E to enter viewport Edit mode, then drag the bottom vertex down to make the heart pointier. The upstream Heart is unchanged — your delta is stored in edits and re-applied every frame.
Animate a hand-tweaked shape
Same setup as above. Make your edits at frame 0, click Capture. Scrub to frame 30, drag the vertices — autoKey writes a keyframe automatically. Press play; the deltas morph between poses while the upstream still drives the base shape. Animate the upstream too — both layers of animation compose.
Complex outlines
Draw multiple sub-paths for shapes with holes (e.g., the letter "O" — outer circle and inner circle as separate sub-paths). DrawShape uses the fill rule to determine inside/outside.
Hand-edit a boolean result
Circle → ShapeBoolean ← Circle → EditableShape → DrawShape. Auto-switches to Edit mode. Drag boolean intersection vertices to adjust them — they're now movable handles.
Trace a reference (Draw mode + reference outline)
Connect a shape to shape_in and explicitly switch to Draw mode. The upstream renders as a dimmed reference outline; pen-tool clicks build a new path on top.
Append a primitive into a hand-drawn path
In Draw mode with path already populated, connect a Rectangle to shape_in and click Append. The rectangle's geometry is added as a new sub-path alongside what you've drawn. If path is keyframed, the append also creates a path keyframe at the current frame.
Tips
- G activates the pen tool. The pen is disabled on Edit-mode shapes (topology is locked) — switch to Draw mode first or create a new EditableShape.
- E enters viewport Edit mode (gizmo with vertex handles). In Edit mode, only vertex drag is supported — bezier handle drag and vertex add/delete are locked.
- Import to Path (Draw mode, with upstream connected): one-click "snapshot upstream + clear edits + stay in Draw." Use when you want a static, fully-editable copy disconnected from the upstream.
- Edits are stable across frames as long as upstream topology doesn't change. Changing a parametric shape's topology (e.g. Polygon
sidesfrom 5 → 6, ShapeBoolean re-sub-pathing) silently drops affected deltas. Consider Capture before changing. - Use the
closedparam'sAutoto defer to per-sub-path closed state from the pen tool;Open/Closedforce one state across all sub-paths. - Shapes are centered at the local origin. The auto-wired Transform2D handles positioning in the composition.
- For simple primitives, the dedicated geometry nodes (Rectangle, Circle, Polygon) are easier to adjust parametrically.
Related Nodes
- Rectangle, Circle, Polygon — parametric shape primitives
- Line — simple two-point line segment
- ShapeDeform — procedural per-vertex deformation (continuous, not user-driven)
- ResampleShape — resamples curves into evenly spaced points
- Transform2D — positions and scales the shape in the composition
- DrawShape — rasterizes shapes to pixels with fill/stroke