Nodes/MKRShift_Nodes/Motion Blur Vector
ComfyUI Node

Motion Blur Vector

The name oversells it, the result is still worth it

By criskb·Created 7 months ago·Updated 5 months ago· 0
Motion Blur Vector
  • video
  • video
  • output_path
  • summary
shutter_frames5
strength1.00
directioncentered
fallback_fps24.0
output_formatauto
filename_prefixMKR_motion_blur
subfolder
overwritefalse
filename_label

The "makes AI video look real" cheat, packaged

One of the most repeated pieces of wisdom in the video side of this hobby: AI video looks fake because it has no motion blur, and adding it is one of the cheapest realism wins you can make. MKRMotionBlurVector is the pack's answer to that - a one-node temporal motion blur you drop on a clip and forget about.

It's part of MKRShift_Nodes, the big utility pack by Cris K B. Pure numpy + Pillow, no optical flow, no models, no API.

The name is a lie, and that's fine

"Vector" suggests real vector-based motion blur - the kind where you compute per-pixel motion from optical flow and smear along it. That's not what this does. What it actually does is temporal frame averaging: for each frame, it averages the frames around it (a window of shutter_frames, default 5) and blends the result back over the original by strength. Moving areas streak because they're shifted between frames; static areas barely change and stay crisp. It's a cheap, effective approximation - the kind of motion blur you can actually afford on a whole clip, versus the optical-flow version that's slow and can smear into mush.

Being honest about the difference matters because it predicts the failure modes: fast, high-contrast motion can ghost or double-image, and it won't produce directional streaking that matches a real camera's shutter. But for fixing that "too clean, too synthetic" look, it's exactly the right tool, and the KB's own corpus has a compositor saying motion blur is the missing piece that makes AI video read as captured. This is that missing piece as a node.

The inputs

  • video - the input (pack MKR_VIDEO type or anything resolvable to a file).
  • shutter_frames (default 5, odd values from 1–31) - the averaging window; think "shutter angle". 5 is a gentle blur, 15+ is heavy streak.
  • strength (default 1.0) - how much of the averaged result replaces the original. 0 = no change.
  • direction - centered (past + future), forward (only later frames), or backward (only earlier frames). centered is what you want 99% of the time; the others are for stylized trails.
  • fallback_fps (24), output_format (auto/gif/webp/mp4/mov/webm), filename_prefix, subfolder, overwrite, optional filename_label - the standard pack save controls.

Outputs and install

video (MKR_VIDEO), output_path (the encoded file), and a summary JSON with the settings.

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

Restart, or install "MKRShift Nodes" via ComfyUI Manager. No pip deps, no models. ffmpeg required for encoding.

The classic mistake is cranking shutter_frames to the max and getting soup. Start at 5, nudge strength instead, and remember the AI-video-realism stack is motion blur + grain + a bit of vignetting - this node does the first one, and it does it without a single extra wheel installed.

CategoryMKRShift Nodes/Media/Video/FX

Inputs (10)

NameTypeDefaultDescription
video*
shutter_framesINT51–31
strengthFLOAT1.000–2
directionCOMBOcentered3 options: centered, forward, backward
fallback_fpsFLOAT24.01–240
output_formatCOMBOauto6 options: auto, gif, webp, mp4, mov, webm
filename_prefixSTRINGMKR_motion_blur
subfolderSTRING
overwriteBOOLEANfalse
filename_labeloptSTRING

Outputs (3)

NameTypeDescription
videoMKR_VIDEO
output_pathSTRING
summarySTRING