Nodes/ComfyUI-Equirectangular-Strip/6×90° Strip → 360
ComfyUI Node

6×90° Strip → 360

Stitch your edited cube-face strip back into a clean 360° image

By migero·Created 8 months ago·Updated 8 months ago· 0
6×90° Strip → 360
  • strip
  • IMAGE
width2048
height1024
face_size512
order0,1,2,3,4,5
flip_sidesfalse

The sibling to EquirectToStrip90 is the part of the round-trip you actually think about least and screw up most. EquirectToStrip90 flattens a 360° panorama into six cube faces laid out as a strip; Strip90ToEquirect is the return flight - it takes that (now inpainted, upscaled, or edited) strip and rebuilds an equirectangular image you can drop into a VR viewer, a panorama editor, or straight into one of the 360° ERP outpainting LoRAs that want real equirect input. Without it, the strip is a dead end. With it, you have a proper 2:1 360° image with the seams where you made them.

How it works

It's the inverse projection, done per pixel. For every pixel in the output equirect, the node computes a direction vector in 3D space, figures out which cube face that ray hits (dominant axis wins: +Z is front, −Z is back, ±X the sides, ±Y top/bottom), and samples the matching tile from the strip. It reverses the flip_sides flip before sampling so the faces come back upright, and it maps faces back to strip positions using the order you passed in. All numpy, all fast - a 2048×1024 reconstruction is well under a second.

The inputs that matter

Four of the six inputs are your responsibility, and the recurring theme is: match the encode node.

  • strip - the IMAGE output from EquirectToStrip90, or anything downstream of it.
  • width / height - the output equirect dimensions, default 2048×1024. That 2:1 ratio is the equirectangular standard; keep it unless you have a reason not to.
  • face_size - must equal the face_size used when the strip was encoded. The node slices the strip into faces at face_size intervals, so a mismatch means it cuts the tiles in the wrong places and you get garbage. This is the most common silent failure.
  • order and flip_sides - same story. The decode defaults (0,1,2,3,4,5, flip_sides=false) will not match the encode defaults (3,2,1,0,4,5, flip_sides=true), so if you've left either node on defaults you'll get a scrambled hemisphere. The encode node passes its order and flip_sides out as outputs precisely so you can wire them straight in here and never think about it again.

The single output is IMAGE - the reconstructed equirect.

Installing it

Same pack as its sibling, one install gets you both. No models, no extra dependencies; the code needs cv2/numpy/torch, which ComfyUI already ships. Via Manager, search for Equirectangular. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/migero/ComfyUI-Equirectangular-Strip

Restart ComfyUI; both nodes land under the 360 category.

Gotchas

The seam advice from the encode side applies in reverse here: whatever you do to the strip happens before this node, so if you inpainted each face independently, this node will faithfully stitch your creases back together. Inpaint across face boundaries in the strip for a seamless result. Also remember the whole pipeline is single-image - EquirectToStrip90 only reads the first frame of a batch, so plan your strip around one panorama at a time. Get the three "match the encode" fields right, though, and this node is about as boring as a projection should be - which is the compliment it deserves.

Category360

Inputs (6)

NameTypeDefaultDescription
stripIMAGE
widthINT2048
heightINT1024
face_sizeINT512
orderSTRING0,1,2,3,4,5
flip_sidesBOOLEANfalse

Outputs (1)

NameTypeDescription
IMAGEIMAGE