Panorama Rectify
Look around inside a 360° image without leaving ComfyUI
- panorama
- image
A 2:1 equirectangular panorama is a whole world flattened into one weirdly stretched image. Which is great for storage and terrible for looking at it. Panorama Rectify is the node that turns that ball back into a normal perspective view - pick a direction, get the frame a camera would see. It's the difference between staring at a map and standing inside the place.
It's also the only node in the fkxianzhou/ComfyUI-360Panoramas pack, which is fine, because this is the node the 360 workflow was missing. The 360 ecosystem in ComfyUI has quietly grown - outpainting LoRAs that extend a flat scene into a seamless 2:1 world, equirect-generated VR skyboxes, depth-based 360 panoramas for stereo VR. All of that produces the sphere; this node is how you look around inside it. No stitched multi-camera setup, no AI, no API key. The name oversells it a touch: it's pure geometry, and it's instant.
How it works
Under the hood it's a resample, not a recompose. For every output pixel it builds a direction vector from your yaw, pitch, and hfov, rotates that vector by your viewing angles, converts it to longitude/latitude, and samples the equirectangular texture at that spot with bilinear interpolation (grid_sample in the source). Vertical FOV is derived from horizontal FOV and your output aspect ratio, so the math stays physically consistent.
That means it's fast, deterministic, and runs wherever your tensor is - CPU included. It also means it can't invent detail. Look straight at the pole or crank hfov to 150 and you'll get smearing; the top and bottom rows of an equirect are a single squeezed point. That's not a bug, it's the projection.
The inputs that matter
panorama(IMAGE) - the equirectangular input. 2:1 is strongly recommended; the node warns (politely) if the ratio is off and processes anyway, so garbage in, warped garbage out.image(COMBO) - the standalone path. You can skip wiring entirely and just pick an image from ComfyUI's input folder, or drag-and-drop one onto the node. Wirepanoramaand it wins; leave it empty and this combo is your loader.yaw/pitch/hfov- the three numbers that actually do the work. The README's sensible ranges are yaw −180…180, pitch −89…89, and hfov 30…150 (the schema is far more permissive, but don't). Defaulthfov90 is a good neutral starting point.size_preset- nine common ratios from 1:1 up to 21:9, plus Custom, which unlocksoutput_width/output_height(128–4096, even steps).
The output is a single image at your resolved size - wire it to a Save/Preview node, or just trust the built-in preview. Feed the result to a depth model for a stereo pair, or composite it into a scene.
The reason you'll actually like it
The built-in interactive preview. Left-drag on the node canvas to change yaw/pitch, wheel (or middle-drag) to zoom hfov - all live, with source and projection side by side. This is the part that makes it better than fiddling with numbers blind; you drag until the shot frames up, then read the values off and bake them in. The pack even ships a Chinese/English UI if your ComfyUI is in Chinese.
Install
Through ComfyUI Manager, search ComfyUI 360 Panoramas. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/fkxianzhou/ComfyUI-360Panoramas.git
Restart ComfyUI. That's the whole install - requirements.txt is literally "no extra pip dependencies are required beyond ComfyUI runtime," so no model downloads, no torch-fu, nothing heavy.
Where people get burned
- This node uses the newer ComfyUI node API (
from comfy_api.latest import ...). If it fails to load after install, update ComfyUI first - it's not the pack, it's your build being old. This is the one real gotcha, and it's the most common reason a fresh install shows nothing. - Feed it a proper 2:1 equirect. Anything else is a coin flip.
- Don't push the poles.
pitch±89 andhfov150 is where it turns into abstract art.
For a small single-node pack, this one's well-made: registry-published, MIT licensed, and the preview makes the "am I even looking at the right thing" problem disappear.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| size_preset | COMBO | 1:1 (1024x1024) | 10 options: 1:1 (1024x1024), 2:1 (2048x1024), 4:3 (1600x1200), 16:9 (1920x1080), 21:9 (2520x1080), 9:16 (1080x1920), +4 |
| output_width | INT | 1024128–4096 | — |
| output_height | INT | 1024128–4096 | — |
| yaw | FLOAT | 0.0-1000000–1000000 | — |
| pitch | FLOAT | 0.0-1000000–1000000 | — |
| hfov | FLOAT | 90.030–150 | — |
| image | COMBO | example.png | 1 options: example.png |
| panoramaopt | IMAGE | Input equirectangular panorama image (2:1 aspect ratio is recommended). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |