ComfyUI Node

MapEquirectangular

Project any image onto a 360° equirectangular canvas

By willchil·Created 2 years ago·Updated about a year ago· 15
MapEquirectangular
  • image
  • IMAGE
equirectangular_width2048
hfov60
yaw0
pitch0
roll0

Most of the "panorama" work people do in ComfyUI starts from a model that already knows how to make a 2:1 image. But sometimes you want to build one yourself: paste a normal perspective render or photo into a 360° canvas, so a specific scene sits at a specific spot in the skybox. That's MapEquirectangular's entire job - it takes a flat perspective image plus camera parameters and projects it onto an equirectangular output.

How it works

Picture a pinhole camera sitting in the middle of a sphere. The node treats your input image as what that camera sees, and for every pixel of the output equirectangular canvas it figures out which direction that pixel points, rotates it by the yaw/pitch/roll you set, and samples the source image there. The vertical field of view is derived from hfov and the image's aspect ratio, so hfov behaves like a real lens focal length. Output width is what you specify and height is always exactly half - the 2:1 rule is enforced for you.

Unmapped areas stay black with zero alpha. That RGBA output is deliberate: the node hands you a texture plus a ready-made mask, so you can split the alpha out and use it to inpaint the empty regions of your skybox.

The inputs that matter

  • image - the perspective shot you're projecting.
  • equirectangular_width - output width in pixels (2048 default → 1024 tall). Higher is sharper, but every output pixel gets sampled, so it slows down fast.
  • hfov - horizontal field of view in degrees, 0–180, 60 default. The main creative dial.
  • yaw, pitch, roll - orientation of the source camera inside the sphere.

The output is a single IMAGE (RGBA). One output, one image - you'll usually want to split the channels or feed the alpha to a mask.

The yaw-180 trick

Set yaw to 180 and the projection lands split across the horizontal edges of the output - the same content on both sides of the seam. The author notes this can help when you're assembling a seamless wrap-around panorama, since what appears at the join is duplicated for continuity. Slightly counterintuitive, and worth keeping in your back pocket.

Where this sits in the pack

It's the builder; EnvironmentVisualizer is the payoff. Project one or several perspective views onto an equirect canvas, use the alpha to inpaint the gaps (or let a panorama LoRA finish the scene - the 2:1 format is exactly what those models expect), then hand the finished texture and a depth map to the visualizer to walk around in.

The traps

  • The output is 4-channel. Feeding an RGBA image into a node that assumes opaque RGB can surprise you - split it or mask it first.
  • Big widths are genuinely slow; don't crank 8192 unless you enjoy waiting.
  • hfov is the knob that decides how much of the world the image covers. Crank it toward 180 and you get a wide, fisheye-ish spread covering huge swaths of the sphere; leave it at 60 and you get a tight window.

Install

Same pack as the other two nodes, one-time setup:

cd ComfyUI/custom_nodes
git clone https://github.com/willchil/ComfyUI-Environment-Visualizer

Restart ComfyUI, or find "ComfyUI-Environment-Visualizer" in the Manager's install search. No model downloads, no pip dependencies - pure PyTorch remapping of an image you already have.

Categoryimage/equirectangular

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
equirectangular_widthINT2048
hfovFLOAT600–180
yawFLOAT0-180–180
pitchFLOAT0-90–90
rollFLOAT0-180–180

Outputs (1)

NameTypeDescription
IMAGEIMAGE