Nodes/KJNodes for ComfyUI/AddNoiseToTrackPath
ComfyUI Node Runs on cloud

AddNoiseToTrackPath

Roughing up a motion track so it doesn't look robotic

By kijai·Created 3 years ago·Updated 2 days ago· 3,011
AddNoiseToTrackPath
  • tracks
  • TRACKS
strength1.00
seed0
noise_x_ratio1.00
noise_y_ratio1.00
noise_temporal_ratio1.00

This one lives under conditioning/video_models in the node menu, and the TRACKS type it works with is the giveaway: it operates on motion-track / trajectory conditioning for video models - the kind of data you'd feed a video model to say "this point moves along this path over these frames." What it does to that data is simple to state: it adds controlled noise, so a perfectly smooth, machine-generated path stops looking so perfectly smooth.

That matters because a trajectory drawn by hand, or generated procedurally, tends to be too clean - evenly spaced, mathematically consistent in a way real motion never is. Feed that straight into a motion-controlled generation and you can end up with movement that reads as stiff or mechanical, the same way perfectly interpolated animation looks worse than animation with a bit of natural jitter in it. Nudging the path with a small amount of noise before it reaches your sampler is a cheap way to break that too-clean quality.

The inputs that matter

  • tracks (TRACKS, required) - the track/trajectory data going in.
  • strength (default 1, range 0100) - overall noise magnitude. This is the one to actually watch: the useful range here is much wider than a typical 0–1 ComfyUI slider, and the default of 1 is close to the bottom of a 0–100 scale. If you expected a small bump from the default and got nothing visible, that's why - you likely need to push this a lot higher than instinct suggests.
  • noise_x_ratio / noise_y_ratio (default 1 each, 0100) - how much of the noise lands on horizontal vs. vertical movement. Zero either one out and that axis stays clean.
  • noise_temporal_ratio (default 1, 0100) - how much the noise varies frame to frame versus staying consistent across the whole path. Higher values make the jitter feel more like frame-to-frame flicker; lower values make it feel more like the whole path was shifted slightly and consistently.
  • seed (default 0) - reproducibility. Same seed, same settings, same exact noise pattern every time - useful for comparing a noised track against a clean one without the comparison itself being noisy.

Output: TRACKS - the perturbed path, same type as the input, so it drops straight back into whatever motion-conditioning node was consuming the original.

How to install it

Via ComfyUI Manager: search KJNodes for ComfyUI, install, restart. Manually:

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

Then restart. No model downloads - this is pure graph logic operating on trajectory data you're already producing elsewhere in your workflow.

Common issues & troubleshooting

Nothing visibly changes. Two likely causes, both readable straight off the schema: strength is still near its default of 1 out of a 0100 range, so push it up meaningfully before concluding it isn't working; or one of noise_x_ratio / noise_y_ratio / noise_temporal_ratio got zeroed out somewhere upstream, which gates that particular axis off entirely regardless of strength.

You want the same "random" wobble every run for comparison purposes. That's what seed is for - leave it fixed while you tune the ratio and strength sliders, and you're comparing apples to apples instead of chasing a moving target.

Over-noised paths look chaotic instead of organic. This node adds noise linearly across a wide range (up to 100), and there's a real gap between "a little natural jitter" and "the path no longer resembles the original intent." Start low, increase in small steps, and watch the actual rendered motion rather than tuning by feel on the numbers alone.

Categoryconditioning/video_models

Inputs (6)

NameTypeDefaultDescription
tracksTRACKS
strengthFLOAT1.000–100
seedINT00–18446744073709550000
noise_x_ratioFLOAT1.000–100Multiplier for horizontal noise component
noise_y_ratioFLOAT1.000–100Multiplier for vertical noise component
noise_temporal_ratioFLOAT1.000–100Multiplier for temporal (frame-to-frame) noise

Outputs (1)

NameTypeDescription
TRACKSTRACKS