WanMoveTrackToVideo
The node that turns drag-points into actual video motion
- positive
- negative
- vae
- start_image
- tracks
- clip_vision_output
- positive
- negative
- latent
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
TRACKSobject fromGenerateTracks,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.safetensorsthat 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.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| strength | FLOAT | 1.000–100 | Strength of the track conditioning. |
| width | INT | 83216–16384 | — |
| height | INT | 48016–16384 | — |
| length | INT | 811–16384 | — |
| batch_size | INT | 11–4096 | — |
| start_image | IMAGE | — | |
| tracksopt | TRACKS | — | |
| clip_vision_outputopt | CLIP_VISION_OUTPUT | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |