Nodes/2D Character pose transform/Blend Skeleton Onto Image
ComfyUI Node

Blend Skeleton Onto Image

The Cheapest Pose Guidance You'll Ever Use

By Spit8·Created 2 months ago·Updated 2 months ago· 1
Blend Skeleton Onto Image
  • image
  • skeleton
  • guided
opacity0.70
modeoverlay
stick_grow2

Take your sprite, draw the target pose's OpenPose sticks over it at partial opacity, and feed the result to an edit model. That's the entire trick, and it's surprisingly effective: the model can see where the arms and legs are supposed to go without you warping a single pixel of your character.

CP_BlendSkeleton is the standalone version of that overlay, lifted out of CP_WarpToPose for when you already have the pieces. It's the soft-pose-guidance workhorse that keeps the pack's recommended pipeline from melting your art.

How it works

The node takes your sprite and a skeleton image, then composites them: it masks the lit stick/joint pixels from the skeleton (the OpenPose canvas is black everywhere else) and lerps those pixels toward the sticks by opacity. The rest of the sprite is untouched. Optional stick_grow dilates the stick mask with an elliptical kernel first, so the overlay reads as a pose hint rather than a thin wireframe.

Three blend modes:

  • overlay (default) - lerp only where the sticks are lit. This is the one to use.
  • soft - adds a Gaussian blur to the stick mask for gentler edges.
  • mix - whole-frame lerp that washes the sprite out. The source code calls it "debug only," and it's right.

The inputs that matter

  • image - your sprite.
  • skeleton - an IMAGE of OpenPose sticks. Grab it from CP_ApplyPose, CP_GenerateRPGSheet, or CP_WarpToPose's skeleton output.
  • opacity - default 0.70. Below ~0.5 the pose hint gets too faint to guide anything; above ~0.9 you're mostly looking at sticks.
  • stick_grow - default 2. Bump it if the sticks vanish under a busy sprite.

The single output, guided, is what you feed into CP_CharacterRepair (the img2img cleanup pass) or any edit model that reads an image plus a prompt. This is exactly the "method=none + skeleton_blend" path the README points at: no geometric warp, just a pose cue on top of pixels that stay yours.

Installing

Same story as every node in this pack - it's one repo, Spit8/_ComfyUI_CharacterPose:

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

Restart ComfyUI. (Or Manager → search _ComfyUI_CharacterPose → Install.) It lands under CharacterPose/Warp.

Gotchas

  • The skeleton image must roughly match the sprite's canvas size, or the sticks land in the wrong place. The node resizes the skeleton to the image's dimensions if they differ, but a squashed skeleton is still a squashed skeleton - render your sticks at the right size upstream.
  • If opacity is effectively zero the node short-circuits and returns the image untouched. Good default, easy to trip over if you meant 0.05 and hit 0.

Don't overthink this one. Sprite in, sticks blended on, repair node downstream. It's the least destructive way to tell a model "put the arms here."

CategoryCharacterPose/Warp

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
skeletonIMAGE
opacityFLOAT0.700–1
modeCOMBOoverlay3 options: overlay, soft, mix
stick_growINT20–12

Outputs (1)

NameTypeDescription
guidedIMAGE