Nodes/Atlas Camera/Atlas Depth Combine ➕
ComfyUI Node

Atlas Depth Combine ➕

Two depth maps, one result — the 'MoGe detail on V2 exterior' combo lives here

By mikejamesvfx·Created 2 months ago·Updated a day ago· 1
Atlas Depth Combine ➕
  • depth_base
  • depth_detail_src
  • blend_mask
  • depth
  • report
modehigh_freq_detail
strength0.50
detail_cutoff_px64

There's no single depth model that's best at everything, and AtlasDepthCombine is this pack's answer to that - the node that lets you keep the strengths of two. The canonical use case, from the pack's own docs: MoGe's fine surface detail grafted onto a Depth Anything V2 outdoor far-field. V2's far field behaves beautifully on exteriors while MoGe's runs away; MoGe's near-field detail beats V2's. high_freq_detail mode gives you both.

It's a compositing node for depth, and once you've got two ATLAS_DEPTH_MAPs in a graph - say a metric LiDAR/Record3D capture plus a MoGe pass, or two model backends - it's the tool that fuses them without destroying either's contribution.

How it works

You always wire in a depth_base and a depth_detail_src (both ATLAS_DEPTH_MAP). The base carries the metric far-field and the scale; the source contributes the fine structure. The default mode, high_freq_detail, grafts the source's high-frequency detail onto the base's metric field - the tooltip spells it as "MoGe detail on V2 exterior" - done in log-domain with median preservation, so the base's metric scale is untouched. That last bit matters: the whole reason you trust the base's scale is that the detail pass can't tilt or re-scale it.

The other three modes are simpler compositing ops:

  • min / max - per-pixel envelope. Take the nearer or farther of the two at every pixel. Handy for combining a depth map with a hole/validity mask's partner.
  • masked - a lerp between the two under blend_mask × strength. Explicit control when you want region-by-region choice.

Inputs that matter

  • mode - the picker above (default high_freq_detail).
  • strength (0–1, default 0.5) - blend amount in the detail/masked modes.
  • detail_cutoff_px (4–1024, default 64) - only in high_freq_detail: the wavelength cutoff. Fine detail above this frequency comes from the source; the long wavelengths stay with the base. This is your "how much of the source's texture comes along" dial.
  • blend_mask - only in masked mode: 1 = take the source.

Outputs: depth (the combined ATLAS_DEPTH_MAP, returned as a copy - the inputs are never mutated) and a report string. The report does something worth reading: it warns when you're mixing a metric and a relative map. The output carries the base's is_metric flag, so if one side isn't metric, the result loudly isn't either.

Where people get tripped up

  • Feeding it the preview node's IMAGE. It wants ATLAS_DEPTH_MAPs on both inputs - the display-node depth won't connect.
  • Ignoring the metric/relative warning. If you combine a metric map with a relative one, the output is only as trustworthy as its weakest side. The report says so; believe it.
  • Cutoff too low. Drop detail_cutoff_px too far and you're grafting near-field noise onto the far field. Start at the 64 default and work down.

Install

Same pack, same clone:

cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git

Restart (or Manager → "atlas-camera"). The node logic itself is light, but both inputs come from depth models, so in practice you're on the [neural] tier (torch + GeoCalib + transformers, GeoCalib from GitHub) - and the [moge] extra if you're using MoGe for the detail side. Watch the kornia <0.8.3 cap so the neural extras don't break LTXVideo (pip install "kornia==0.8.2" repairs it). Brand-new pack, no community folklore yet - the report string is your diagnostic.

CategoryAtlas/03 · Depth

Inputs (6)

NameTypeDefaultDescription
depth_baseATLAS_DEPTH_MAP
depth_detail_srcATLAS_DEPTH_MAP
modeoptCOMBOhigh_freq_detail4 options: high_freq_detail, min, max, masked
strengthoptFLOAT0.500–1
detail_cutoff_pxoptINT644–1024high_freq_detail mode only.
blend_maskoptMASKmasked mode only: 1 = take the source.

Outputs (2)

NameTypeDescription
depthATLAS_DEPTH_MAP
reportSTRING