Nodes/ComfyUI-NKD-Basic-Tools/😺NKD Path Blur
ComfyUI Node

😺NKD Path Blur

Draw the movement, the image smears along it

By Nekodificador·Created about a month ago·Updated 3 days ago· 71
😺NKD Path Blur
  • image
  • mask
  • IMAGE
â—„paths{"v":1,"paths":[]}â–º
â—„strength24â–º
â—„spread0.15â–º

The problem with ordinary motion blur is that it only knows one direction. Core's directional blur and most packs smear the whole frame along a single straight angle, which is fine for a linear pan and nonsense for a hand sweeping past, a car arcing through a turn, or anything where the movement itself curves. 😺NKD Path Blur is the fix: you draw strokes over the image showing which way things move, and the image smears along them. A few strokes describe a whole frame, and the places you never touched stay sharp.

It's from Nekodificador's NKD Basic Tools pack - same author as the well-regarded NKD VFX Tools (gaussian splat relighting, occlusion masks, lens distortion), and it shows in the way this thing is built: the editor previews the actual render, not an approximation.

How it works

Draw strokes with the pen tool on the node's editor. Each stroke says "things move this way, roughly this fast," and the backend blends the direction between strokes into one smooth field, so you don't need a stroke per pixel - a curve gets described by a few control points. What you're tuning is stored as JSON in the node's paths widget (the {"v":1,"paths":[]} string you see if you poke at it), which is why the whole thing stays editable and survives a workflow save.

Two things make it feel like a real compositing tool. First, each stroke carries its own speed, so one part of the frame can blur hard while another barely moves. Second, Ctrl-drag a point to give that point its own speed on top of the stroke's - one stroke can accelerate along its length instead of you needing a stroke per speed. The dashed clone you see in the editor is where that pixel will actually land at the current strength, which is a genuinely nice touch.

The inputs that matter

  • strength (default 24, 0–256) - how far a pixel travels in pixels where a full-speed stroke passes. This is your overall blur amount.
  • spread (default 0.15) - how far each stroke's influence reaches, as a fraction of the image. Small keeps the blur tight around the strokes; large melts them into one smooth field. Areas far from every stroke stay sharp either way.
  • mask (optional) - where the mask is white, the original image is kept.

That mask input isn't optional in spirit. The node has no occlusion information, so at the end of a stroke the background will smear over whatever is in front of it. If a car is passing in front of a wall, the wall bleeds across the car at the stroke's tail unless you mask the car out. This is the first thing to reach for when a result looks "contaminated."

Where it fits

Feed it any IMAGE - a VAE-decoded frame, a compositing pass, a finished render - and take the IMAGE out to Preview or Save. It's a post-process node; nothing here samples, so it's instant and rerunnable. Natural uses: whip pans, camera shake that follows an arc, speed lines on a car or a plane, or giving one moving subject in an otherwise static frame the blur the background already has. On a video batch it processes frame by frame with the same strokes, which is either exactly what you want or a happy accident depending on the shot.

Install

Via ComfyUI Manager: search "NKD Basic Tools" and install, then restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/Nekodificador/ComfyUI-NKD-Basic-Tools

then restart ComfyUI. The pack's declared Python deps (onnxruntime, huggingface_hub) exist for the face-rig and face-crop nodes and load fine without them - this node needs none of it. No model downloads, no CUDA extras; it's torch plus the bundled JavaScript editor. The pack is built on ComfyUI's newer extension API (comfy_api.latest), so if the node doesn't appear after install, update ComfyUI first.

Gotchas

Very high strength doesn't blur harder - it ghosts. The sampling is capped, so past a point the smear breaks into visible discrete steps instead of a smooth trail. If you see stepping, dial strength back. And the preview only shows after the node has run once (there's no frame to draw before then); press V inside the editor to flip between the result and the untouched image.

Category😺NKD Nodes/Basic

Inputs (5)

NameTypeDefaultDescription
imageIMAGE—
pathsSTRING{"v":1,"paths":[]}—
strengthFLOAT240–256How far a pixel travels, in pixels, where a full-speed stroke passes. Very high values break the smear into visible steps — the sampling is capped, so past a point it ghosts rather than blurs.
spreadFLOAT0.150.02–1How far each stroke's influence reaches, as a fraction of the image. Small keeps the blur tight around the strokes; large blends them into one smooth field across the whole frame.
maskoptMASKOptional. Where the mask is white the original image is kept — the usual way to stop a blurred background from smearing over the subject.

Outputs (1)

NameTypeDescription
IMAGEIMAGE—