Nodes/Atlas Camera/Atlas Shoot List πŸ“Έ
ComfyUI Node

Atlas Shoot List πŸ“Έ

Atlas Shoot List πŸ“Έ β€” stop inventing the missing pixels, go photograph them

By mikejamesvfxΒ·Created 3 months agoΒ·Updated a day agoΒ· 1
Atlas Shoot List πŸ“Έ
  • solve
  • reference_image
  • solve
  • project_path
  • report
β—„output_dirβ–Ί
β—„project_nameshootβ–Ί
β—„min_tear_px400β–Ί

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 AtlasOcclusionGraph first. 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.

CategoryAtlas/06 Β· Patch & Repair

Inputs (5)

NameTypeDefaultDescription
solveATLAS_SOLVEMust carry an occlusion graph β€” run AtlasOcclusionGraph first.
reference_imageoptIMAGEThe plate. Written alongside the project as the lighting and material reference to match by eye.
output_diroptSTRINGWhere to write the project. Blank = ComfyUI's output directory under atlas_shoot/.
project_nameoptSTRINGshootβ€”
min_tear_pxoptINT4000–1000000Holes smaller than this are not worth a trip with a camera and are left to the inpainter.

Outputs (3)

NameTypeDescription
solveATLAS_SOLVEβ€”
project_pathSTRINGβ€”
reportSTRINGβ€”