ComfyUI Node

Equirectangular Processor (All-in-One)

Rotate, then crop to 180° or square, in a single node

By cedarconnor·Created about a year ago·Updated 7 months ago· 2
Equirectangular Processor (All-in-One)
  • image
  • processed_image
yaw_rotation0.0
pitch_rotation-65.0
roll_rotation0.0
horizon_offset0.0
crop_to_180false
crop_to_squarefalse
output_width1024
output_height512
interpolationlanczos

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. Note pitch_rotation defaults 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 using output_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.

CategoryLatLong

Inputs (10)

NameTypeDefaultDescription
imageIMAGEEquirectangular input image tensor (B,H,W,C) in [0,1].
yaw_rotationoptFLOAT0.0-180–180Yaw: horizontal rotation around the vertical axis (degrees).
pitch_rotationoptFLOAT-65.0-90–90Pitch: tilt up/down around the horizontal axis (degrees).
roll_rotationoptFLOAT0.0-180–180Roll: bank left/right around the view axis (degrees).
horizon_offsetoptFLOAT0.0-90–90Vertical horizon shift (degrees). Positive values move the horizon up.
crop_to_180optBOOLEANfalseEnable crop to a horizontal FOV (usually 180°).
crop_to_squareoptBOOLEANfalseCenter-crop width to the image height; overrides 180° crop if enabled.
output_widthoptINT102464–4096Output width for the 180° crop.
output_heightoptINT51264–4096Output height for the 180° crop.
interpolationoptCOMBOlanczosResampling filter used by rotation/crop steps.

Outputs (1)

NameTypeDescription
processed_imageIMAGE