Generate Video Tracks
Draw a motion path and get Wan-Move tracks
- track_mask
- TRACKS
- track_length
Wan-Move is motion control without a driving video: instead of feeding Wan a pose or depth clip, you hand it a set of 2D tracks and it moves content along them. GenerateTracks is the friendly way to make those tracks. You tell it where motion starts, where it ends, how many parallel tracks you want, and it produces the TRACKS object the Wan-Move pipeline consumes. It landed in core in December 2025 with Wan-Move support.
The inputs that matter
Most of them are about defining one path and fanning it out:
start_x/start_y/end_x/end_y- the motion path's start and end, as normalized coordinates (0-1). The tooltips spell it out; (0,0) is top-left, (1,1) is bottom-right.width/height- your video's resolution, used to map the normalized path to actual pixels.num_frames- how many frames the tracks span. Match your video length.num_tracks- how many parallel tracks to generate, 1-100. The motion spreads across them.track_spread- the normalized distance between tracks. The tooltip's detail matters: tracks are spread perpendicular to the motion direction, so this is how wide the "swath" of motion is.bezier+mid_x/mid_y- flipbezieron and the path becomes a curve through the midpoint instead of a straight line. The mid controls only apply whenbezieris enabled.interpolation- timing:linear,ease_in,ease_out,ease_in_out, orconstant. This is how the object's speed along the path is shaped - ease-in-out makes it accelerate and settle like a real subject,constantfreezes it.track_mask- optional mask marking which frames are visible.
Outputs
TRACKS- the track object (coordinates + visibility per frame), ready for the Wan-Move track conditioning and sampling chain.track_length- the generated frame count, which matchesnum_frames. Use it to keep the rest of your graph in sync.
The mechanism
The node takes your start/end points, interpolates positions across num_frames (applying the timing curve), then offsets copies perpendicular to the path by track_spread to build the parallel bundle. With bezier on, the midpoint becomes the curve's control point. What you get is a coherent field of motion paths rather than one lonely line - which is why it feels less like drawing and more like "aiming" a camera or a character sweep.
The honest comparison
This is the node you reach for when you want to invent motion - a camera that drifts left, a character that crosses the frame, a parallax sweep. Its sibling WanMoveTracksFromCoords is for when you already have real coordinates (tracked footage, exported paths, scripts) and want to paste them in. GenerateTracks is faster to use and more forgiving; the coords node is exact.
The trap: interpolation shapes speed, not path shape - you pick that with bezier. And normalized coordinates mean 0.5/0.5 is dead center, which trips people used to pixel coordinates. Start with a small track_spread and few tracks; a wall of 40 tracks at high spread is how you get mush instead of a directed move. Ships with ComfyUI core, no install.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 83216–4096 | — |
| height | INT | 48016–4096 | — |
| start_x | FLOAT | 0.000–1 | Normalized X coordinate (0-1) for start position. |
| start_y | FLOAT | 0.000–1 | Normalized Y coordinate (0-1) for start position. |
| end_x | FLOAT | 1.000–1 | Normalized X coordinate (0-1) for end position. |
| end_y | FLOAT | 1.000–1 | Normalized Y coordinate (0-1) for end position. |
| num_frames | INT | 811–1024 | — |
| num_tracks | INT | 51–100 | — |
| track_spread | FLOAT | 0.0250–1 | Normalized distance between tracks. Tracks are spread perpendicular to the motion direction. |
| bezier | BOOLEAN | false | Enable Bezier curve path using the mid point as control point. |
| mid_x | FLOAT | 0.500–1 | Normalized X control point for Bezier curve. Only used when 'bezier' is enabled. |
| mid_y | FLOAT | 0.500–1 | Normalized Y control point for Bezier curve. Only used when 'bezier' is enabled. |
| interpolation | COMBO | Controls the timing/speed of movement along the path. | |
| track_maskopt | MASK | Optional mask to indicate visible frames. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| TRACKS | TRACKS | — |
| track_length | INT | — |