Skip to content

Puppet Warp

Puppet Warp
Transform

Deform an image with draggable pins on a generated mesh.

The Puppet Warp node applied to a source image — original (left) and result (right).
Side-by-side comparison: the original image on the left and the same image after the Puppet Warp node on the right.

Puppet Warp poses and bends artwork by placing pins on an automatically generated mesh and dragging them. The pins you hold still act as anchors, and the image deforms as rigidly as possible around them, so a sprite bends, a drawn limb reposes, or a silhouette curves while the rest of the shape keeps its natural proportions. Where Mesh Warp gives you a coarse grid for broad, global warps, Puppet Warp is built for posing: pin a character’s feet and move a hand, and only the parts that should move do.

Connect an image and Puppet Warp builds a triangular mesh over the opaque coverage of that image. Three controls shape that mesh, and all three are capture-time settings: change them, then use Generate (or Regenerate) to rebuild the mesh from the current source.

  • Mesh Spacing sets how dense the mesh is. Finer spacing follows detail more closely at the cost of a heavier solve.
  • Expansion grows the covered area outward before the mesh is built, so deformation has a little room beyond the artwork’s own edge.
  • Alpha Cutoff decides how opaque a pixel must be to count as coverage, which keeps soft or feathered edges from pulling the mesh out past the visible shape.

Because the mesh is frozen at capture, changing Mesh Spacing, Expansion, or Alpha Cutoff does nothing to the output until you regenerate. Your pins survive a regeneration: they are stored independently of mesh density and rebind to the new mesh automatically.

With the Puppet Warp tool armed in Deform mode, click in the preview to drop a pin, then drag it to pose the image. Alt+Click or right-click a pin to remove it. The Parameters panel lists every pin, so you can select one and read or type its target position exactly.

  • Pose Strength scales every pin’s offset at once. 0 returns to the rest pose, 1 is the pose you authored, values up to 2 overshoot it, and negative values push toward the inverse. It reuses the prepared mesh, so it is cheap to scrub and safe to ramp across a batch.
  • Smoothing spreads each pin’s influence more evenly across the mesh for softer, rounder bends instead of tight local pulls.
  • Rest mode lets you reposition an anchor’s home location, where it holds the image still, without disturbing the pose you have already dialed in. Switch back to Deform to keep posing.
  • Show Mesh toggles the mesh overlay in the preview so you can pose against a clean image once you are happy with it.

Across a batch, one mesh is built and the same pose is applied to every frame, so a set of asset variants stays consistent.

Pins

ImagePixels
InputRequired
ImagePixels
Output

Mesh

Mesh SnapshotData
Default: {}

Frozen rest-domain capture used to generate the deformation mesh

Mesh SpacingNumber · px/%
Default: 5.0 Range: 4.0–256.0 px / 0–100%

Reference-space spacing used when the frozen mesh is generated

ExpansionInteger
Default: 3 Range: 0–64

Expand the frozen coverage domain before mesh generation

Alpha CutoffNumber
Default: 0.0000 Range: 0.0000–1.0000

Alpha threshold used only by the next mesh generation

Pins

PinsData
Default: {"items":[],"next_id":1,"version":1}

Committed rest anchors and deformation targets

Output

SamplingChoice
Default: Bilinear

Pixel sampling method for the authoritative deformation

  • NearestNo interpolation, so hard pixel edges are preserved. Best for pixel art.
  • BilinearSmooth blending between pixels, with good general-purpose quality.

Deform

Pose StrengthNumber
Default: 1.00 Range: -1.00–2.00

Scale pin offsets without changing the prepared mesh

SmoothingNumber
Default: 0.00 Range: 0.00–1.00

Distribute deformation more evenly across the mesh

Display

Show MeshToggle
Default: true

Display the deformation mesh in the preview panel

  • Start with the default mesh, place your anchor pins on the parts that should stay put, then add the pins you want to move. Fewer, well-placed pins usually pose more cleanly than many.
  • If a bend creases or tears, add Smoothing or drop an extra anchor pin nearby to give the solve more to hold onto.
  • Only change Mesh Spacing, Expansion, or Alpha Cutoff when the coverage itself is wrong, and remember to Regenerate afterward. For posing alone you never need to touch them.
  • Use Pose Strength as a single dial to preview a pose at half strength, back it off, or push past it without moving any pins by hand.
  • Use Nearest sampling to keep hard pixel-art edges crisp; leave it on Bilinear for smooth, photographic content.