Extensions/Atlas Camera
ComfyUI Extension

Atlas Camera

Recover the camera from a single still (up to 8K) and build a color-managed projection scene for Nuke, Maya and USD, reviewable with simple camera moves in a real-time viewport.

By mikejamesvfx·Created 3 months ago·Updated a day ago· 1
mikejamesvfx/atlas-camera
Nodes121
On cloudLocal install
CategoryAtlas/06 · Patch & Repair, Atlas/01 · Input & Camera
Stars1
Updateda day ago

Nodes (121)

Atlas Add Patch View (multi-angle) 🩹

Atlas Add Patch View, angle by angle

Atlas/06 · Patch & Repair
Atlas Anchor Depth to Render 🪢

Making a per-frame estimate trust the build's scale

Atlas/01 · Input & Camera
Atlas Apply Depth Calibration 📐

Stop trusting your depth model's guess

Atlas/03 · Depth
Atlas Apply LUT (.cube) 🌈

Real .cube grading inside the graph, no OCIO required

Atlas/08 · Look & Render
Atlas Apply Scale References ✅

The one-click yes to your VLM's guess

Atlas/02 · Orient & Scale
Atlas Assess Image 🧭

A VLM reads your plate before you wire anything

Atlas/09 · QA & Gates
Atlas Assess Output 🧪

The end-of-line QA that writes its own report card

Atlas/09 · QA & Gates
Atlas Attach Source Plate 🎞

Give your solve the float-safe plate it deserves

Atlas/01 · Input & Camera
Atlas Viewport 🧊

The browser 3D view that turns a photo into a scene

Atlas/08 · Look & Render
Atlas Bounded Band 📏

Stop monocular depth from 'banana-ing' your foreground

Atlas/03 · Depth
Atlas Camera Move Preset 🎬

The viewport's move buttons, as a node

Atlas/advanced
Atlas Card Mask 🃏

Pull one object out of a photo solve as a real mask

Atlas/11 · Evidence Plate
Atlas Clean Plate Layer 🖼

One depth band of your 2.5D matte painting

Atlas/07 · Clean Plate & Inpaint
Atlas Clean Plate Stack 🧽 (up to 4 plates + alphas)

Four painted plates, one layered scene

Atlas/07 · Clean Plate & Inpaint
Atlas Composite Crop 📌

Paste the repaired ROI back without losing the matte

Atlas/advanced
Atlas Constrained Solve

Hand the solver your vanishing points and scale

Atlas/01 · Input & Camera
Atlas Crop ROI ✂️

One fill region, generation-ready, with its camera

Atlas/advanced
Atlas Crop Source Photo 📷✂️

Give your generator the subject with its context

Atlas/advanced
Atlas Deband 🎚

Kill the banding in your 8-bit-born plates

Atlas/08 · Look & Render
Atlas Debug Report 🔍

The one JSON file that tells you what your scene is made of

Atlas/08 · Look & Render
Atlas Decompose Camera

Pull the raw numbers out of your camera

Atlas/01 · Input & Camera
Atlas Decompose Solve

The gateway to your camera's numbers

Atlas/01 · Input & Camera
Atlas Define Shot Cam 🎬

One node to set your render camera format (and stop guessing at aspect ratios)

Atlas/05 · Geometry
Atlas Defocus (depth) 🌫

Depth-of-field you set in metres, not by hand-painting masks

Atlas/08 · Look & Render
Atlas Depth Anything V2 🧠

The quick depth preview — and why you probably want its sibling instead

Atlas/03 · Depth
Atlas Depth Band Split 🎚

One authoritative foreground/background boundary, shared by every band

Atlas/03 · Depth
Atlas Depth Combine ➕

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

Atlas/03 · Depth
Atlas Depth Detail Enhance 🔬

Emboss real surface detail into a depth map without wrecking its scale

Atlas/03 · Depth
Atlas Depth Layer Mask 🎭

The node that carves one depth band into a clean plate's masks

Atlas/03 · Depth
Atlas Depth Map 🌊

The depth node that actually feeds the geometry

Atlas/03 · Depth
Atlas Depth Outlier Mask 🛡

Find the pixels your depth model hallucinated, before they become stretched shards

Atlas/03 · Depth
Atlas Derive Interior Room 🛋

Floor, walls, ceiling from one interior photo

Atlas/05 · Geometry
Atlas Derive Projection Geometry 📽

Pick a scene type, get a projectable scene

Atlas/05 · Geometry
Atlas Derive Relief Mesh 🏔

The continuous depth-following mesh that turns a photo into a scene you can orbit

Atlas/05 · Geometry
Atlas Derive Roofs & Facades 🏛

The RANSAC node for sloped roofs and stepped facades

Atlas/05 · Geometry
Atlas Derive Towers & Spires 🗼

Walls that reach the real top

Atlas/05 · Geometry
Atlas Derive Walls 🧱

Flat wall blockout in one node — and why max_objects defaults to zero

Atlas/05 · Geometry
Atlas Director Take 🎬

Pull a Director take back into the graph — nine sockets of camera move

Atlas/10 · Export
Atlas Disocclusion Guide 🟣

Show a video model exactly what it must invent

Atlas/06 · Patch & Repair
Atlas Equirect Multi-View 🌐

A full 360° panorama becomes one solvable multi-camera scene

Atlas/01 · Input & Camera
Atlas Export Blender Scene

Get your solved scene into Blender without leaving ComfyUI

Atlas/10 · Export
Atlas Export Camera Path (USD) 🎥

Bake the viewport move into a time-sampled USD camera

Atlas/10 · Export
Atlas Export Maya Layers 🧊

Your whole layered projection stack, rebuilt as native Maya nodes

Atlas/10 · Export
Atlas Export Maya Review Scene

Open the solved camera in Maya with one click, relief mesh included

Atlas/10 · Export
Atlas Export Nuke Script

The recovered camera as a live Nuke projection script — actually verified in Nuke

Atlas/10 · Export
Atlas Export Nuke Layers 🎞

Export the whole depth-band stack to Nuke, layer by layer

Atlas/10 · Export
Atlas Export ACEScg Plate 📤

Get a real ACEScg EXR out of ComfyUI — the file-based color handoff

Atlas/10 · Export
Atlas Export Plate Handoff 📤

Write the export receipt before the export actually happens

Atlas/10 · Export
Atlas Export Relief Mesh (OBJ) 🗻

The depth-following mesh as an OBJ or GLB, projection baked into the UVs

Atlas/10 · Export
Atlas Export Review Package

Hand the whole solve to someone else to look at — as a package, not a screenshot

Atlas/10 · Export
Atlas Export Scene Package (.atlas)

Export the whole scene, not just the camera

Atlas/10 · Export
Atlas Export Solve JSON

The camera solve as a portable JSON file, so the geometry guys can read it too

Atlas/10 · Export
Atlas Export USD

The solved camera as a USD file for your USD pipeline

Atlas/10 · Export
Atlas Face Scale Reference 🙂

Get camera height from a face — the scale anchor that survives a crop

Atlas/02 · Orient & Scale
Atlas Fill Occluded 🕳️‍🩹

Fill the holes a camera move reveals — and register each fill back as geometry

Atlas/advanced
Atlas Fit Depth Calibration 📐

Teach your depth model to stop lying, using a LiDAR capture you trust

Atlas/03 · Depth
Atlas Grade 🎨

Match that AI patch to the plate without leaving ComfyUI

Atlas/08 · Look & Render
Atlas Gravity Compass 🧭

Tilt the world by dragging a compass instead of typing numbers

Atlas/02 · Orient & Scale
Atlas Gravity Override 🎚

When the solve's gravity is wrong and you know the right answer

Atlas/02 · Orient & Scale
Atlas Ground Depth Map

A ground-plane depth heatmap generated from the camera itself

Atlas/03 · Depth
Atlas Ground Plane 🟫

Place the ground by hand when the depth model is lying to you

Atlas/05 · Geometry
Atlas Horizon / Sky Mask

A sky mask from the solved horizon line, not from guessing

Atlas/04 · Masks
Atlas Inpaint Crop ✂

Crop before you inpaint

Atlas/07 · Clean Plate & Inpaint
Atlas Inpaint Stitch ✂

Paste your inpainted crop back into the plate without seams or misalignment

Atlas/07 · Clean Plate & Inpaint
Atlas Input 🎬

Photo in, solved camera and projection out

Atlas/01 · Input & Camera
Atlas Instance Mask (SAM3) 🎭

Pick one object out of a SAM3 separation without re-running the model

Atlas/04 · Masks
Atlas Interpass Gate 🚦

A quality gate that refuses to polish garbage

Atlas/advanced
Atlas Layer Plan 🥞

The node that tells you what actually needs a clean plate

Atlas/06 · Patch & Repair
Atlas Layer Preview 🎨

One image that shows what a layer will project — and which layer it is

Atlas/07 · Clean Plate & Inpaint
Atlas Learned Solve (GeoCalib) 🧠

The camera solver for AI images with no straight lines

Atlas/01 · Input & Camera
Atlas Load Camera Path (LTX) 🎥

Load a Director take as an LTX camera path — and don't skip the report

Atlas/01 · Input & Camera
Atlas Load Dynamic Plate 🌊

Drop an animated ocean into a solved still, without baking the camera move

Atlas/advanced
Atlas Load Plate 🎞

A colour-managed float plate loader that respects the data

Atlas/01 · Input & Camera
Atlas Load RAW (NEF/CR2/CR3/RAF/ARW) 📷

Shoot your own plate — NEF/CR2/CR3/RAF/ARW straight into the solve

Atlas/01 · Input & Camera
Atlas Load Solve JSON

Bring a solved camera back from disk

Atlas/01 · Input & Camera
Atlas Membrane Composite 🩹

Make generated fill actually match the plate

Atlas/advanced
Atlas Merge Geometry 🔀

Nuke-Merge for two independently-derived solves

Atlas/05 · Geometry
Atlas MoGe Normals 🧭

Keep your good depth, upgrade the normals

Atlas/03 · Depth
Atlas Move Budget 📐

How far can the camera move before the image tears?

Atlas/08 · Look & Render
Atlas Multi-View RAW Solve 📷📷

Two frames make the scale real

Atlas/01 · Input & Camera
Atlas Multi-View Burst Solve 📷🎞️

A folder of frames becomes a calibrated rig

Atlas/01 · Input & Camera
Atlas Occlusion Graph 🕸

The honest map of what hides what

Atlas/06 · Patch & Repair
Atlas Occlusion Mask 🕳

Know exactly where the primary camera is lying to you

Atlas/04 · Masks
Atlas Open Real Plate 📓

Open a photograph's evidence file without loading the photograph

Atlas/11 · Evidence Plate
Atlas Outpaint Depth 🪟

Give the outpainted ring a real surface underneath

Atlas/03 · Depth
Atlas Path Frame Index 🔢

Stop hand-typing the frames your camera path renders

Atlas/advanced
Atlas Path-Guided Hole Repair 🎥

Pick the exact holes to fix from the camera move itself

Atlas/06 · Patch & Repair
Atlas Planar Hole Patch ◩

Fill relief-mesh holes with conservative local planes

Atlas/06 · Patch & Repair
Atlas Plane Mattes 🧩

Turn fitted planes into projection layers — pixel by pixel

Atlas/05 · Geometry
Atlas Plate Layer 🎞 (any plate on any geometry)

Any plate on any geometry — the Nuke move

Atlas/07 · Clean Plate & Inpaint
Atlas Project 🎬

Atlas Project 🎬 — the file cabinet every Atlas export hangs on

Atlas/01 · Input & Camera
Atlas Read Locked Plate Plan 🔒

Check the contract before you let a model touch the plate

Atlas/11 · Evidence Plate
Atlas Real Plate To Scene 🔁

Turn a photograph's evidence record back into a 3D scene

Atlas/11 · Evidence Plate
Atlas Record Plate Attempt 🧾

Log a model attempt against a photograph — if the plan allows it

Atlas/11 · Evidence Plate
Atlas Reference-Object Scale 📏

Atlas Reference-Object Scale 📏 — measure the scene from a person, a door, a building

Atlas/02 · Orient & Scale
Atlas Register Plate (Float-Safe) 🎞

Atlas Register Plate (Float-Safe) 🎞 — your plate, but with its colour story attached

Atlas/01 · Input & Camera
Atlas Relief Geometry (MoGe-shaped) 🗺

The same measurement as the camera, on purpose

Atlas/01 · Input & Camera
Atlas Retopologize Layer 🔷

Atlas Retopologize Layer 🔷 — clean topology, live, with the projection UVs still correct

Atlas/05 · Geometry
Atlas Roll Trim 🎚

Atlas Roll Trim 🎚 — the nudge that makes the horizon read level

Atlas/02 · Orient & Scale
Atlas SAM3 Mask 🪄

Atlas SAM3 Mask 🪄 — open-vocabulary segmentation that runs on your Mac

Atlas/04 · Masks
Atlas Scale Override 📐

Atlas Scale Override 📐 — when you know the truth, tell the solve

Atlas/02 · Orient & Scale
Atlas Scene Health Gate 🩺

Atlas Scene Health Gate 🩺 — the pre-export check that won't let you ship a broken scene

Atlas/09 · QA & Gates
Atlas Scene Scale 📏

Stop hand-tuning ground-plane metres on every new plate

Atlas/02 · Orient & Scale
Atlas Scope Mask 🎯

Atlas Scope Mask 🎯 — the smart exclusion mask for the 2.5D layer stack

Atlas/04 · Masks
Atlas SDXL Inpaint (native) ✨

Atlas SDXL Inpaint (native) ✨ — SDXL inpaint that understands the camera

Atlas/07 · Clean Plate & Inpaint
Atlas Segmented SDXL Inpaint 🏢

Atlas Segmented SDXL Inpaint 🏢 — many holes, one pass, per-region attention

Atlas/07 · Clean Plate & Inpaint
Atlas Semantic Mask 🧩

Atlas Semantic Mask 🧩 — a deterministic mask that can't miss the way free text can

Atlas/04 · Masks
Atlas Shoot List 📸

Atlas Shoot List 📸 — stop inventing the missing pixels, go photograph them

Atlas/06 · Patch & Repair
Atlas Sky Dome Layer ☁

Atlas Sky Dome Layer ☁ — the classic DMP sky card, done properly

Atlas/07 · Clean Plate & Inpaint
Atlas Solve Burst Patch Crops 📷✂️

Atlas Solve Burst Patch Crops 📷✂️ — mine the burst for the frame that sees the hole

Atlas/06 · Patch & Repair
Atlas Solve Camera from Image

Atlas Solve Camera from Image — turning one photo into a real camera

Atlas/01 · Input & Camera
Atlas Solve Gate ✅

Atlas Solve Gate ✅ — don't burn the expensive minutes on a camera you haven't approved

Atlas/09 · QA & Gates
Atlas Solve Patch Views ⌖

Atlas Solve Patch Views ⌖ — which camera angle actually sees the hole?

Atlas/06 · Patch & Repair
Atlas Split Equirect 🌐

Atlas Split Equirect 🌐 — a 360° pano, cut into cameras Atlas can actually solve

Atlas/01 · Input & Camera
Atlas Stereo Render 👓

Atlas Stereo Render 👓 — geometry-true stereo from real projection meshes, not a depth warp

Atlas/08 · Look & Render
Atlas Unreal Camera Path (LTX) 🎥

An Unreal Sequencer move into LTX — without hand-rolling the axis math

Atlas/01 · Input & Camera
Atlas Unreal Depth Geometry (MoGe-shaped) 🗺

Your Unreal depth pass, served as MoGe-shaped metric depth for the warp

Atlas/01 · Input & Camera
Atlas USD Camera Loader

Already Have the Camera? Stop Solving for One

Atlas/01 · Input & Camera
Atlas Output Desk 🎛

Dock Your Viewport's Tools Somewhere Saner

Atlas/08 · Look & Render
Atlas VLM Scale Cues 👁

Ask a Vision Model How Tall the World Is

Atlas/02 · Orient & Scale
Atlas VP Visualization

See Which Lines the Camera Solver Believed

Atlas/08 · Look & Render
Readme
<p align="center"> <img src="assets/atlas_camera_icon.png" width="132" alt="Atlas Camera"> </p> <h1 align="center">Atlas Camera</h1> <p align="center"> <b>One photograph in. A metric pinhole camera and a colour-managed projection<br> setup out — for Nuke, Maya, USD and Blender.</b> </p> <p align="center"> <a href="https://github.com/mikejamesvfx/atlas-camera/actions/workflows/tests.yml"><img src="https://github.com/mikejamesvfx/atlas-camera/actions/workflows/tests.yml/badge.svg?branch=main" alt="tests"></a> <a href="https://registry.comfy.org/nodes/atlas-camera"><img src="https://img.shields.io/badge/ComfyUI_Registry-atlas--camera-eaa03a" alt="ComfyUI Registry"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-2fb7a6" alt="MIT license"></a> <img src="https://img.shields.io/badge/python-3.10+-c4b29a" alt="Python 3.10+"> <a href="https://mikejamesvfx.com"><img src="https://img.shields.io/badge/a-mikejamesvfx_tool-c4b29a" alt="a mikejamesvfx tool"></a> </p>

Start here

Install into ComfyUI, then load examples/atlas_input_quickstart_workflow.json.

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

Or install from the ComfyUI Registry.

That workflow is the whole tool in one node. Point its LoadImage at any photograph and queue:

LoadImage → AtlasInput → solved camera + projection geometry + viewport

AtlasInput is the front door. It runs the solve, derives projection geometry, and hands you a scene you can look through — one node, sensible defaults, no wiring. Everything else in the pack exists to take over a stage of that chain once you need to.

In the ComfyUI Add-Node menu, Atlas holds ten numbered folders in pipeline order01 · Input & Camera through 10 · Export — so the menu reads as the job rather than as an alphabet. Atlas/advanced holds every gated node (experimental, legacy, iOS): still supported, still tested, just not where you start.

What comes out

  1. Solve — the camera from one photograph: focal length, orientation and horizon, with a confidence value. Deterministic geometric solve, or a learned prior (GeoCalib) for harder frames.
  2. Project — projection geometry (relief mesh or fitted primitives), with the plate cast back through the recovered camera.
  3. Review — a real-time fullscreen viewport with simple camera moves — dolly, orbit, pan — at your delivery resolution.
  4. Export — a native setup for Nuke (.nk + Python), Maya (.ma), USD, Blender, and a relief mesh (OBJ/GLB with the projection baked into UVs). Verified in the real applications.

It solves a camera, not a mesh. Where most 3D nodes generate geometry from an image, Atlas does the inverse-problem job a projection pipeline actually needs: recover a real metric pinhole camera, then project the photograph onto derived geometry. From the recovered viewpoint the plate reassembles exactly; scale error shows only as parallax on a move — never as smeared texture.

Colour-managed and float-safe throughout: plates are tracked by reference in their working colourspace (ACEScg) and bit depth (EXR 16/32-bit float), the projection path stays floating-point, and it hands off to OpenColorIO, Nuke, Maya and Resolve. Render format is a project-level camera up to 8192 px.

Shoot it yourself: camera RAW → ACEScg

One photograph is still the input — but when that photograph is a camera RAW off your own body, the solve stops guessing and starts measuring.

AtlasLoadRAW → solve (measured focal + sensor) → … → AtlasExportPlateEXR → Nuke

AtlasLoadRAW 📷 reads NEF / CR2 / CR3 / RAF / ARW through a single rawpy demosaic and replaces the Adobe Camera Raw round trip entirely:

  • measured intrinsics, not inferred. EXIF plus a curated sensor registry gives real focal length and sensor width, so the solve starts from the physical lens instead of a learned prior's estimate.
  • one demosaic, two outputs. A display tensor for the graph and a scene-linear EXR sidecar, geometrically identical by construction — the sidecar is what the DCC gets, so nothing downstream inherits an 8-bit preview.
  • lens distortion handled honestly. Optional lensfun undistort straightens the plate for the solve, and the Nuke export writes a redistort_stmap.exr beside the script so comp can put the distortion back over the render. Solve on straight lines, deliver on the real lens.

The colour path is Atlas's own, backed by OpenImageIO's built-in ACES config — no $OCIO to configure and no third-party colour pack required. AtlasLoadPlate reads EXR/DPX/TIFF as float, AtlasExportPlateEXR writes the ACEScg handoff resolving the target space by OCIO role, and AtlasApplyLUT applies a Resolve/Iridas .cube with a native parser. Install with [oiio] and [raw]; see docs/DCC_EXPORTS.md and the colour-managed section of the ecosystem guide.

Two or three frames instead of one? AtlasMultiViewSolve and AtlasMultiViewSolveBurst register a short handheld burst into a calibrated rig — the only path that yields a measured metric baseline rather than an inferred one. Single-photo stays the front door; this is the upgrade when you control the shoot.

Install tiers

The dependency contract has three tiers: the schema, solve JSON and DCC exporters are dependency-free; numerical camera recovery needs NumPy; automatic line detection needs NumPy + OpenCV ([vision]). Every node registers without heavy dependencies; a GPU is only needed for the optional neural features.

| Tier | Install | Adds | |---|---|---| | Core | (nothing) | Schema, solve JSON, masks, DCC export — pure Python, no GPU | | [vision] | numpy + opencv | Vanishing-point camera solve with line detection + debug overlays | | [neural] | torch + GeoCalib | Learned solve, monocular depth, depth-driven geometry, patches |

Depth Anything V2 (V2-Metric-Outdoor) is the default depth backend — Apache- licensed and transformers-only, so [neural] needs no extra install. MoGe-2 ([moge], interior specialist) and Depth Anything 3 ([neural-da3]) are selectable alternatives. Full setup is in INSTALL.md.

Beyond the front door

Once AtlasInput isn't enough, the pack opens up stage by stage: a tiered confirm-to-adopt metric scale cascade, composable geometry strategies combined Nuke-Merge-style, the 2.5D matte-painting layer stack (sky dome, depth-band clean plates, edge mattes, hole masks), camera-path authoring with baked frames, and per-layer exports.

Rather than list them here, the full catalogue — every node, its inputs, outputs and the rule it obeys — lives in docs/NODE_CATALOG.md. For how the pieces fit together, see the ecosystem guide.

Ten more workflows ship alongside the quickstart in examples/: the layered 2.5D projection stack, a same-camera clean plate, multi-angle and ROI-registered patch repair, camera moves, export fan-out across every DCC, burst multi-view solving, photographed hole patches from burst frames, a RAW + multi-view + patch chain, and the Blender massing bridge. Point any of their LoadImage nodes at a photograph of your own.

Dynamic Plates turn one time-varying region of the solved still — ocean, cloud, smoke — into an animated projection layer. Atlas owns the shot; a video model only makes the region move. The plate's crop camera stays fixed as the projector, so the camera move is never baked into the generated footage. Build a plate with python -m atlas_camera.dynamic, then load it into the viewport with Atlas Load Dynamic Plate 🌊 — see docs/DYNAMIC_PLATES.md.

Experimental nodes stay hidden unless you set ATLAS_EXPERIMENTAL=1 before launching ComfyUI (ATLAS_LEGACY_NODES and ATLAS_IOS gate the other two tiers). Nothing in the default pack needs Docker or a user-cloned research model. The experimental Blender bridge drives a headless Blender ≥ 4.2 for massing and mesh import — it is gated, and everything else works without it.

Documentation

License

Atlas Camera is MIT — free for commercial use. It vendors nothing restrictive; every optional model or package is installed by the user, and its node fails soft with an informative message when absent.

No node Atlas registers depends on a non-commercial model. One caveat remains and it is yours to choose: Depth Anything V2's large weights are CC BY-NC 4.0, while its small/base weights are Apache 2.0 — pick the variant that suits your use. Everything else — the solve, geometry, layer stack, viewport, and the full OpenColorIO output path — is unrestricted. Full map in THIRD_PARTY.md.


<p align="center"><sub>A <a href="https://mikejamesvfx.com">mikejamesvfx</a> tool · MIT · built for matte painters and environment artists.</sub></p>