Nodes/ComfyUI-DragNUWA/DragNUWA Run MotionBrush
ComfyUI Node

DragNUWA Run MotionBrush

Running DragNUWA From a Motion Brush

By chaojie·Created 3 years ago·Updated 2 years ago· 411
DragNUWA Run MotionBrush
  • model
  • image
  • motion_brush
  • IMAGE
inference_batch_size1
motion_bucket_id4

DragNUWA Run MotionBrush is the sibling of DragNUWA Run, and it's the one you graduate to once you want to move whole regions instead of a handful of drag handles. Same SVD backbone, same 14-frame output, same slow-but-worth-it inference - but instead of a JSON blob of tracking points, it takes a MotionBrush.

A motion brush is just a dense flow field: a (frames, height, width, 2) tensor where every pixel carries its own motion vector for every frame. Where DragNUWA Run makes you specify maybe a half-dozen sparse trajectories, a brush says "this entire area of the image should move like this." It's strictly more expressive, which is why the pack's fancier workflows (instant camera moves, object-only motion, optical-flow-driven motion) all funnel into this node rather than the point-based one.

Inputs

  • model - the DragNUWA object from Load CheckPoint DragNUWA.
  • image - the starting frame. Same center-crop behavior as DragNUWA Run: it gets resized and cropped to whatever dimension your checkpoint node is set to.
  • motion_brush - the MotionBrush tensor. You get this from any brush generator in the pack: InstantCameraMotionBrush, InstantObjectMotionBrush, BrushMotion, the tracking-points loaders, or the optical-flow loaders. Composite several and feed the result here. The brush's model_length and resolution should match your checkpoint - mismatched frames counts are the classic "shapes don't line up" error.
  • motion_bucket_id - 1-100, default 4. Same global motion-strength dial as the point-based run node.

inference_batch_size is in the schema but locked to 1. Ignore it.

Output

One IMAGE batch, 14 frames by default. Wire it to VHS_VideoCombine (VideoHelperSuite) for an actual .mp4, or into Get First Image / Get Last Image if you're chaining clips.

Why you'd pick this over DragNUWA Run

Two reasons. First, regional control: a brush can move a car forward while leaving the background dead still, or spin the camera without touching a moving subject - the point-based node can't express "everything except this mask moves." Second, reusability: the Instant brushes generate a full camera pan/zoom in one click, and CompositeMotionBrush lets you layer them. For the one-shot "drag this thing along a path" job, DragNUWA Run is simpler. For anything compositional, this is the node.

Gotchas

The brush is generated at a specific resolution and frame count, and it's applied to whatever dimension your checkpoint uses - if you swap dimensions after building brushes, regenerate them. And remember the pack's environmental baggage applies here too: hardcoded cuda:0 on load, a heavyweight requirements.txt, and long first inference. You'll also find the InstantObjectMotionBrush defaults assume the mask bbox is meaningful, so a sloppy all-frame mask gives you a brush that's basically the whole image moving.

One honest note: this whole pack is 2024-era. The look is dated next to modern image-to-video, and the brush pipeline is genuinely fiddly to learn. But as a mechanism - dense flow control over an SVD backbone - there's still nothing else in the ComfyUI ecosystem that works quite like it, and the instant camera-move workflow is legitimately fun.

CategoryDragNUWA

Inputs (5)

NameTypeDefaultDescription
modelDragNUWA
imageIMAGE
motion_brushMotionBrush
inference_batch_sizeINT11–1
motion_bucket_idINT41–100

Outputs (1)

NameTypeDescription
IMAGEIMAGE