ComfyUI Node Runs on cloud

WanMove Native

Drag-a-point motion control for native Wan

By kijai·Created about a year ago·Updated 2 months ago· 6,651
WanMove Native
  • positive
  • track_mask
  • positive
  • tracks
track_coords

WanMove is trajectory-based motion control - you specify where points in the frame should move, and the generation makes the scene follow those tracks. Think "drag this object along this path" rather than "describe the motion in words and pray." This node is the _native build, meaning it works against ComfyUI's native Wan conditioning rather than the wrapper's own embeds pipeline - a useful distinction, because it slots into a standard native Wan graph instead of forcing you into the WanVideoWrapper's WANVIDIMAGE_EMBEDS world.

Motion is the hardest thing to prompt in video. The KB's Wan prompting advice basically gives up on precision - "just use basic guidance, to pinpoint the elements and action" - because text is a blunt instrument for movement. Track-based control is the alternative: instead of hoping the model interprets "she turns to the left," you draw the path and it follows.

How it works

You hand it your positive conditioning and a string of track coordinates - a serialized description of point trajectories, typically produced by a point-tracking or trajectory-authoring tool upstream. Optionally you add a mask to say which region the tracks apply to. It bakes the motion trajectory into the conditioning and passes it back out, plus a separate tracks object you can route onward. Sampling then respects those paths.

The inputs and outputs

  • positive (CONDITIONING, required) - your positive prompt conditioning. This is what gets the motion mixed into it.
  • track_coords (STRING, required) - the trajectory data, as a string. This is the motion itself; it comes from a tracking/authoring node, not something you type by hand in practice.
  • track_mask (MASK, optional) - restricts the motion to a region. Handy when you want one object to move while the background holds.

Outputs:

  • positive (CONDITIONING) - the motion-infused conditioning; wire it into your KSampler's positive.
  • tracks (TRACKS) - the parsed tracks, for visualization or reuse downstream.

The only thing a beginner really sets here is where the track_coords come from - get that plumbing right and the node does its part.

How to install it

It's in Kijai's WanVideoWrapper. ComfyUI Manager: search ComfyUI-WanVideoWrapper, install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt

then restart. Because this is the native-conditioning variant, it plays with ComfyUI's built-in Wan nodes, so you don't strictly need the wrapper's whole embeds stack around it - but you do need a Wan model that responds to trajectory control and a way to generate the track_coords string.

Common issues & troubleshooting

Nothing follows the tracks. The most common cause is empty or malformed track_coords. It's a string with a specific structure; if your upstream tracker exported nothing usable, the node has no motion to apply. Check the string actually contains coordinates.

Motion applies to the whole frame when you wanted one object. That's the track_mask doing nothing - either it's not connected or it's blank. Mask the region you want moved so the rest stays put.

Native vs wrapper confusion. This node speaks native ComfyUI CONDITIONING, not the wrapper's WANVIDIMAGE_EMBEDS. Don't try to bridge it into the WanVideoSampler's embeds input - route it into a native Wan sampling path instead.

CategoryWanVideoWrapper

Inputs (3)

NameTypeDefaultDescription
positiveCONDITIONING
track_coordsSTRINGJSON string or list of JSON strings representing the tracks
track_maskoptMASK

Outputs (2)

NameTypeDescription
positiveCONDITIONING
tracksTRACKS