Nodes/ComfyUI/WanAnimateToVideo
ComfyUI Node Runs on cloud

WanAnimateToVideo

Turn a still character into an animated Wan video

By Comfy-Org·Created 4 years ago·Updated about 24 hours ago· 130,663
WanAnimateToVideo
  • positive
  • negative
  • vae
  • clip_vision_output
  • reference_image
  • face_video
  • pose_video
  • background_video
  • character_mask
  • continue_motion
  • positive
  • negative
  • latent
  • trim_latent
  • trim_image
  • video_frame_offset
width832
height480
length77
batch_size1
continue_motion_max_frames5
video_frame_offset0

This is the node at the heart of every Wan Animate workflow, and Wan Animate is where character animation actually works in ComfyUI. Feed it a still of your character plus a pose video (or a reference image), and it builds the positive/negative conditioning and the latent that the KSampler will denoise. It's the dedicated prep node for Wan2.2-Animate-14B, Alibaba's task model for character animation and replacement - the same one the SCAIL family was built to beat.

The name is a little misleading, honestly. The node doesn't animate anything itself. It packs every input you give it into conditioning bundles and a noise target, and the sampler + checkpoint do the moving. Everything before it (CLIP text encode, the Wan VAE, loading the Animate checkpoint) is standard; this node is the glue.

What goes in

You'll set a handful of these and ignore the rest:

  • positive / negative - your text conditioning from the Wan text-encode node.
  • vae - the Wan VAE. Required.
  • width / height / length - output frame size and count. Defaults are 832×480×77.
  • reference_image - the still of your character. If you leave it out, the node substitutes a black frame, which is a trap: the output will look like a broken first frame.
  • pose_video - the motion driver. This is the magic one: the node VAE-encodes the pose video and stuffs the latent into the conditioning as pose_video_latent, so the character follows the motion.
  • face_video - optional facial-expression driver; it gets resized to 512×512 and normalized to [-1, 1].
  • character_mask / background_video - for compositing and selective generation.
  • video_frame_offset - the chunking knob. The tooltip says it best: seek into your input videos so you can generate longer clips piece by piece, connecting the output of one node to the next.
  • continue_motion + continue_motion_max_frames - continue an existing clip's motion instead of starting fresh.

What comes out

Four outputs, and two of them are easy to trip over:

  • positive / negative - the augmented conditioning, now carrying the pose latent, face pixels, and reference image. These go straight into the KSampler.
  • latent - the noise target to sample. Also into the KSampler.
  • trim_latent / trim_image - how many frames at the start of the latent/image correspond to the reference frames, not real motion. Decode the raw output and you'll see a frozen lead-in of the reference image. Respect the trims when you decode.
  • video_frame_offset - the updated offset for the next chunk.

A note on experimental status: the node is marked experimental in the source, so expect the odd sharp edge. The big one people hit is forgetting that latent includes the reference frames - trim before you save, or every clip starts with a stuck frame. And keep length and your pose video's frame count in the same ballpark; mismatches are the usual cause of "it animated for two seconds then died."

The checkpoint is loaded like any Wan model, and the whole chain ships with ComfyUI core - no install. If you're new to video, start with the official Animate example workflow and change one input at a time.

Categorymodel/conditioning/wan/animate

Inputs (16)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–16384
heightINT48016–16384
lengthINT771–16384
batch_sizeINT11–4096
continue_motion_max_framesINT51–16384
video_frame_offsetINT00–16384The amount of frames to seek in all the input videos. Used for generating longer videos by chunk. Connect to the video_frame_offset output of the previous node for extending a video.
clip_vision_outputoptCLIP_VISION_OUTPUT
reference_imageoptIMAGE
face_videooptIMAGE
pose_videooptIMAGE
background_videooptIMAGE
character_maskoptMASK
continue_motionoptIMAGE

Outputs (6)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
trim_latentINT
trim_imageINT
video_frame_offsetINT