Panorama · Current View
Aim inside a 360° panorama and capture that exact viewport as a flat image
- panorama
- image
Panorama owns the full 360° sphere. Current View owns one window looking out from its center. That's the whole design in a sentence: this node sits downstream of a panorama, gives you an interactive viewer, and when you aim at something good and release, it captures that viewport as a normal flat image you can wire into everything else.
This is the node you reach for when you've got an HDRI or a generated environment and you want to use it - a storyboard frame, an image-to-video start frame, a background plate. Instead of exporting an equirectangular image and un-warping it in another tool, you point and shoot inside the sphere.
How it works
The capture is a perspective projection of the equirectangular source at your chosen camera orientation:
yaw- azimuth in degrees, -180..180, 0 = forward. The drag-to-aim gesture sets this.pitch- elevation, -89..89, 0 = horizon.fov- vertical field of view, 10..120 (default 75). Wide = immersive, narrow = telephoto crop.aspect_ratio- captured shape (16:9 default), which also locks the preview shell so what you frame is what you get.resolution- short-side tier: 1K (1024), 2K (2048), or 4K (4096). Bigger is sharper but heavier downstream.
There's a ▶ Run here - the capture executes on its own, not through the whole graph queue, which is ComfyTV's per-stage snapshot model. The optional panorama input is the COMFYTV_PANORAMA source; the single image output is the flat COMFYTV_IMAGE slice, ready for Image Edit, a Video stage, or the picker.
A practical note on framing
Because the preview shell locks to the aspect ratio, you can literally frame your shot before capturing - compose like a camera, not like a crop tool afterward. And since the panorama is shared, you can drop several Current View nodes onto the same panorama to grab a wide, a medium, and a close-up from one environment, each with its own fov and framing. That's the workflow trick the pack's docs push, and it works.
Install
Pack-wide one-liner:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart ComfyUI - Desktop/macOS users: clone into the running instance's custom_nodes by absolute path, verify __init__.py at the top level, and fully restart the backend. ComfyUI Manager finds it as "ComfyTV". No extra Python dependencies.
The one thing that bites people: the image output is a capture, so it's only as good as the source panorama's resolution. Capturing a 4K viewport from a 1K equirectangular gives you a soft 4K file - upscale the source first if you actually need the pixels. And like all ComfyTV outputs, it's a snapshot type; native ComfyUI image nodes need a Bridge in between.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| yaw | FLOAT | 0.0-180–180 | Camera azimuth (degrees, -180..180, 0 = forward). |
| pitch | FLOAT | 0.0-89–89 | Camera elevation (degrees, -89..89, 0 = horizon). |
| fov | FLOAT | 75.010–120 | Vertical field of view in degrees. |
| aspect_ratio | COMBO | 16:9 | Captured view aspect ratio. Locks the preview shell too. |
| resolution | COMBO | 1K | Captured view short-side resolution tier (1K=1024, 2K=2048, 4K=4096). |
| panoramaopt | COMFYTV_PANORAMA | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | COMFYTV_IMAGE | — |