Nodes/ComfyUI-WanAnimatePreprocess/Pose Detection OneToAll Animation
ComfyUI Node

Pose Detection OneToAll Animation

Retarget a dancer's motion onto a cartoon character's proportions

By kijai·Created 11 months ago·Updated 3 months ago· 545
Pose Detection OneToAll Animation
  • model
  • images
  • ref_image
  • pose_images
  • ref_pose_image
  • ref_image
  • ref_mask
width832
height480
align_toref
draw_face_pointsfull
draw_headfull

This is the pack's specialist node, and it solves the problem the base Wan Animate workflow quietly has: Wan Animate stretches your reference character to match the driving skeleton's proportions. If your dancer is 1.8m and your reference is a chibi cartoon, the cartoon comes out... stretched. Pose Detection OneToAll Animation exists for that - it's the preprocessing half of One-to-All-Animation, ssj9596's 14B motion-transfer model that kijai integrated into WanVideoWrapper in December 2025.

Community shorthand for it is "skeletal adaptive binding": the skeleton from your driving video gets aligned to your reference character, so a small or differently-proportioned character moves like the dancer without morphing into the dancer's dimensions. The whole point, as someone put it in the r/comfyui thread that introduced the node: "the skeleton proportion will/can align to the reference image (say, if it is a smaller cartoon character)."

How it works

Same detection backbone as Pose and Face Detection - YOLO finds the person, ViTPose extracts whole-body keypoints - then it converts those into the DWPose-style format the One-to-All model expects, and does the alignment. What "alignment" means depends on align_to:

  • ref (default) - retargets the driving skeleton onto the reference character's bone proportions, limb by limb, and keeps your reference image untouched. This is the mode that gives you the cartoon-proportion magic.
  • pose - the other direction: it warps the reference image onto the first template pose via an affine transform, so your character literally reshapes into the dancer's stance.
  • none - skips alignment, just draws the reference pose. Useful for direct pose transfer.

There are also two draw options worth knowing: draw_face_points and draw_head, each full / weak / none. The One-to-All authors themselves suggest lighter facial landmarks for better identity consistency, and weak/none are the dials for that.

Inputs and outputs

Required: model (from the loader), images, width/height (generation size, step 2), plus the three enums above. Optional: ref_image - the reference character (one image; it's ref_image[0] that gets used).

Outputs, all IMAGE except one:

  • pose_images - the aligned pose frames, ready for the model.
  • ref_pose_image - the reference character's own skeleton, drawn at target size.
  • ref_image - the reference image, warped to the template pose when align_to = "pose".
  • ref_mask (MASK) - a mask of the warped reference, for feeding the model the character area.

In practice you run this into the One-to-All loader/sampler in kijai's WanVideoWrapper, using the bundled Wan21_OneToAllAnimation_example_01.json workflow as your starting point.

Real-world gotchas (there are several)

The giant hands/shoulders bug. The most-reported issue with align_to = "ref" is the output having oversized hands and shoulders that ignore reference proportions. It happened to enough people that the workarounds are now standard advice: keep the reference image and driving video at the same resolution (people specifically suggest 480×832), and make sure the character in your video is roughly facing the same direction as the reference. If the dancer is in profile and the reference faces forward, the retarget anchors badly.

It's paired with a specific model. This node is tuned for One-to-All-Animation. If you feed its output into plain Wan Animate you may get worse results than the normal Pose and Face DetectionDraw ViT Pose path, because the two pipelines expect different conditioning. Pick your model first, then your preprocess pack.

Resolution consistency again. The align modes are sensitive to mismatched input sizes - same rule as above: ref and video, same dimensions.

If you're just doing straight motion transfer with no reference character, this node is overkill. Use the base pack path. But the moment "the character has the wrong proportions" is your complaint, this is the node.

CategoryWanAnimatePreprocess

Inputs (8)

NameTypeDefaultDescription
modelPOSEMODEL
imagesIMAGE
widthINT83264–2048Width of the generation
heightINT48064–2048Height of the generation
align_toCOMBOrefAlignment mode for poses
draw_face_pointsCOMBOfullWhether to draw face keypoints on the pose images
draw_headCOMBOfullWhether to draw head keypoints on the pose images
ref_imageoptIMAGEOptional reference image for pose retargeting

Outputs (4)

NameTypeDescription
pose_imagesIMAGE
ref_pose_imageIMAGE
ref_imageIMAGE
ref_maskMASK