Nodes/HunyuanWorld 3D World Generation/HunyuanWorld Image to Panorama
ComfyUI Node

HunyuanWorld Image to Panorama

The HunyuanWorld Image to Panorama node

By krmahil·Created 4 months ago·Updated 4 months ago· 0
HunyuanWorld Image to Panorama
  • image
  • panorama
  • panorama_path
prompt
negative_prompt
seed42
height960
width1920
fov80
guidance_scale30.0
num_inference_steps50
blend_extend6
fp8_quantizationfalse
use_cachefalse

You have one photo of a place - a friend's apartment, a location scout still, a render you like - and you want the rest of the universe around it. That's this node. HYWorldImage2Pano takes a single perspective image, figures out what's behind and to the sides, and hallucinates the missing 360° into a seam-free equirectangular panorama. It's the image-in variant of the pack's text-in panorama node, and it's the more impressive trick of the two: given a decent source, the results feel like someone handed you a 360° camera that was pointed at your scene.

How it works

The heavy lifting is a FLUX.1-Fill-dev inpainting pipeline (black-forest-labs/FLUX.1-Fill-dev, also gated, also ~23 GB) with HunyuanWorld's PanoDiT-Image LoRA fused in. The clever part is the geometry, which the node does for you: your source image is resized to match the fov you declare, projected into equirectangular space (that's the PerspectiveGetEquirec step), and the empty region is turned into an inpaint mask. The model then fills everything the mask covers - and it has to match the source's perspective, lighting, and style, which is exactly why an inpainting-tuned FLUX is the base. It also quietly appends its own quality prompt ("high-quality, high-resolution, sharp, 8k") and a negative that bans people and mess, so you don't have to.

Inputs and outputs that matter

  • image - required. Any IMAGE tensor you can produce: Load Image, a render, a screenshot.
  • fov - default 80, range 30–180. This is the one to get right. It tells the node how wide your source photo is, and it drives the whole projection. A typical phone photo is roughly 65–75°; a game screenshot with a narrow lens might be 50. Say 120 when your lens is actually 70 and the model will warp the source before it even starts.
  • prompt - optional text guidance. Handy for steering what the model fills in ("dense forest continues," "city skyline"). Empty is fine.
  • height / width - panorama size, default 960×1920. Height tops out at 2048, width at 4096.
  • guidance_scale - default 30 again, the HunyuanWorld house style. Don't dial it to 7 because FLUX told you so.
  • blend_extend, fp8_quantization, use_cache - the seam blending and VRAM knobs, same as the text node.

Outputs: panorama (IMAGE) and panorama_path (STRING). Keep the string - HYWorldSceneGen wants a file path to feed the 3D stage.

Installing it

Same pack install as the rest: ComfyUI Manager → HunyuanWorld 3D World Generation, or

cd ComfyUI/custom_nodes
git clone https://github.com/krmahil/comfyui-hunyuan-world.git
pip install -r comfyui-hunyuan-world/requirements.txt

Then the pack prerequisites: HunyuanWorld-1.0 installed so hy3dworld imports, Real-ESRGAN, the ZIM segmentation models, and a HuggingFace login with the FLUX.1-Fill-dev license accepted. First run downloads the Fill model plus the ~478 MB PanoDiT-Image LoRA - budget 10–30 minutes.

Common issues

  • The source image looks warped - fov is wrong for your source. Measure or guess tighter before blaming the model.
  • Seam or lighting mismatch - nudge blend_extend up, and give the prompt a hint about the scene continuing.
  • Gated model errors - accept FLUX.1-Fill-dev on HuggingFace and log in; it's a different gated repo from FLUX.1-dev, so accepting one doesn't grant the other.
  • OOM - same story as the text node: FP8 (fp8_quantization) gets you to ~24 GB, adding use_cache (DeepCache) to ~20 GB. Without them you need ~40 GB.

Both FLUX pipelines (dev and Fill-dev) stay cached in memory after their first use - if you run this node and the text node in the same session, that's ~46 GB of models parked in VRAM. Throw a HYWorldUnloadModels at the end of the graph when you're done.

Category3d/hunyuan-world

Inputs (12)

NameTypeDefaultDescription
imageIMAGE
promptoptSTRING
negative_promptoptSTRING
seedoptINT420–2147483647
heightoptINT960256–2048
widthoptINT1920512–4096
fovoptINT8030–180
guidance_scaleoptFLOAT30.01–50
num_inference_stepsoptINT5010–100
blend_extendoptINT60–20
fp8_quantizationoptBOOLEANfalse
use_cacheoptBOOLEANfalse

Outputs (2)

NameTypeDescription
panoramaIMAGE
panorama_pathSTRING