ComfyUI Node

Panorama Stickers

The node that turns 'make a panorama' into an outpainting problem

By nomadoor·Created 6 months ago·Updated 13 days ago· 162
Panorama Stickers
  • bg_erp
  • sticker_image
  • audio
  • cond_erp
  • mask
output_preset2048
coverage360
bg_color#00ff00
state_json
fps24
sticker_state

Panorama Stickers is the flagship of nomadoor's ComfyUI-Panorama-Stickers pack, and the node everything else orbits. Its job: let you place, scale, and rotate images onto a 2:1 equirectangular (ERP) canvas - inside an interactive 360° editor, not on a flat rectangle - and output a composited conditioning image for outpainting. If you've ever wanted to control exactly where things appear in a 360° panorama, this is how you do it.

The mental model is the author's own, and it's worth stealing. He treats "make a panorama" as an outpainting problem: start with an empty ERP canvas, paste your reference images onto it like a rough collage (those are the "stickers"), and let the model fill in everything else. To make that work, the node exports the canvas with the empty areas painted a specific background color - green by default, #00ff00 - and his FLUX.2 Klein 360° ERP outpaint LoRA is trained to interpret that green as "fill me in." So the workflow is: place stickers, export the green-screened control image, and the KSampler outpaints the green.

How it works

Everything lives in a modal editor rendered in your browser (WebGL since v1.1.0). You add images, then drag them around in panorama space - yaw, pitch, scale, roll - while a live sphere view shows you where they actually land relative to the 360° world. The node serializes that layout into state_json, then renders the composited ERP: your stickers over the background color. It also produces a mask of everything you placed, so the green gap is cleanly separable.

The inputs and outputs that matter

  • output_preset - 1024, 2048, 4096, or auto, default 2048. This sets the output canvas width (the height is half that for 360 coverage). The author recommends 2048×1024 as the practical size for the LoRA, and honestly it's still not super high-res for a full panorama - that's what post-upscaling is for. auto sizes the output to match bg_erp if it's connected, and falls back to 2048 otherwise.
  • coverage - 360 (full sphere) or 180 (half-sphere, added in v1.3.0).
  • bg_color - the background the model will outpaint. Default #00ff00 green, and that default is load-bearing: it's the green-screen convention the LoRA expects. Don't change it for fun, or the LoRA won't know what to fill.
  • state_json - the sticker layout, normally written by the editor. Leave it alone unless you're scripting.
  • bg_erp - optional background ERP to composite under the stickers instead of a flat color.
  • sticker_image + sticker_state - optional inputs that make the "stitch back" loop work: pass the rect_image/sticker_state outputs of Panorama Cutout in here and an edited frame gets dropped back at exactly the right position in the sphere.
  • fps / audio - preview playback for video inputs. Irrelevant for stills.

Outputs are cond_erp - the composited conditioning panorama - and mask of the placed stickers. cond_erp is not your final image; it's the control image you feed into the outpaint step (the example workflows chain it into a LoraLoaderModelOnly + KSampler setup with the Klein LoRA).

Installing it

ComfyUI Manager, search "Panorama Stickers", or:

cd ComfyUI/custom_nodes
git clone https://github.com/nomadoor/ComfyUI-Panorama-Stickers

Restart ComfyUI. The pack ships no models - the LoRA itself is a separate download from the author's HuggingFace (there are 4B and 9B variants). Runtime deps are just numpy/PIL/torch, already in ComfyUI; PyAV is only needed for video preview encoding.

Where people get burned

The author's own warnings, worth repeating: the LoRAs don't behave on distilled Klein models - use the base FLUX.2 Klein. And seam matching at the wrap edges is still hard, so budget for a Panorama Seam Prep + upscale pass afterward. People also get confused when they plug a real-life screenshot in as a sticker and the panorama "doesn't make sense" - the green outpaint only fills around what you placed; garbage in, garbled world out. And if you change bg_color, understand you've broken the contract with the LoRA.

CategoryPanorama Suite

Inputs (9)

NameTypeDefaultDescription
output_presetCOMBO20484 options: 1024, 2048, 4096, auto
coverageCOMBO3602 options: 360, 180
bg_colorSTRING#00ff00
state_jsonSTRING
fpsFLOAT241–120Preview playback framerate.
bg_erpoptIMAGE
sticker_imageoptIMAGE
sticker_stateoptSTRING
audiooptAUDIOOptional audio for preview playback.

Outputs (2)

NameTypeDescription
cond_erpIMAGE
maskMASK