Repose image with UniAnimate
Steal a pose without losing the person
- image
- pose
- newPose
- pose
Repose image with UniAnimate is the pack's hidden gem, and it's the one the author explicitly tells you to reach for. The animation nodes get all the attention; this one does something more surgical: it takes a photo of a person and a second image, then re-poses your person into the second image's pose while keeping their identity. One frame in, one frame out, no video involved. The output is a still - a reposed character you can then feed into the animation nodes, or just use on its own.
The most clicked node in this pack (relative to its traffic) earns it. The author's own release notes are unambiguous: of the three repose nodes, this UniAnimate one is "much better for image to image pose transfer." The Animate-X repose variants exist and are fine, but this is the one to try first.
How it works
Under the hood it runs the same pipeline as the UniAnimate animation node - the UniAnimate_infer.yaml config, the same checkpoints, the same DDIM diffusion - but with a single-frame twist. It extracts a DWPose from your image and a pose from your target pose image, runs the alignment step, and then generates exactly one frame: your person, in the target pose. Identity comes from the reference image, geometry comes from the target pose.
Two inputs drive the quality:
image- the person whose identity you're keeping.pose- the photo whose pose you're copying. You don't need to isolate the pose source; the node's internal DWPose detector finds the skeleton.
Then the important toggle:
dontAlignPose(default false) - when false, the node auto-scales the target pose to match your person's proportions, likeGen_align_posedoes. When true, it takes the target pose as-is, which is what you want when your reference person and the pose source are already similar in size - or when you're deliberately copying exact proportions.
seed, steps (default 30), and resolution_x (512 or 768) round out the set. Outputs are newPose (the reposed result) and pose (the DWPose skeleton it was generated from, handy if you want to inspect or reuse the pose).
Setup
Same pack, same story: install via ComfyUI Manager (search "UniAnimate Nodes for ComfyUI") or git clone https://github.com/Isi-dev/ComfyUI-UniAnimate-W into custom_nodes/. It needs the full UniAnimate checkpoint stack (~14GB in checkpoints/, pulled with python modeldownloader.py or the manual HuggingFace route) - no extra Animate-X file required, which is another point in its favor.
The catch
It's a diffusion pass, so expect a little identity drift and a generation that looks right but isn't a 1:1 copy of your photo - faces and clothing stay recognizable, fine details soften. And because it generates a single frame rather than a sequence, VRAM is far more forgiving than the 12GB the animation nodes need. It's also worth remembering this node exists as a preprocessing step: repose a character first, save the still, then drive it with a dance video for a much cleaner starting point than feeding the animation node a random pose.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 110–16384 | — |
| steps | INT | 3010–50 | — |
| dontAlignPose | BOOLEAN | false | — |
| image | IMAGE | — | |
| pose | IMAGE | — | |
| resolution_x | INT | 512512–768 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| newPose | IMAGE | — |
| pose | IMAGE | — |