Atlas Depth Combine ➕
Two depth maps, one result — the 'MoGe detail on V2 exterior' combo lives here
- depth_base
- depth_detail_src
- blend_mask
- depth
- report
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 underblend_mask×strength. Explicit control when you want region-by-region choice.
Inputs that matter
mode- the picker above (defaulthigh_freq_detail).strength(0–1, default 0.5) - blend amount in the detail/masked modes.detail_cutoff_px(4–1024, default 64) - only inhigh_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 inmaskedmode: 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_pxtoo 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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| depth_base | ATLAS_DEPTH_MAP | — | |
| depth_detail_src | ATLAS_DEPTH_MAP | — | |
| modeopt | COMBO | high_freq_detail | 4 options: high_freq_detail, min, max, masked |
| strengthopt | FLOAT | 0.500–1 | — |
| detail_cutoff_pxopt | INT | 644–1024 | high_freq_detail mode only. |
| blend_maskopt | MASK | masked mode only: 1 = take the source. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| depth | ATLAS_DEPTH_MAP | — |
| report | STRING | — |