Nodes/ComfyUI-Sharp/Sharp Panorama Cube Split
ComfyUI Node

Sharp Panorama Cube Split

The WorldStereo-shaped way to cut a panorama

By PozzettiAndrea·Created 8 months ago·Updated 2 months ago· 358
Sharp Panorama Cube Split
  • panorama
  • face_images
  • extrinsics
  • intrinsics
  • fov_x_deg
  • num_faces
image_w832
image_h480
fov_x_deg120
fov_y_deg90
rot_deg40
pitch_up0.50
pitch_down-0.50

This is the pack's second way to cut a 360° panorama into perspective crops for SHARP, and it's a genuinely different tool from SamplePanorama rather than a redundant one. Where SamplePanorama gives you a generic FOV/overlap grid, this node's crop geometry is deliberately matched to WorldStereo conventions - specific defaults for view size, field of view, yaw spacing, and pitch bands, all called out explicitly in the node's own tooltips as "matching WorldStereo's anchor width/height/FOV." Reach for this one specifically when you're trying to stay compatible with a WorldStereo-based workflow, not just when you want "a" panorama split.

How it works

With its defaults, the math works out to a fixed 27-view pattern: rot_deg at 40° gives 9 yaw positions per pitch band, times 3 pitch bands (level, pitch_up, pitch_down) = 27 total crops. Every default value here - 832×480 crop size, 120°×90° FOV, 40° yaw step, ±0.5 pitch - is called out in its own tooltip as matching a specific upstream convention rather than being an arbitrary starting point, so changing them deliberately breaks that compatibility rather than just tuning quality.

One quirk worth knowing before you build a batch workflow around it: the panorama input's tooltip states plainly that only the first image of a batch is used. Feed it a batch of several panoramas expecting it to process all of them, and it'll silently only touch the first - not an error, just not what a "batch" input usually implies.

The inputs and outputs that matter

  • panorama (required) - equirectangular RGB, 2:1 aspect, [B, H, W, 3]. Only image 0 of the batch is used.
  • image_w / image_h (default 832 / 480) - crop resolution, matching WorldStereo's anchor size.
  • fov_x_deg / fov_y_deg (default 120 / 90) - horizontal/vertical field of view per crop, matching WorldStereo upstream.
  • rot_deg (default 40) - yaw step between adjacent views; 40° yields 9 views per pitch band.
  • pitch_up / pitch_down (default 0.5 / -0.5) - Z-component of the look-at targets for the upper and lower hemisphere bands.

Outputs: face_images, extrinsics, intrinsics (per crop, ready for a Predict node or the depth-alignment pipeline), fov_x_deg (echoed back out - handy if a downstream node needs it without rewiring a constant), and num_faces.

Installing it

Same pack: Manager search "Sharp" (highest version, nightly if that build's flaky), Manager → Git URL https://github.com/PozzettiAndrea/ComfyUI-Sharp.git, or manual clone + pip install -r requirements.txt --upgrade + python install.py, restart.

Common issues

The batch limitation above is the one to know before you hit it, since it fails silently rather than loudly - if a multi-panorama batch workflow only ever seems to produce results from one input, this is why. Beyond that, this feeds directly into the same panorama pipeline as SamplePanorama (AlignDepthMapsProjectDepthToPanoramaSharpPredictGaussiansFromMetricDepthMergeGaussians), so the usual caution applies: keep depth_convention correct downstream, since per-face crops from either split node feed depth in the equirect ray-distance sense once they've been through ProjectDepthToPanorama and back.

CategorySHARP

Inputs (8)

NameTypeDefaultDescription
panoramaIMAGEEquirectangular RGB panorama, 2:1 aspect. [B, H, W, 3] or [H, W, 3] in [0, 1]. First image of batch is used.
image_wINT832224–2048Crop width. 832 matches WorldStereo's anchor width.
image_hINT480224–2048Crop height. 480 matches WorldStereo's anchor height.
fov_x_degFLOAT12030–170Horizontal FOV. 120 matches WorldStereo upstream.
fov_y_degFLOAT9030–170Vertical FOV. 90 matches WorldStereo upstream.
rot_degFLOAT4010–120Yaw step between adjacent views. 40 -> 9 views per pitch -> 27 total at 3 pitches.
pitch_upFLOAT0.500–1Z component of the upper-hemisphere look-at targets. 0.5 matches WorldStereo upstream.
pitch_downFLOAT-0.50-1–0Z component of the lower-hemisphere look-at targets. -0.5 matches WorldStereo upstream.

Outputs (5)

NameTypeDescription
face_imagesIMAGE
extrinsicsEXTRINSICS
intrinsicsINTRINSICS
fov_x_degFLOAT
num_facesINT