# MotionBlur

> Realistic motion blur worked out from the motion in the clip itself (Kronos' motion estimation): Shutter Samples in-between images over Shutter Time frames, averaged.

Realistic motion blur worked out from the motion in the clip itself (Kronos' motion estimation): Shutter Samples in-between images over Shutter Time frames, averaged. Vector Detail sets how fine the motion is.

| Node | MotionBlur |
|---|---|
| Menu | Filter › MotionBlur |
| **Names in each format** | |
| .oink comp (JSON) | `"type": "OC_N_motionblur"` |
| .nk script | `MotionBlur` ([how .nk import works](/docs/nuke-users/nk-import)) |
| Python | `nuke.createNode("MotionBlur")` |
| Assistant (MCP) | `create_node(type="MotionBlur")` |
| Tab search | `motionblur`, or its initials `mb` |

![MotionBlur properties](/shots/nodes/motionblur@2x.webp)

## Inputs and outputs

| Port | Name | Type |
|---|---|---|
| input 0 | Source | image |
| output 0 | Image | image |

## Knobs

Panel tab **MotionBlur**, in panel order.

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `useGPUIfAvailable` | Use GPU if available | bool | `true` |  | `useGPUIfAvailable` |  |
| `shutter_samples` | Shutter Samples | float | `3` | 1 to 64 (integer) | `shutterSamples` |  |
| `shutter_time` | Shutter Time | float | `0.75` | 0 to 2 | `shutterTime` |  |
| `motion_estimation` | Method | menu | `Regularized` | Local, Regularized | `motionEstimation` |  |
| `vector_detail` | Vector Detail | float | `0.2` | 0.01 to 1 | `vectorDetail` |  |
| `resample_type` | Resampling | menu | `Bilinear` | Bilinear, Lanczos4, Lanczos6 | `resampleType` |  |
| `matte_channel` | Matte Channel | menu | `None` | None, Source Alpha, Source Inverted Alpha, Matte Luminance, Matte Inverted Luminance, Matte Alpha, Matte Inverted Alpha | `matteChannel` |  |
| `flow_model` | flow model | menu | `AUTO` | AUTO (Auto (by free GPU memory)), sea-raft-m (SEA-RAFT M), sea-raft-s (SEA-RAFT S) |  |  |

### Other knobs (Python, .nk and the assistant; not on the panel)

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `gl_color` | Viewer Controls Color | float ×3 | `0, 0, 0` | 0 to 1 |  |  |
| `postage_stamp_frame` | Static Frame | int | `1` | -2147483648 to 2147483647 |  |  |
| `lifetimeStart` | Lifetime Start | int | `0` | -2147483648 to 2147483647 |  |  |
| `lifetimeEnd` | Lifetime End | int | `100` | -2147483648 to 2147483647 |  |  |
| `useLifetime` | Use Lifetime | boolean | `false` |  |  |  |
| `cached` | Cached | boolean | `false` |  |  |  |
| `bookmark` | Bookmark | boolean | `false` |  |  |  |
| `dope_sheet` | Dope Sheet | boolean | `false` |  |  |  |
| `clone_group` | Clone Group | string |  |  |  |  |
| `link_source` | Link Source | string |  |  |  |  |
| `link_overrides` | Link Overrides | string |  |  |  |  |
| `split_views` | Split Views | string |  |  |  |  |
| `timing` | Timing | enum | `speed` | speed, input_speed, frame |  |  |
| `speed` | Output Speed | float | `0.5` | -4 to 4 |  |  |
| `input_speed` | Input Speed | float | `0.5` | 0.001 to 4 |  |  |
| `source_frame` | Frame | float | `1` | -3.4028234663852886e+38 to 3.4028234663852886e+38 |  |  |
| `use_input_range` | Input Range From Source | boolean | `true` |  |  | Input first/last and output first = the upstream clip's frame range |
| `input_first` | Input First | int | `1` | -2147483648 to 2147483647 |  |  |
| `input_last` | Input Last | int | `100` | -2147483648 to 2147483647 |  |  |
| `output_first` | Output First | int | `1` | -2147483648 to 2147483647 |  | Output frame of the input's first frame (Nuke: the input first) |
| `channels` | Channels | enum | `all` | all, rgba |  |  |
| `method` | Method | enum | `motion` | nearest, blend, motion, rife |  |  |
| `use_input_vectors` | Use Input Vectors | boolean | `true` |  |  | Use the input's motion / occlusion layers when present (else run AI flow) |
| `strength` | Strength | float | `1.5` | 0 to 5 |  |  |
| `smoothness` | Smoothness | float | `0.5` | 0 to 1 |  |  |
| `auto_shutter_time` | Automatic Shutter Time | boolean | `false` |  |  |  |
| `output` | Output | enum | `Result` | Result, Matte, Foreground, Background |  |  |
| `flicker_compensation` | Flicker Compensation | boolean | `false` |  |  |  |
| `weight_red` | Weight Red | float | `0.3` | -3.4028234663852886e+38 to 3.4028234663852886e+38 |  |  |
| `weight_green` | Weight Green | float | `0.6` | -3.4028234663852886e+38 to 3.4028234663852886e+38 |  |  |
| `weight_blue` | Weight Blue | float | `0.1` | -3.4028234663852886e+38 to 3.4028234663852886e+38 |  |  |
| `vector_spacing` | Vector Spacing | int | `20` | 1 to 2147483647 |  |  |
| `show_vectors` | Overlay Vectors | boolean | `false` |  |  |  |

## Knob names in .nk scripts

| .nk knob | Knob here |
|---|---|
| `shutterSamples` | `shutter_samples` |
| `shutterTime` | `shutter_time` |
| `motionEstimation` | `motion_estimation` |
| `vectorDetail` | `vector_detail` |
| `resampleType` | `resample_type` |
| `matteChannel` | `matte_channel` |

Other .nk knobs use the same name here. See [.nk import](/docs/nuke-users/nk-import).


---
Sources: opencomp_core/nodes/filter/motion_nodes.py, opencomp_electron/src/components/properties/knobSchema.ts, opencomp_core/nodes/help/motionblur.md, opencomp_core/nk/mapping.py
