WanViTPoseRetargeter
Stop Wan Animate from mangling your character's proportions
- images
- ref_image
- cond_images
Ever driven a Wan 2.2 Animate character with a real video and watched it come out wrong? Not wrong like "the face drifted" - wrong like the whole body is stretched or squashed into a shape it shouldn't be. That's the problem this node exists to fix. Wan Animate takes the pose from your driving video and makes your reference character fit it, which works fine when both people share similar proportions and quietly wrecks the output when they don't - an anime character inheriting a real person's torso length looks like a bad photocopy.
This pack is a ComfyUI port of the pose-retargeting step that ships inside Wan2.2-Animate. The red-polo author extracted it, and the README is upfront that it's an early release - behavior can change, and it's meant to be used alongside Kijai's ComfyUI-WanVideoWrapper, which is where the actual Animate sampling happens.
What it actually does
Under the hood it's a two-model pipeline, both ONNX files you download from Alibaba's Wan-AI/Wan2.2-Animate-14B repo:
- YOLOv10m detects the person in each frame.
- ViTPose wholebody estimates a full skeleton with hands and face.
Then the retargeting step does the interesting part. It measures the bone lengths of the person in your driving video and the person in your reference image, computes the ratio between them per bone, and rebuilds the driving skeleton with the reference person's proportions - keeping every joint angle the same. Angles stay, lengths change. That's the whole trick, and it's why the motion transfers while the proportions stay yours.
The output is a sequence of stick-figure images on a black canvas, drawn in exactly the format Wan2.2-Animate's conditioning expects. That's what cond_images is: your control signal.
Inputs and outputs
Just two inputs, which is refreshing:
images- the driving video frames (the person whose motion you want).ref_image- the reference character (the person whose look you want).
One output:
cond_images- a batch of pose-conditioning images, wired into the WanVideoWrapper Animate pipeline (you'll see it feedingWanVideoAnimateEmbeds/ the sampler in the sample workflow).
Install
Via ComfyUI Manager (search "ComfyUI-WanViTPoseRetargeter"), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/red-polo/ComfyUI-WanViTPoseRetargeter.git
python -m pip install -r requirements.txt
The only pip dependency is onnxruntime. Restart ComfyUI. Then the part people skip: the models. They are not bundled. Download both from Wan-AI/Wan2.2-Animate-14B on HuggingFace and drop them into the pack's models folder:
yolo10m.onnx→models/det/vitposeh_wholebody.onnx→models/pose2d/
The folder already has Japanese placeholder files telling you exactly where each one goes.
Gotchas
- Missing model files are the #1 failure. You'll get a
RuntimeError: ... is not existed!straight from the code - the node checks the paths and dies cleanly, so read the error. - No person, no output. If the driving clip or the ref image has no detectable person, pose estimation silently fails and your conditioning comes out empty. Keep the subject roughly full-body and reasonably well lit.
- It's a pre-release node. The author says unexpected behavior is possible and specs may change. If a workflow breaks after an update, that's the cause.
- CPU fallback exists - onnxruntime falls back to CPU if there's no CUDA, so it still runs, just slower.
If you want the other direction - replacing the video's character with your reference while keeping the reference's own proportions and dialing it in by hand - that's the sibling node, WanViTPoseRetargeterToSrc.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Input image for pose detection | |
| ref_image | IMAGE | Input reference image |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| cond_images | IMAGE | — |