Nodes/2D Character pose transform/Warp To Pose + Skeleton Blend
ComfyUI Node

Warp To Pose + Skeleton Blend

The Node the README Tells You Not to Turn On

By Spit8·Created 2 months ago·Updated 2 months ago· 1
Warp To Pose + Skeleton Blend
  • image
  • source_pose
  • target_pose
  • guided
  • skeleton
  • image_clean
  • aligned_target_pose
methodnone
smoothing4.0
warp_strength0.00
max_displace_ratio0.20
align_to_sourcetrue
include_limb_midsfalse
skeleton_blend0.70
blend_modeoverlay
stick_grow2

Here's the counterintuitive thing about CP_WarpToPose: its headline feature - geometrically warping your sprite's pixels into a new pose - is the thing the pack's own README warns you away from. The author's framing is blunt: geometric warp "melts cartoon sprites" and "cannot invent limbs or camera angles; it only remaps pixels." So the default configuration is method=none with a skeleton blended over the untouched sprite. The node's real job is alignment plus soft pose guidance, and it does that very well.

How it works

It takes your sprite and two poses (source, target), scales the target to match your image, and - if align_to_source is on (default) - uniformly scales and translates the target pose so the character's size matches your sprite's. Then it decides what to do:

  • method = none (default) - pixels stay put. It draws the target skeleton and blends it over the sprite at skeleton_blend (0.70). The sprite is untouched; the sticks are a pose hint. This is the recommended path, feeding the guided image into CP_CharacterRepair.
  • method = piecewise_affine - a Delaunay triangulation of the body warps each local triangle toward the target. Local, and the pack's preferred geometric option.
  • method = tps - global thin-plate spline. The source comments name the failure mode: on side-view skeletons the near-collinear keypoints make it unstable, and it "melts sprites into multi-head smears." TPS is legacy; the README says keep method=none.

warp_strength (default 0) is the throttle on the geometric warp, and max_displace_ratio (0.20) clamps how far keypoints are allowed to move so a bad pose can't scramble your character.

The inputs that matter

  • image, source_pose, target_pose - the three essentials.
  • method - none / piecewise_affine / tps.
  • skeleton_blend - stick overlay opacity (0.70).
  • blend_mode - overlay (recommended), soft, or mix (washes the sprite; debug only).
  • stick_grow - dilates the sticks so they read as a pose hint (default 2).
  • include_limb_mids - adds limb midpoints as extra warp control points; only matters if you're actually warping.

Outputs: guided (sprite + skeleton blend), skeleton (clean sticks for ControlNet), image_clean (the warped image with no overlay), and aligned_target_pose (the scaled/translated target pose - save it with CP_SavePose if you like what you see).

Installing

Same pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Spit8/_ComfyUI_CharacterPose
pip install -r _ComfyUI_CharacterPose/requirements.txt

Restart ComfyUI; it's under CharacterPose/Warp. No models required.

Gotchas

  • Turn the warp on only if you truly want pixels remapped - and even then, expect to run the result through CP_CharacterRepair, because a piecewise-affine warp leaves artifacts. The README's workflow file for it is explicit: keep method=none.
  • Side-view sprites are the trap. A ¾ or side-view skeleton has keypoints that nearly line up, which is exactly the geometry that breaks global TPS.
  • mix blend mode looks like a mistake when you try it. It is, by design - the source calls it debug-only.

The honest summary: this is the pack's most featureful node and its most dangerous one. Use it for alignment + the blended guide, treat the geometric warp as a curiosity, and run the output through Repair. That's the path that actually works.

CategoryCharacterPose/Warp

Inputs (12)

NameTypeDefaultDescription
imageIMAGE
source_posePOSE
target_posePOSE
methodCOMBOnone3 options: none, piecewise_affine, tps
smoothingFLOAT4.00–50
warp_strengthFLOAT0.000–1
max_displace_ratioFLOAT0.200.05–2
align_to_sourceCOMBOtrue2 options: true, false
include_limb_midsCOMBOfalse2 options: true, false
skeleton_blendFLOAT0.700–1
blend_modeCOMBOoverlay3 options: overlay, soft, mix
stick_growINT20–12

Outputs (4)

NameTypeDescription
guidedIMAGE
skeletonIMAGE
image_cleanIMAGE
aligned_target_posePOSE