Nodes/ComfyUI/WanMoveTracksFromCoords
ComfyUI Node Runs on cloud

WanMoveTracksFromCoords

Paste coordinates, get motion tracks for Wan-Move

By Comfy-Org·Created 4 years ago·Updated about 10 hours ago· 130,663
WanMoveTracksFromCoords
  • track_mask
  • TRACKS
  • track_length
track_coords[]

Wan-Move is Ali's latent-trajectory guidance for Wan video - instead of driving motion with a pose or depth control video, you hand the model a set of 2D tracks and it moves things along them. WanMoveTracksFromCoords is the manual-entry node for that system: you type coordinates, it emits a TRACKS object.

It landed in core in December 2025 with Wan-Move support, and it's the "I know exactly what I want" counterpart to GenerateTracks, which draws paths for you. If you have a JSON blob of motion points - from a script, a tracker, or someone else's workflow - this is the node that turns it into something Wan-Move can condition on.

Inputs

  • track_coords - a JSON string. The shape matters, so let's be specific. It's a list of tracks, where each track is a list of per-frame objects, and every object has x and y:
[
  [{"x": 0.2, "y": 0.3}, {"x": 0.25, "y": 0.31}, {"x": 0.3, "y": 0.32}],
  [{"x": 0.5, "y": 0.3}, {"x": 0.55, "y": 0.31}, {"x": 0.6, "y": 0.32}]
]
  • track_mask - an optional mask marking which frames are visible. Hand it a per-frame visibility map and tracks drop out of the conditioning where the mask says they shouldn't exist.

Outputs

  • TRACKS - the track object, coordinates plus visibility, built as a [frames, num_tracks, 2] tensor. This feeds the Wan-Move conditioning/sampling side of the graph.
  • track_length - how many frames the tracks span. Wire this where the rest of your workflow expects a length, so nothing drifts out of sync.

How it works

The node parses your JSON, pulls out the per-track per-frame x/y pairs, and stacks them into the tensor, then applies the mask for visibility. It's deliberately dumb - it trusts your coordinates. track_length comes from the first track, and it assumes every track has the same number of frames.

The trap

The frame count must be consistent across all tracks, or you get a shape error mid-graph. That's the number one failure with this node, and it's easy to hit when you're generating coordinates by hand. If you're building tracks from scratch rather than pasting them, you almost certainly want GenerateTracks instead - it generates parallel tracks, handles Bezier paths, and has interpolation presets so you don't hand-write a hundred coordinates. Reach for this node when you have real data (tracked footage, a script, an exported path), not when you're improvising.

It ships with ComfyUI core. Pair the TRACKS output with the Wan-Move track-to-video chain and the Wan 2.1/2.2 checkpoint you're already running, and you've got motion control that doesn't need a driving video at all.

Categorymodel/conditioning/wan/move

Inputs (2)

NameTypeDefaultDescription
track_coordsoptSTRING[]
track_maskoptMASK

Outputs (2)

NameTypeDescription
TRACKSTRACKS
track_lengthINT