Nodes/ComfyUI-Tutu-360VR-Tools/TUTU Stream Equirect Source Composite
ComfyUI Node

TUTU Stream Equirect Source Composite

Stop your 360 outpainting from looking like a sticker on a video

By zhaotututu·Created 2 months ago·Updated 2 months ago· 0
TUTU Stream Equirect Source Composite
  • generated
  • source_equirect
  • outpaint_mask
  • composited
tone_match1.00
feather_px12
tone_equalize0.70
wrap_wtrue

Here's the problem this solves. You feed a flat clip to LTX 2.3's VR-Outpaint workflow and get back an equirectangular 360 video where the model invented the whole world around your footage. Except it also re-drew the middle - the strip where you already had real source frames. The AI's reinterpretation of your original footage drifts in color and exposure, so you end up with a scene where the center looks like a pasted-in rectangle and the generated world around it doesn't match.

This node fixes that. It takes your generated equirect batch plus the original source frames and re-composites the real footage back over the known region, with a tone fit so the source doesn't glare against the AI extension. It's the difference between "wow, immersive" and "why is that patch brighter than everything else."

What it does mechanically. Three things, and they're all worth knowing because they map to three knobs:

  1. Tone match. It computes a per-channel linear color fit (gain + offset) over the known-source area, then nudges the generated content toward that fit. tone_match is the strength, 0 to 1. At 1.0 (default) the generated colors are fully corrected to match the source's exposure; at 0 nothing is corrected. This is what makes the composite read as one scene.
  2. Longitude equalization. tone_equalize (default 0.7) fits a low-frequency brightness reference across latitude rows and evens the frame out. Equirect has a real problem here: the sky and the floor of a 360 capture have wildly different exposure, and a generated world won't naturally reproduce that. This flattens the vertical brightness bands so the source region doesn't glow.
  3. Wrap-aware feathering. feather_px (default 12) is how wide the blend band is at the source/generated boundary. With wrap_w on (default), the feathering and the equalizer both treat the frame as circular horizontally, so you don't get a hard vertical line at the 0°/360° seam.

The inputs that matter. The three image/mask inputs are non-negotiable: generated (your outpainted equirect frames), source_equirect (the real source footage), and outpaint_mask - the mask that says which pixels the model generated. Where the mask is 0 (known source), the real footage wins; where it's 1 (generated), the AI content wins; the feather is the gradient between. The node processes the batch in bounded chunks (it caps temp memory around 16M pixels at a time), so handing it a long sequence won't balloon your RAM. Output is a single composited image batch - wire it straight into the upscale/save step.

Where it sits. After your outpaint, before upscale. In TUTU's LTX 2.3 360 workflow it's the middle node that makes the whole thing believable, and it's the one in this pack I'd actually reach for on its own.

Installing. This is one of three nodes in ComfyUI-Tutu-360VR-Tools. ComfyUI Manager (search the pack title) or:

cd ComfyUI/custom_nodes
git clone https://github.com/zhaotututu/ComfyUI-Tutu-360VR-Tools.git

Restart ComfyUI. Pure torch, no extra deps, no model downloads.

Troubleshooting. If the result looks washed out or colorshifted, lower tone_match - you're over-forcing the fit. If you can see a hard boundary between source and generated, raise feather_px. If the vertical brightness looks off, tone_equalize is your dial. And don't turn wrap_w off unless you're not doing 360 - it's doing quiet work you'll only notice when the seam shows up.

CategoryTUTU/360VR

Inputs (7)

NameTypeDefaultDescription
generatedIMAGE
source_equirectIMAGE
outpaint_maskMASK
tone_matchFLOAT1.000–1
feather_pxINT120–256
tone_equalizeFLOAT0.700–1
wrap_woptBOOLEANtrue

Outputs (1)

NameTypeDescription
compositedIMAGE