DepthAnythingV3_MultiView
Consistent depth across multiple views
- da3_model
- images
- depth
- confidence
- ray_origin
- ray_direction
- extrinsics
- intrinsics
- sky_mask
- resized_rgb_image
- gaussian_ply_path
This is the node you reach for when a single image isn't enough - when you've got several views of the same scene, or the frames of a video, and you want depth that's consistent across all of them. Run each frame through the normal DepthAnything_V3 node independently and the depth wobbles frame to frame; the classic flicker problem. DepthAnythingV3_MultiView uses DA3's cross-view attention so the model looks at all the images together and keeps its depth estimates coherent between them.
Why this exists
Depth estimation has a long-standing weak spot: it's a per-image model, so running it frame by frame on a video produces flicker - the depth of a static wall shimmers because each frame is estimated in isolation. The community's usual answer was a video-native model like DepthCrafter. Depth Anything 3's answer is different and kind of clever: it was trained for any-view depth and pose, so it has genuine multi-view attention built into the main model. Feed it a batch of related images and it reasons about them jointly. That's what this node exposes. The README is blunt about it - "use the multi-view node to use the cross attention feature of the main class of models... to have a more consistent depth across frames of a video."
The catch, and it's important: this only pays off on models that actually have cross-view attention - the main series (Small/Base/Large/Giant) or Nested. On the Mono and Metric variants the images get processed independently anyway, so you lose the whole benefit. If you're using this node, load a main-series or Nested model in the loader.
Inputs and outputs that matter
da3_model(required) - a main-series or Nested model, per above.normalization_mode(default V2-Style) - same rule as the single-image node. V2-Style for ControlNet-style depth output, Raw if you're feeding the results into 3D reconstruction.images- your batch of views or video frames. This is where the batch goes in.invert_depth,resize_method,keep_model_size- the same optional knobs as the main node; leave them at defaults unless the depth comes out inverted (then flipinvert_depth).
Outputs mirror the single-image node but as batches: depth (the consistent per-frame depth - this is the one you want for video ControlNet or a depth-driven Wan/Qwen workflow), plus confidence, sky_mask, resized_rgb_image, the ray maps (ray_origin/ray_direction), and extrinsics/intrinsics as strings for downstream multi-view fusion. gaussian_ply_path is the Gaussian export, meaningful only on fine-tuned weights.
How you'd actually use it
Two real workflows. Smooth video depth: frames in, depth out, into a video ControlNet or a depth-aware video model - you get temporally stable depth without the frame-to-frame shimmer. Multi-view 3D: several photos of one object/scene in, then take the batched depth, confidence, sky_mask, and the extrinsics/intrinsics strings and hand them to DA3_MultiViewPointCloud to fuse them into one point cloud that's aware of where each camera was.
Common issues
If the depth still flickers, check your model - you almost certainly loaded a Mono or Metric variant, which don't get the cross-view benefit. Switch to Large or Nested. If you're running a long video and hitting VRAM limits, cross-view attention over a big batch is memory-hungry; for long clips, DepthAnythingV3_Streaming chunks the video and aligns the pieces instead, which is the better tool past a certain length. And the usual inverted-depth surprise applies here too - one toggle of invert_depth fixes it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| da3_model | DA3MODEL | — | |
| normalization_mode | COMBO | V2-Style | 3 options: Standard, V2-Style, Raw |
| imagesopt | IMAGE | Batch of images [N, H, W, 3] | |
| resize_methodopt | COMBO | resize | Model requires dimensions to be multiples of 14. |
| invert_depthopt | BOOLEAN | false | OFF (default): close=bright, far=dark. ON: far=bright, close=dark. |
| keep_model_sizeopt | BOOLEAN | false | Keep model's native patch-aligned output size instead of resizing back to original dimensions |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| depth | IMAGE | — |
| confidence | IMAGE | — |
| ray_origin | IMAGE | — |
| ray_direction | IMAGE | — |
| extrinsics | STRING | — |
| intrinsics | STRING | — |
| sky_mask | MASK | — |
| resized_rgb_image | IMAGE | — |
| gaussian_ply_path | STRING | — |