DragNUWA Run MotionBrush
Running DragNUWA From a Motion Brush
- model
- image
- motion_brush
- IMAGE
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
DragNUWAobject from Load CheckPoint DragNUWA. - image - the starting frame. Same center-crop behavior as DragNUWA Run: it gets resized and cropped to whatever
dimensionyour checkpoint node is set to. - motion_brush - the
MotionBrushtensor. 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'smodel_lengthand 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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | DragNUWA | — | |
| image | IMAGE | — | |
| motion_brush | MotionBrush | — | |
| inference_batch_size | INT | 11–1 | — |
| motion_bucket_id | INT | 41–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |