TimeToMove Guider
The node that actually makes your reference move
- model
- positive
- negative
- latent
- guider
This is the heart of the pack. The other two nodes get a reference video ready; TimeToMove Guider is what takes that reference and shoves it into the middle of denoising so your output actually moves like it.
TimeToMove (TTM) is a Wan 2.2 motion-transfer technique that went viral late 2025: you make a crude "motion signal" video by puppeteering a cutout of your subject in any video editor, and Wan re-renders it as a smooth, photoreal clip tracking that motion. Kijai shipped TTM in WanVideoWrapper, and GiusTex ported it to native ComfyUI - this guider is the clever part of that port. In the wrapper you needed a dedicated TTM sampler; here the injection lives in a guider, so it works with any standard sampler you already use.
How it works
A guider sits between your KSampler and the model, getting called on every denoising step. This one watches the step counter, and for every step inside your TTM window it does something sneaky:
- It takes the encoded reference video latents (from
Encode WanVideo) and adds noise to them so they match the current denoising stage - a reference at full detail would be useless at step 0. - It blends those noisy reference latents into the latent being sampled, weighted by your motion mask:
x = x * (1 - mask) + noisy_reference * mask.
So only the region you masked (your moving subject) gets pulled toward the reference's motion; the rest of the frame denoises normally. After the window closes, the model refines everything into a coherent, high-quality clip. That's the whole trick: constrain early, generate the rest.
Inputs and outputs
Required: model, positive, negative, cfg, latent, start_sampler_step. Output: guider (a GUIDER) - wire it into a SamplerCustomAdvanced.
- latent - must come from
TTM Latent Add, which packs the reference latents, mask and step window into it. Feed a plain latent here and you'll get an error, because this guider expects TTM options baked in. - cfg - a plain float, but the tooltip notes it "works with a list of floats too (one cfg float per step)." That's how you feed a per-step CFG schedule from a
CFGFloatListScheduler(GiusTex moved it to ComfyUI-MoreEfficientSamplers) - handy on Wan 2.2 where a fixed CFG schedule beats a constant. - start_sampler_step - critical for Wan 2.2's two-pass setup. If you split high-noise and low-noise passes, this tells the guider which step index it's really at so the TTM window lands where you expect. If the sampler has its own
start_step, set both to the same value.
Installing
No dependencies beyond ComfyUI core. Clone, restart, done:
cd ComfyUI/custom_nodes
git clone https://github.com/GiusTex/ComfyUI-Wan-TimeToMove.git
ComfyUI Manager picks it up by the pack title too. You bring the Wan 2.2 model yourself (the example workflow uses Q6_K GGUF high/low-noise checkpoints, a lightx2v LoRA, and LCM sampler - GiusTex also notes the lightx2v LoRA at high strength generates more motion but speeds up the apparent fps).
Where people get burned
- Wiring
latentstraight from a latent node. The guider readsttm_start_step/ttm_end_stepdirectly off the latent dict, so it must come fromTTM Latent Add, not from your empty-latent or first-frame node. This is the #1 setup mistake. start_sampler_stepmismatch. The tooltip is explicit: "if the sampler has a start_step option and you changed its value, set the same here." Skip that and your TTM window slides into the wrong pass and silently does nothing visible.- Expecting magic from a short window. The defaults (0 to 3) inject the reference for just the first three steps - a light touch. Bump
ttm_end_stepup if the reference motion isn't showing through; the tradeoff is a stiffer, less generative result.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| cfg | FLOAT | 1.00–100 | Works with a list of floats too (one cfg float per step) |
| latent | LATENT | You can connect here the latent from TTM Latent Add, to pass reference video and ttm options | |
| start_sampler_step | INT | 00–1000 | Start step of the whole sampling process. It will automatically skip the selected number of sigmas (starting from the first ones); if the sampler has a start_step option and you changed its value, set the same here |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| guider | GUIDER | — |