Atlas Shoot List πΈ
Atlas Shoot List πΈ β stop inventing the missing pixels, go photograph them
- solve
- reference_image
- solve
- project_path
- report
AtlasShootList is the pack's reminder that you own a camera. Every hole in your plate that Atlas fills is, at some level, invented - inpainting, a learned model's guess, an edge-dilated smear. But a matte painter with a camera can often just go outside and photograph the missing material: the paving, the brick, the render, the tarmac. Not the specific occluded scene, which might be a continent away - the same kind of surface, at the same angle, in the same light. That's what this node turns your project into: a shooting brief a photographer can actually act on.
The clever part is that Atlas already knows exactly what's missing. AtlasOcclusionGraph enumerates one node per fitted surface (with its plane and depth range) and one edge per silhouette tear (with its pixel count), and AtlasLayerPlan decides which of those need a clean plate. What was missing was any way to state that in photographer terms. AtlasShootList writes a project file that says, per hole: what to photograph (the semantic concept from the layer plan), at what angle (incidence to the surface - 0 is square-on, 90 is edge-on), and the framing and distance context that makes the shot match the plate.
Inputs
- solve - must carry an occlusion graph, so run
AtlasOcclusionGraphfirst. Feed a bare solve and you'll get nothing useful out. - reference_image - the plate itself, written alongside the project as the lighting and material reference to match by eye.
- output_dir / project_name - where the brief lands (blank = ComfyUI's output dir under
atlas_shoot/). - min_tear_px - the filter with an opinion: holes smaller than this aren't worth a trip with a camera and are left to the inpainter. Default 400px is a sensible bar for "not worth the walk."
Outputs: the solve (unchanged), project_path (where the brief was written), and a report.
Why this is the honest fix
The KB's inpainting essay has a version of this argument: masked inpainting's unique strength is only-masked, bit-identical repair - but it's still a generated answer, and generated texture drifts. A photographed patch is measured reality: real brick, real shadow angle, real grain. It won't always be practical (you can't shoot the building that's a continent away), but when the missing surface is a generic material, this turns a hole that would have been invented into a hole that gets measured. The README's patch workflows - multi-angle and ROI-registered repair, photographed hole patches from burst frames - all lean on this exact idea.
Gotchas
The output is only as good as the occlusion graph feeding it - skip AtlasOcclusionGraph and the brief is empty, not wrong. And remember it's a brief, not a magic texture: someone still has to go shoot, and the shot has to match the incidence angle the file specifies or it won't register later. It's the rare ComfyUI node whose bottleneck is your legs.
Install
Core tier, no extra dependencies:
cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git
Restart, or install via ComfyUI Manager ("atlas-camera"). It's under Atlas/06 Β· Patch & Repair.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| solve | ATLAS_SOLVE | Must carry an occlusion graph β run AtlasOcclusionGraph first. | |
| reference_imageopt | IMAGE | The plate. Written alongside the project as the lighting and material reference to match by eye. | |
| output_diropt | STRING | Where to write the project. Blank = ComfyUI's output directory under atlas_shoot/. | |
| project_nameopt | STRING | shoot | β |
| min_tear_pxopt | INT | 4000β1000000 | Holes smaller than this are not worth a trip with a camera and are left to the inpainter. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| solve | ATLAS_SOLVE | β |
| project_path | STRING | β |
| report | STRING | β |