Nodes/Eden.art nodesuite/Projection Preview (Additive)
ComfyUI Node Runs on cloud

Projection Preview (Additive)

See What a Projector Would Actually Show

By edenartlabΒ·Created 3 years agoΒ·Updated 6 months agoΒ· 119
Projection Preview (Additive)
  • surface_photo
  • projection_output
  • Perceived View
β—„beamer_gain2.00β–Ί
β—„white_band_low_pct90.0β–Ί
β—„white_pct99.0β–Ί
β—„reflectance_floor_pct5.0β–Ί

This is the niche-est node in the batch, and it's genuinely cool: it simulates what a projected image will look like on a photographed physical surface. Think projection mapping onto a textured wall, a sculpture, a crumpled cloth - the surface isn't a clean white screen, so the projected light lands on top of whatever's already there. ProjectionPreview predicts the result before you ever point a real beamer at it.

It's the "forward" model of a pair in this pack - its sibling SurfaceRadiometricCompensation does the inverse (computing what to project so a target looks right). This node just answers "given my surface photo and my projected content, what will the eye perceive?" It's the preview you run while tuning, and the compensation node is the one you run to fix it.

How it works

The math is a physically-grounded additive model, done in linear light (sRGB is converted to linear so light actually adds the way light adds, then converted back). The perceived view is:

perceived = surface_reflectance + beamer_gain Γ— reflectance Γ— projection

The pieces:

  • surface_photo - a photo of the bare surface (or the surface as it is). One input; if it's a single image and your projection is a batch, it's broadcast across the batch.
  • projection_output - the content you plan to project (e.g., the "Projector RGB" output from SurfaceRadiometricCompensation, or just an image you want to test).
  • beamer_gain - how much of the projection adds to the scene. Default 2.0, up to 20. Physically it's the projector's effective brightness relative to the surface; crank it when your projector is bright or the room is dark.
  • white_band_low_pct / white_pct - percentile parameters used to estimate the surface's "true white" from the photo, so the model knows how reflective the surface is. Defaults 90 and 99 work for most real photos.
  • reflectance_floor_pct - a floor on estimated surface reflectance (default 5%) so near-black surfaces don't produce divide-by-zero nastiness in the compensation math.

Output is a single Perceived View IMAGE: the simulated composite. Wire it to a preview and you can eyeball whether the projection will read clearly before committing to hardware.

Installing it

Part of the Eden.art nodesuite, under Eden 🌱/projection. ComfyUI Manager β†’ search "Eden" β†’ install, or:

cd ComfyUI/custom_nodes/
git clone https://github.com/edenartlab/eden_comfy_pipelines.git
cd eden_comfy_pipelines
pip install -r requirements.txt

Restart to pick it up.

Common issues

The biggest one is alignment: the node assumes surface_photo and projection_output are the same size and roughly aligned - it resizes the surface to match the projection, but it will not warp one onto the other. If your projector has perspective or keystone distortion, that's your job (or a warping node) before this runs. Second, the model assumes the surface photo is lit reasonably and mostly uniform - a surface photo with its own dramatic shadows or highlights will read as "the surface is dark here" and the preview will look wrong. And the defaults are tuned for real projector setups; if you're just playing with the idea, expect to lower beamer_gain for a subtle overlay effect.

CategoryEden 🌱/projection

Inputs (6)

NameTypeDefaultDescription
surface_photoIMAGEβ€”
projection_outputIMAGEβ€”
beamer_gainFLOAT2.000–20β€”
white_band_low_pctFLOAT90.070–99β€”
white_pctFLOAT99.090–99.9β€”
reflectance_floor_pctFLOAT5.00–20β€”

Outputs (1)

NameTypeDescription
Perceived ViewIMAGEβ€”