Nodes/ComfyUI/WanMoveTrackToVideo
ComfyUI Node Runs on cloud

WanMoveTrackToVideo

The node that turns drag-points into actual video motion

By Comfy-Org·Created 4 years ago·Updated a day ago· 130,493
WanMoveTrackToVideo
  • positive
  • negative
  • vae
  • start_image
  • tracks
  • clip_vision_output
  • positive
  • negative
  • latent
strength1.00
width832
height480
length81
batch_size1

This is the heart of Wan-Move, Alibaba's trajectory-based motion control for Wan. The pitch, and it's a good one: take a still image, tell the model "these pixels travel from here to there over the clip," and the video does what you drew. It's point-level control - way finer than a text prompt that says "the dog runs right," because you've said which pixels and where. It landed in ComfyUI core in December 2025, days after the model shipped, and it runs on the plain Wan 2.1 I2V-14B checkpoint. No extra motion module to download. That last bit is the clever part.

How it works

Wan-Move calls its mechanism "latent trajectory guidance." This node encodes your start image into latents, then walks your track positions frame by frame and copies the first frame's latent features along the paths. So the feature blob at the track's origin gets planted at the track's destination on each later timestep, and the sampler denoises around those planted anchors. Because the guidance lives in the conditioning, not in a new model architecture, the standard Wan checkpoint just works.

Notice the split: the positive conditioning gets the track-patched latent, but the negative gets the unpatched one. That's deliberate - it keeps the contrast between what the model should move toward and what it starts from.

The strength slider (0–100, default 1) scales how hard the planted features override the native latents. Crank it and the track wins, sometimes at the cost of natural physics; drop it toward zero and you're back to ordinary Wan I2V.

The inputs

  • tracks - optional. A TRACKS object from GenerateTracks, WanMoveTracksFromCoords (paste JSON coordinates), or an external point-tracker. Leave it empty and this node behaves like a plain Wan I2V conditioning.
  • start_image - required. Your first frame; the tracks are defined relative to it.
  • positive / negative - text conditioning, same as any Wan workflow.
  • vae - the Wan 2.1 VAE (the wan_2.1_vae.safetensors that ships in the official repackaged workflow).
  • width / height / length / batch_size - output geometry, 81 frames by default.
  • strength - how much the trajectory conditioning drives the result.
  • clip_vision_output - optional, from CLIPVisionEncode; feeds the start frame's visual embedding for better identity.

Outputs are positive, negative, and latent - straight into a KSampler. This is a conditioning node, not a generator.

Getting it

Ships with ComfyUI core. Model files: the Wan-Move checkpoint (Wan21-WanMove - Kijai's fp8_scaled version is what most people run), the umt5 text encoder, clip_vision_h, and wan_2.1_vae. All into their usual models/ subfolders.

Where people get burned

The classic mistake: change the resolution after drawing tracks. Tracks are in pixel coordinates for a specific width/height - bump width from 832 to 1024 and your carefully drawn path now lands elsewhere on the frame. Also, tracks are indexed to length; if you trim the clip after making tracks, the motion timeline shifts. And remember the tracks apply to the positive side only - if you dial strength to 100 and still see no motion, check that you actually wired the TRACKS in and that GenerateTracks isn't giving you a straight line where you wanted a curve. Use WanMoveVisualizeTracks to see what you're actually feeding it before you spend a generation finding out.

Categorymodel/conditioning/wan/move

Inputs (11)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
strengthFLOAT1.000–100Strength of the track conditioning.
widthINT83216–16384
heightINT48016–16384
lengthINT811–16384
batch_sizeINT11–4096
start_imageIMAGE
tracksoptTRACKS
clip_vision_outputoptCLIP_VISION_OUTPUT

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT