Home · Lab · Case Files: real comp problems

CF5 Case 5: light from behind lands on the robot

Light plussed after the foreground went over, so it covers the foreground

Case Files: real comp problems · ~6 min · Free

1 The idea

Symptom: the sparks are behind the robot, yet its right arm glows as if the light floated in front. Probe the arm and compare "Merge over" with "Merge plus (sparks)": where they overlap it is several times brighter. On a real job, this kind of probe showed people standing in front of an element getting 1.6× brighter.

The cause is order: plus adds the light to every pixel, including the robot’s, which should block it. The fix is a holdout: cut the light with the robot’s alpha before the plus (a stencil). That equals putting the light under the robot and then laying the robot over.

holdout: sparks · (1 − a_robot)

2 Hands-on in the mini compositor

Task: put the light behind the robot without changing the sparks where nothing covers them

A holdout node is already in the graph: check whether it is switched on

SkyVFX mini compositor · CF5640×360 · float · 1001

3 Deep dive

Plus doesn’t know what is in front

Over uses alpha to decide what hides what, but plus just adds every pixel. If the light of an element behind is plussed after the foreground has gone over, the light lands on the foreground too.

Two fixes give the same result: (1) plus the light onto the plate first, then lay the foreground over, or (2) stencil the light with the foreground’s alpha, then plus. This lesson uses the second.

  1. 1Light × (1 − a of the FG)
  2. 2Plus onto the comp
  3. 3FG stays unlit

Measure it with a ratio

To catch this with numbers, divide the comp by the image before the plus over the foreground area. Correct is about 1. On a real job this read 1.6 on people standing in front of a glowing element; after moving the glow under the holdout it was back to about 1.0.

Every glow or added light goes under the foreground holdout

What if the light really should fall on the foreground?

Sometimes light from behind should rim the people in front. That is interactive light, built as its own layer: blurred light, reduced with distance, multiplied by the person’s matte, and kept to the side facing the source. Don’t let the element’s glow do that job by accident.

4 In real work

In Nuke

  1. Merge (stencil): B = the light, A = the foreground matte, then into a Merge (plus)
  2. Or: plus the light onto the plate first, then Merge over the foreground
  3. The foreground matte comes from roto, a key or depth; use a Copy or feed it into A directly
  4. Check: Merge (divide) comp ÷ the pre-plus image, then sample on the foreground

Common mistakes → the fix

  • ✗ Plussing the glow at the very end, after everything✓ A background element’s glow goes under the holdout.
  • ✗ Lowering the light’s gain so the foreground isn’t lit✓ The light dims everywhere; fix the order or the holdout.
  • ✗ Using a matte that also grabs other people or objects✓ Overlay the matte on the plate every shot; it must cover only the intended object.

Before you send the shot

  • Every light and glow from behind sits under the foreground holdout
  • Comp ÷ pre-plus image on the foreground ≈ 1
  • The holdout matte covers only the intended object
  • Light on the foreground, if wanted, is separate interactive light

5 Check yourself

One question to check yourself

The robot’s arm is several times brighter where it overlaps the sparks. What is the cause?

What you learned

🔒 Answer the question above and this card opens

More questions

1. Are these equal: (robot over plate) + light·(1 − a), and robot over (plate + light)?

2. How do you prove with numbers that the people in front aren’t catching the glow?

Where the numbers come from: A case from a real production problem, retold without naming the job and rebuilt with our own Blender images. Computed in your browser: Merge, Grade, Premult, Keymix, Invert and Clamp match Nuke 17.0v2 (checked); Toe, Defocus, Sharpen, Grain, the Keyer and Despill are teaching versions, not identical to Nuke’s nodes.