HY-World Qwen Pano Generate
The actual panorama generator — Qwen-based 360° outpainting
- model
- clip
- vae
- image
- image
- latent
- positive_prompt
- negative_prompt
HYWorld2 Qwen Pano Generate is the real deal: a full KSampler-style diffusion node that takes an image, a prompt, and a canvas, and samples a complete equirectangular panorama that extends your image seamlessly around the full 360°. It's the "generate" half of the Qwen Pano pair (Encoder preps, this cooks), and it's the node that actually spends your GPU time.
It's built on the Qwen-Image family's pano-expansion approach - a Qwen-style text encoder as the condition encoder, reference-latent conditioning, and a seam-blending pass so the left and right edges of the panorama actually meet. If you've ever out-painted an image with regular inpainting and watched the seams look like crimes, this is the machinery that exists to fix that specific complaint.
How it works
It's a standard ComfyUI sampling flow with pano-specific twists:
- Takes
model/clip/vae(any compatible checkpoint - the conditioning path is what matters) plus theimagereference andprompt. - Encodes Qwen pano conditioning - the reference image goes through the CLIP and VAE encoder so the model knows what it's extending (
ref_latents_methodcontrols exactly how:index,offset,uxo, orindex_timestep_zero;indexis the safe default). - Creates an empty latent at
width×height, samples with yoursteps(40),cfg(4),sampler_name(the full Comfy list),scheduler,denoise, andseed. - Decodes, then runs
circular_blend_edges_tensorwithblend_width(32) to blend the seam, and withcrop_right_edge(true) trims the overlapped right edge so the output is a clean equirect.
The inputs that matter
model/clip/vae- required. Qwen-Image-derived checkpoints are the intended family.image- the reference to extend.prompt- the continuation description (fromQwen Pano Prompt/Encoderfor the official phrasing).steps/cfg- 40 / 4 are good starting points for this model family; expect to tune, not copy SDXL habits.blend_width- the seam-fix dial. Too small and the wrap seam shows; too large and you blur the wrap region.ref_latents_method- leave atindexunless you're experimenting.
Outputs
image- the finished panorama (seam-blended). Feed it toQwen Pano Seam Blendif you want to re-run blending with different settings.latent- the raw samples, for advanced re-decoding.positive_prompt/negative_prompt- the strings it actually used, so you can see the template applied.
Install & troubleshooting
Shared pack install: ComfyUI Manager (search HY-World 2.0) or clone + pip install -r requirements.txt + python install.py. This node needs a diffusion checkpoint - the pack doesn't ship one - and a GPU with room for it; sampling at 1952×960 is the default for a reason (it's the tuned size, not a max). VRAM is the practical ceiling: drop width/height if you OOM.
If the seam is visible after generation, raise blend_width or re-run through Qwen Pano Seam Blend. If the pano has warped or duplicated content, your reference-crop or prompt is fighting you - redo the Encoder's crop_border and keep the continuation prompt literal. And manage expectations: this is a generative outpainting, so distant parts of the 360 are invented, not reconstructed - that's fine for scene seeds, wrong for photogrammetry.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| image | IMAGE | — | |
| prompt | STRING | a clean bright indoor scene | — |
| width | INT | 195264–8192 | — |
| height | INT | 96064–8192 | — |
| seed | INT | 420–18446744073709550000 | — |
| steps | INT | 401–10000 | — |
| cfg | FLOAT | 4.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
| blend_width | INT | 320–512 | — |
| crop_border | FLOAT | 0.0000–0.49 | — |
| ref_latents_method | COMBO | index | 4 options: index, offset, uxo, index_timestep_zero |
| use_official_prompt | BOOLEAN | true | — |
| crop_right_edge | BOOLEAN | true | — |
| negative_promptopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| latent | LATENT | — |
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |