WanVideo UniAnimate Pose Input
Pose-drive a Wan character with UniAnimate
- pose_images
- reference_pose_image
- unianimate_poses
UniAnimate is pose-driven human animation for Wan - you supply a sequence of pose images (a skeleton/keypoint video) and it makes your character move that way. This is the classic "dance video" control loop: extract poses from a reference clip, feed them in, and your generated subject performs the same motion. This node is where those pose images enter the WanVideoWrapper pipeline as UniAnimate conditioning.
It sits in the same family as VACE and Wan Animate for motion transfer. Pose-based control is the well-trodden path - the tradeoff versus newer skeleton-free approaches (like SCAIL-2) is that reducing motion to a stick figure throws away depth and contact information, but pose control is mature, predictable, and easy to author with standard pose preprocessors.
How it works
You feed it a stack of pose images - one per frame, typically OpenPose/DWPose-style skeletons or the poses this pack's NLF nodes render. The node packages them (at the strength and time window you set) into a UNIANIMATE_POSE conditioning object the Wan sampler consumes, so the model drives the subject's body to match the pose sequence. An optional reference pose image helps align the driving poses to your subject's starting pose.
The inputs that matter
pose_images(IMAGE, required) - the per-frame pose sequence driving the motion. This is the core input; its length and quality set the animation.strength(FLOAT, default 1) - how strongly the poses constrain the generation.1follows tightly; lower it if the pose control is fighting appearance or looking stiff.start_percent/end_percent(0 to 1, default full) - the slice of sampling where pose conditioning applies. Pullingstart_percentlater lets composition establish before the pose locks in.reference_pose_image(IMAGE, optional) - a reference pose to align the driving sequence to your subject, which helps when the driving actor's build/framing differs from your character.
The output is unianimate_poses (UNIANIMATE_POSE) → into the Wan embeds/sampler path.
How to install it
ComfyUI Manager: search ComfyUI-WanVideoWrapper, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
then restart. You'll also need whatever produces the pose images - a pose preprocessor (DWPose/OpenPose via a controlnet-aux pack, or this pack's own NLF pose nodes) - plus the UniAnimate-capable Wan setup.
Common issues & troubleshooting
Character ignores the pose or moves stiffly. Adjust strength. Too low and the model does its own thing; too high and motion looks robotic and appearance suffers. Also make sure your pose images are clean - noisy or dropped-frame skeletons produce jittery motion.
Body proportions get stretched to match the driving actor. This is the known weakness of skeleton-based motion transfer - the pose says nothing about the subject's actual build, so the model can distort your character toward the driver's proportions. A good reference_pose_image helps align things; if it's a dealbreaker, the skeleton-free approaches (SCAIL-2) exist specifically because "turning motion into a stick figure" loses exactly this information.
Pose count vs frame count mismatch. The number of pose images should line up with the frames you're generating. A mismatch gives you misaligned or truncated motion. Match the pose sequence length to your target frame count (and Wan's 4n+1 math).
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_images | IMAGE | Pose images | |
| strength | FLOAT | 1.000–1 | Strength of the pose control |
| start_percent | FLOAT | 0.000–1 | Start percentage for the pose control |
| end_percent | FLOAT | 1.000–1 | End percentage for the pose control |
| reference_pose_imageopt | IMAGE | Reference pose image |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| unianimate_poses | UNIANIMATE_POSE | — |