Nodes/ComfyUI/WanAnimate2ToVideo
ComfyUI Node Runs on cloud

WanAnimate2ToVideo

Steal the motion from a driving video and put it on your character

By Comfy-Org·Created 4 years ago·Updated about 5 hours ago· 128,055
WanAnimate2ToVideo
  • positive
  • negative
  • vae
  • reference_image
  • pose_video
  • clip_vision_output
  • positive_pose
  • clip_vision_output_pose
  • continue_motion
  • positive
  • negative
  • latent
  • trim_latent
  • trim_image
  • video_frame_offset
width832
height480
length81
batch_size1
video_frame_offset0
pose_strength1.00
pose_start_percent0.00
pose_end_percent1.00
reference_image_strength1.00

This is the heart of Wan Animate 2: character animation from a reference image plus a driving video. Give it a picture of your character, hand it a video of someone moving, and it generates your character doing that performance - facial animation, body motion, hand gestures. Alibaba's motion-transfer model, wired straight into ComfyUI core in August 2026, and the kind of thing that used to require a separate pose-conversion pipeline.

How it works

It's a conditioning builder, not a generator. The reference image gets VAE-encoded into a reference latent - that's the character, the thing to preserve. The driving video gets VAE-encoded into the pose branch. Both are concatenated along the time axis with a mask that marks "known" vs "to-generate" frames, and the whole package is stapled onto your positive/negative conditioning. A CLIP-vision pass on the reference anchors identity; the pose branch feeds the model's attention on every step. Notably, the driving video goes in raw - no stick-figure or skeleton preprocessing in this node, the model reads motion straight from the frames.

The pose branch runs a single pass per sampling step, outside the CFG loop (it never sees the negative prompt). It's still recomputed every step - which is exactly why the sibling WanAnimate2Cache node can roughly halve your render by memoizing it. Use both.

Inputs that matter

  • reference_image - the character to animate. Omit it and you get a black placeholder; don't omit it.
  • pose_video - the motion source.
  • length - frames to generate (default 81).
  • pose_strength - how hard the motion is enforced. 1.0 is the trained behavior; lower loosens adherence, higher amplifies it. 0.0 mutes it without fully removing it.
  • reference_image_strength - identity vs drift. Below 1.0 lets the prompt restyle the character; above 1.0 tightens it against drift.
  • pose_start_percent / pose_end_percent - a window for the pose influence. Motion is mostly established early, so ending at ~0.7 frees the model to add fine detail while keeping the choreography - and outside the window the pose branch is skipped entirely, which also speeds those steps up.
  • positive_pose - a separate prompt for the pose branch describing the motion rather than the character.
  • continue_motion / video_frame_offset - the extension loop, below.

The extension loop (the signature move)

The outputs include three ints that look like noise until you're generating longer than one context:

  • trim_latent - latent frames to cut before decoding (the reference frame is part of the latent; you don't want it in the video).
  • trim_image - overlapping image frames to drop when extending.
  • video_frame_offset - where to seek into the pose video next.

The pattern: run once, trim the latent, feed the tail back into continue_motion, feed video_frame_offset into the next node's offset, repeat. The node is built for chaining, and it tells you exactly what to do at each step.

Gotchas

  • Wire the CLIP first. Positive/negative conditioning come from a CLIPTextEncode on the Wan Animate 2 CLIP (model on HF as Wan-AI/Wan2.2-Animate-2-14B). This node has no MODEL input - the model flows to the sampler separately.
  • Pose video shorter than length → the last frame is held to fill, which can freeze motion at the tail. Match your lengths.
  • video_frame_offset past the end of the pose video → hard error, "nothing left to read".
  • It's is_experimental, and the naming shuffle means older guides call the previous model "Wan Animate 2.2". If a workflow says Animate-14B with face/pose/background streams, that's the older v1 node - different node, different wiring.

If you've watched a character video where the face stays frozen while the body moves, this is the fix: real motion, transferred, with dials to tune how much of it you keep.

Categorymodel/conditioning/wan/animate

Inputs (18)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–16384Output video width in pixels.
heightINT48016–16384Output video height in pixels.
lengthINT811–16384Number of frames to generate.
batch_sizeINT11–4096Number of videos to generate simultaneously.
video_frame_offsetINT00–16384Frames to seek into the pose video. Connect to the video_frame_offset output of the previous node when extending.
pose_strengthFLOAT1.000–10Scales the pose video's influence on the motion. 1.0 is the trained behavior; below weakens adherence, above amplifies. 0.0 mutes it but does not fully remove it.
pose_start_percentFLOAT0.000–1Sampling percent at which the pose influence starts. Outside the window the pose branch is skipped entirely, which also speeds those steps up.
pose_end_percentFLOAT1.000–1Sampling percent at which the pose influence ends. Motion is mostly established early, so e.g. 0.7 can loosen fine detail while keeping the choreography.
reference_image_strengthFLOAT1.000–10Scales how strongly generated frames attend to the reference image's latent frame. Below 1.0 loosens identity/appearance adherence (e.g. to let the prompt restyle), above tightens it against drift.
reference_imageoptIMAGEThe character to animate.
pose_videooptIMAGEThe video whose motion is transferred to the reference character.
clip_vision_outputoptCLIP_VISION_OUTPUTCLIP vision of the reference image.
positive_poseoptCONDITIONINGPrompt for the pose-video branch, describing the motion rather than the character. Defaults to positive. Used for both the cond and uncond passes.
clip_vision_output_poseoptCLIP_VISION_OUTPUTCLIP vision of the pose video's first frame. Defaults to clip_vision_output.
continue_motionoptIMAGEPrevious motion sequence to continue from for temporal consistency.

Outputs (6)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
trim_latentINTNumber of latent frames that should be trimmed before decoding.
trim_imageINTNumber of overlapping image frames when extending a video.
video_frame_offsetINTFrames to seek into the pose video.