Load MotionBrush From Optical Flow Without Model
The Passthrough You Didn't Know You Needed
- optical_flow
- MotionBrush
Load MotionBrush From Optical Flow Without Model is the pack's most honest node: it takes an OPTICAL_FLOW tensor in and returns it unchanged as a MotionBrush. Reading the source, run_inference literally returns the input. No resizing, no frame packing, no model needed. It's a type-conversion node in the loosest sense - the same data, wearing a different hat.
So why does it exist? Because ComfyUI's typing is strict and the pack's two flow domains are walled off from each other. Flow preprocessors (like Unimatch's Unimatch_OptFlowPreprocessor) emit OPTICAL_FLOW. The run and composite nodes want MotionBrush. Something has to stand at the border and say "yes, this is now a brush," and in the model-typed universe that conversion also involves resizing to the model's resolution - which is why Load MotionBrush From Optical Flow exists as the real converter. This node is the lightweight variant for when you don't want to pay for a model load and you're confident your flow is already the size and frame count you'll run with.
Inputs and output
- optical_flow - the input tensor.
- Output: a
MotionBrush- the same tensor, now acceptable to DragNUWA Run MotionBrush, CompositeMotionBrushWithoutModel, and friends.
When you'd actually use it
Honestly: rarely, and mostly as glue. If your flow preprocessor already produces output at the exact model_length and resolution you're targeting, this node lets you skip the model-typed loader entirely and go straight to a brush. It also plays nicely with the "Without Model" philosophy - you can composite flow-derived motion with CompositeMotionBrushWithoutModel and never touch a checkpoint until the final run.
The flip side of the honesty is the trap: because nothing here checks or resizes, whatever shape your flow has is whatever shape your brush has. If the flow's frame count doesn't cover model_length, or its resolution doesn't match the run node's checkpoint, the mismatch surfaces later as dead zones, misaligned motion, or a shape error in the run node - and this node will have been zero help catching it. The model-typed Load MotionBrush From Optical Flow at least normalizes the flow to the model's geometry; this one trusts you completely.
Given that, treat it as a convenience for already-aligned pipelines, not as a tool for the general case. And the pack's standing advice applies: keep resolutions and frame counts consistent across every node, and remember the output quality ceiling is 2024-era SVD - no type conversion fixes that.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| optical_flow | OPTICAL_FLOW | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MotionBrush | MotionBrush | — |