Nodes/ComfyUI_HYWorld2/🔄 360° Panorama to Views
ComfyUI Node

🔄 360° Panorama to Views

Slicing a 360 panorama into the perspective views WorldMirror can digest

By AHEKOT·Created 4 months ago·Updated about a month ago· 74
🔄 360° Panorama to Views
  • panorama
  • views
  • intrinsics
  • camera_poses
fov90
yaw_step45
pitches0,-60,60
output_size518
dynamic_fovtrue
sampling_modebilinear
debug_logfalse

Your fancy 360° panorama is one big distorted image, and most 3D reconstruction models - WorldMirror included - don't want it. They want a bunch of normal perspective photos from known camera positions. VNCCS_Equirect360ToViews is the slicer that turns one equirectangular panorama into a set of perspective views plus the camera poses and intrinsics that say exactly where each view was "taken" from. It's the first node in the pack's panorama-to-3D workflow (workflows/World-Mirror-panorama.json), and it's why you can feed a 360 and get a splat.

It's a pure computer-vision node - no models, no downloads, no VRAM. Just math, and it's the same kind of perspective-slicing trick the multi-view reconstruction world has used since before the current wave of generators.

How it works

The node walks a grid of yaw (horizontal) and pitch (vertical) directions. yaw_step (default 45°) controls how many horizontal slices you get around the circle; pitches is a comma-separated string like 0,-60,60 controlling the vertical angles you sample at each yaw. For each (yaw, pitch) it crops a perspective view of output_size (default 518) at field of view fov (default 90°) and records the matching camera pose and intrinsics.

Two details make or break the results:

  • dynamic_fov (default on) automatically shrinks the FOV when looking up or down, because perspective projection stretches badly near a panorama's poles - that's why "0,-60,60" works better than pointing straight up.
  • sampling_mode picks the resampler: bilinear is the default because it's safer for 3D reconstruction, while bicubic is sharper but can ring with colored fringes at edges - fringes that then get reconstructed as fake geometry.

The inputs that matter

  • panorama - required, an equirectangular image.
  • yaw_step - smaller = more views = better coverage, more reconstruction time. 45° (8 views) is a reasonable start; 30° is common.
  • pitches - include a high and low pitch so ceiling and floor aren't blind spots.
  • fov / output_size - resolution and how wide each slice is. Wider FOV covers more but stretches; 90° is a sane default.

Outputs

  • views - the batch of perspective images.
  • intrinsics and camera_poses - tensors describing each view's focal length and camera-to-world pose. All three wire into VNCCS_WorldMirrorV2_3D (or the V1 variant) for reconstruction.

Install & troubleshooting

Shared pack install: ComfyUI Manager (search HY-World 2.0) or clone + pip install -r requirements.txt + python install.py. The reconstruction stage downstream is where models and VRAM get involved; this node is free.

The classic beginner miss: too few pitches. If you slice only at pitch 0, the floor and ceiling of your world come back as a mess (or holes), and then alignment downstream blames the wrong node. Turn on debug_log once to see the per-view camera diagnostics and confirm your grid before spending GPU time reconstructing. And stick with bilinear for anything feeding a 3D pipeline - the bicubic ring artifacts are a real, avoidable source of splat floaters.

CategoryVNCCS/3D

Inputs (8)

NameTypeDefaultDescription
panoramaIMAGE
fovoptINT901–179
yaw_stepoptINT451–180
pitchesoptSTRING0,-60,60
output_sizeoptINT518252–4096
dynamic_fovoptBOOLEANtrueAutomatically reduce FOV looking up/down to minimize stretching
sampling_modeoptCOMBObilinearPerspective extraction resampling. bilinear is safer for 3D reconstruction; bicubic is sharper but can create colored edge ringing.
debug_logoptBOOLEANfalsePrint per-view camera/intrinsics diagnostics for panorama slices.

Outputs (3)

NameTypeDescription
viewsIMAGE
intrinsicsTENSOR
camera_posesTENSOR