Nodes · Transform
SplineWarp
Transformv1coreNeeds full input
Overview
Draw a curve on a feature and the curve where that feature should end up; every pixel between follows. The controls are the same moving-least-squares pins PinWarp uses, sampled along both curves at matching arc length, so a stretched curve still matches its partner.
How to
- Select the node and <kbd>Ctrl</kbd>+click in the viewer to add points (<kbd>Ctrl</kbd>+<kbd>Shift</kbd> starts a new spline).
- Drag the solid dots to warp; drag the rings to re-anchor what moves.
- <kbd>Alt</kbd>+click a destination point to remove that correspondence.
Inputs
| Input | What it takes |
|---|---|
| in | the image this node works on |
Outputs
| Output | Type |
|---|---|
| out | Image |
Parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
| src_splines | Text | The source correspondence splines, as the node stores them. | |
| dst_splines | Text | The destination splines — where each source spline should land. | |
| samples | Int | 24 | Points sampled along each spline pair. More follows the curve more closely. |
| pin_border | Bool | true | Hold the frame edges still, so the warp never drags the border in. |
| mix | Float | 1.0 | Dissolves the effect back toward the input. 0 = off (bit-identical), 1 = full effect. |
| disabled | Bool | false | Bypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back. |
| label | Text | A note shown under the node in the graph — what this node is FOR. Never affects the render or the cache. | |
| hide_input | Bool | false | Draw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap). |
Known edges
pin_border pins the input's own frame edge to itself; without it one curve in the middle of frame drags the whole plate after it. Spline sets that do not pair one to one warp nothing and say why.
Since
27 Aug 2026