MotionScale (temporal RoPE scale) ?
Make WAN 2.2 move faster without touching the prompt
- model
- model
WAN 2.2's biggest practical complaint is that it moves like it's underwater. You ask for a walk and get a slow wade; the community's fix has historically been motion LoRAs (which cost quality) or chasing prompts. IAMCCS_MotionScale takes a different lever: it patches the temporal RoPE positions inside the model, which changes how fast the model thinks time passes - so motion speed goes up or down at the source, and the rest of your pipeline stays untouched.
It's a MODEL in / MODEL out patch node from the IAMCCS-nodes WAN section, designed to sit between your model loader and the KSampler. Same author whose SVI Pro motion work brought first-frame/last-frame anchoring to the WAN scene.
How it works
WAN 2.2 uses RoPE (rotary position embeddings) to tell the transformer where each frame sits in time. Scale those positions and you're effectively telling the model "this clip is shorter" or "this clip is longer" than it actually is - the model responds by compressing or stretching the apparent motion. scale_t > 1 gives faster, more dynamic motion; < 1 gives slower, calmer; < 0 actually reverses the position order, which is a party trick more than a tool. The two optional scale_y and scale_x knobs do the same thing for spatial position - 1.0 means unchanged, and you'll rarely need them.
The docs pair this with RIFE frame interpolation: generate a shorter, more dynamic clip at high motion scale, then interpolate up to your target length - the combination that gets you "longer, more dynamic videos" without the drift that comes from generating everything natively at 81+ frames.
Inputs and outputs
model(MODEL) - your WAN 2.2 model.enabled(BOOLEAN, default true) - quick A/B: leave it connected and toggle to compare.scale_t(FLOAT, default 1.5) - the knob that matters. The tooltip's guidance is worth trusting: 1.5 is a good starting point for long-video generation.scale_y/scale_x(FLOAT, default 1.0, optional) - spatial position scales; leave at 1.0.
Output: model (MODEL) - patched model for your sampler.
How to install
Part of IAMCCS-nodes. ComfyUI Manager search "IAMCCS", or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart. No model downloads - WAN 2.2 and RIFE come from elsewhere. Pack floors: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8.
Gotchas
Don't treat scale_t like a volume knob you can crank. Past ~2, WAN tends to produce jitter and artifacts because you're lying to the model about its own timeline, and negative values can genuinely destabilize sampling. Also - and this matters for WAN specifically - RoPE scaling changes apparent motion, not motion quality: if your clips feel slow because the motion is just plain limited, MotionScale won't add dynamism, it'll make the existing motion faster (and occasionally weirder). And the smarter-pipeline route is still what the community converged on: pair this with RIFE (as the docs say) rather than trying to generate long clips directly, where WAN's 81-frame native context and cross-chunk identity drift are the real enemies.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| enabled | BOOLEAN | true | Enable / disable motion scaling. |
| scale_t | FLOAT | 1.50-10–10 | Temporal (time) position scale. >1 = faster motion, <1 = slower motion, <0 = reversed positions. 1.5 is a good starting point for long-video generation. |
| scale_yopt | FLOAT | 1.00-10–10 | Height (Y) spatial position scale. 1.0 = unchanged. |
| scale_xopt | FLOAT | 1.00-10–10 | Width (X) spatial position scale. 1.0 = unchanged. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |