Nodes/ComfyUI-DragNUWA/Load MotionBrush From Optical Flow Without Model
ComfyUI Node

Load MotionBrush From Optical Flow Without Model

The Passthrough You Didn't Know You Needed

By chaojie·Created 3 years ago·Updated 2 years ago· 411
Load MotionBrush From Optical Flow Without Model
  • 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.

CategoryDragNUWA

Inputs (1)

NameTypeDefaultDescription
optical_flowOPTICAL_FLOW

Outputs (1)

NameTypeDescription
MotionBrushMotionBrush