Atlas Decompose Camera
Pull the raw numbers out of your camera
- camera
- fx
- fy
- cx
- cy
- cam_x
- cam_y
- cam_z
- focal_mm
- fov_h_deg
Inside every ATLAS_CAMERA is a pinhole camera: focal length, principal point, position, and a field of view. Usually you don't need to see them - the pack's projection, viewport, and exporters all consume the camera as an opaque object. But the moment you want to drive something else with the numbers - a ControlNet adapter, a custom 3D widget, a logging node, a sanity check - Atlas Decompose Camera is the node that pulls them out as plain floats.
What comes out
Feed it a camera (ATLAS_CAMERA) and you get nine floats:
fx,fy- focal lengths in pixels. These are the numbers that actually define the lens in a pinhole model.fyfalls back tofxwhen unset.cx,cy- the principal point (the optical center in pixels). For an unmodified solve this is the image center; a crop likeAtlasCropROIproduces a camera whose principal point is shifted - that's how the crop renders 1:1 with the plate.cam_x,cam_y,cam_z- the camera's world position.focal_mm- the focal length in millimetres, for when you want to talk about the lens rather than the pixel grid.fov_h_deg- the horizontal field of view in degrees, computed fromfxand the image width. The most useful single number for "how wide is this lens?"
Why you'd wire it
Three honest use cases:
- Sanity-checking a solve. After
AtlasDecomposeSolvegives you the camera, run it through here and readfov_h_degandfocal_mm. A 50 mm lens on full-frame should give roughly a 39° horizontal FOV at the expected resolution; if the numbers are absurd, the solve (or yourfocal_length_mmhint) was wrong. - Feeding a custom consumer. ComfyUI doesn't have a
FLOAT× 9 shortage - these plain numbers route into any node that wants a focal or a position, without the foreignATLAS_CAMERAtype blocking you. - Understanding a crop. Wire
AtlasCropROI's derived camera in and watchcx/cyshift off center - it demystifies the whole "camera-matrix crop" trick in one glance.
The honest limits
It's a pure read-only extraction node - nothing is computed that the camera doesn't already hold (aside from fov_h_deg, a two-line trig function). No extras, no GPU, no models, pack's usual clone-and-go install. The one trap: it takes an ATLAS_CAMERA, not an ATLAS_SOLVE - if you have a solve, run it through AtlasDecomposeSolve first (which also hands you the camera alongside confidence and the solve JSON). The two decompose nodes are a pair: one unwraps the solve, this one unwraps the camera.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| camera | ATLAS_CAMERA | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| fx | FLOAT | — |
| fy | FLOAT | — |
| cx | FLOAT | — |
| cy | FLOAT | — |
| cam_x | FLOAT | — |
| cam_y | FLOAT | — |
| cam_z | FLOAT | — |
| focal_mm | FLOAT | — |
| fov_h_deg | FLOAT | — |