Equirectangular Processor (All-in-One)
Rotate, then crop to 180° or square, in a single node
- image
- processed_image
Most real workflows with this pack are the same shape: load a 360° image, reorient it so the view is right, and crop it down to something a flat screen can show. Equirectangular Processor collapses that whole shape into one node. It's the All-in-One for the exact reason you'd expect: rotate, then optionally crop to 180° or to a centered square, without stringing together three nodes and a pile of wires.
The v2.0 refresh embedded every control directly in the node - no external parameter widgets, just sliders, toggles, and dropdowns sitting on the node itself. If you do this pipeline constantly (and who doesn't, given how often a "post a panorama" workflow ends with "now crop it"), this is the node that removes the ceremony.
How it works
It's literally the pack's Rotate and Crop machinery run in sequence. The rotation is the same spherical transform (scipy rotation matrix, OpenCV inverse remap, BORDER_WRAP for wraparound), and then, if the crop toggles are set, the result gets cropped. The one ordering rule you need to remember: square crop takes precedence over 180° crop. If both crop_to_180 and crop_to_square are on, you get the square, and the 180° settings are ignored. That's a deliberate design choice, but it's exactly the kind of thing that surprises you at midnight.
Inputs that matter
image(required) - equirectangular tensor (B,H,W,C) in [0,1].yaw_rotation/pitch_rotation/roll_rotation/horizon_offset- the rotation controls, same semantics as the Rotate node. Notepitch_rotationdefaults to −65°, so set it to 0 if you want the rotation to start as a true no-op.crop_to_180(default off) - if on, crops to the 180° window usingoutput_width,output_height, and the aspect logic from the Crop 180 node.crop_to_square(default off) - if on, center-crops to a square; wins over the 180° crop.output_width(1024) /output_height(512) - used for the 180° crop path.interpolation- lanczos default; same GPU-fallback caveats as everywhere else in the pack.
Output is a single processed_image.
Installing it
Install the pack once and this node is there with the rest - Manager search "LatLong", or:
cd ComfyUI/custom_nodes
git clone https://github.com/cedarconnor/comfyui-LatLong
cd comfyui-LatLong
pip install -r requirements.txt
Restart ComfyUI. Node under LatLong. Deps: numpy, opencv-python, scipy, torch, Pillow; no models to fetch.
Gotchas
The square-beats-180 precedence is the headline trap, so I'll say it twice: if your square crop is mysteriously winning, you left both toggles on. Second, remember this node has no tiling control - the full Rotate node got the 16K tiled-processing path, this one didn't list it, so keep the All-in-One on sane resolutions and reach for the dedicated Rotate when you're feeding it a 16K monster. And since it's a convenience node, the moment your needs grow past "rotate + one crop," you'll be dropping back to the individual nodes - this one optimizes the common case, not the exotic one.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Equirectangular input image tensor (B,H,W,C) in [0,1]. | |
| yaw_rotationopt | FLOAT | 0.0-180–180 | Yaw: horizontal rotation around the vertical axis (degrees). |
| pitch_rotationopt | FLOAT | -65.0-90–90 | Pitch: tilt up/down around the horizontal axis (degrees). |
| roll_rotationopt | FLOAT | 0.0-180–180 | Roll: bank left/right around the view axis (degrees). |
| horizon_offsetopt | FLOAT | 0.0-90–90 | Vertical horizon shift (degrees). Positive values move the horizon up. |
| crop_to_180opt | BOOLEAN | false | Enable crop to a horizontal FOV (usually 180°). |
| crop_to_squareopt | BOOLEAN | false | Center-crop width to the image height; overrides 180° crop if enabled. |
| output_widthopt | INT | 102464–4096 | Output width for the 180° crop. |
| output_heightopt | INT | 51264–4096 | Output height for the 180° crop. |
| interpolationopt | COMBO | lanczos | Resampling filter used by rotation/crop steps. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| processed_image | IMAGE | — |