WanMoveConcatTrack
Splice two sets of motion tracks into one
- tracks_1
- tracks_2
- TRACKS
A TRACKS object is just a bundle of point trajectories: a list of (x, y) positions per frame, plus a visibility mask. WanMoveConcatTrack is the node that staples two of those bundles together into one. It's the glue of the Wan-Move workflow, and it's so small that this article is short for a reason - there isn't much to it.
Why you'd want this
Wan-Move conditions a video generation on point trajectories, but a single trajectory set is rarely the whole scene. You might want a camera dolly (one set of tracks all moving together), a character walking right (a second set), and a drifting leaf (a third). Generate each with its own GenerateTracks node, then concatenate them so WanMoveTrackToVideo sees everything at once. Same idea if you're building a complex path out of segments or merging tracks from an external point-tracker with ones you made by hand.
How it works
It concatenates along the track dimension. Given tracks_1 with N points per frame and tracks_2 with M points per frame, you get one TRACKS with N+M points per frame. The visibility masks merge the same way. Nothing fancy, no resampling, no averaging - a straight append.
The inputs
- tracks_1 - required.
- tracks_2 - optional. Leave it disconnected and the node just passes
tracks_1through untouched, which is a handy way to make a "maybe merge, maybe not" workflow safe.
Output: a single TRACKS that feeds straight into WanMoveTrackToVideo.
Getting it
Ships with ComfyUI core - it arrived with the whole Wan-Move node family in December 2025 (PR #11247). No install, just update.
Where people trip
Both inputs must span the same number of frames. The concat is along the point axis, not the time axis, so if one track set is 81 frames and the other is 121, you've just handed WanMoveTrackToVideo a mashup that its length check can't reconcile. If your two sources genuinely differ in length, trim or regenerate one first. And there's no dedup or sorting here - if you concatenate tracks that overlap spatially, they both act on the generation, which can pull motion in conflicting directions. That's a feature if you're layering motion on purpose, and a bug if you forgot to delete the old track set.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| tracks_1 | TRACKS | — | |
| tracks_2opt | TRACKS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TRACKS | TRACKS | — |