Object-based Occlusion Mattes a.k.a. "Alpha Mattes"
The Problem
In many compositing and look-development workflows, artists need one object to selectively occlude others while revealing objects behind them. A common example is:
-
Object A acts as an occluder.
-
Object B is partially occluded by A.
-
Object C, located behind B, is visible only through the occluded portions of B.
-
Object D is also occluded by A.
Currently, achieving this result requires multiple view layers, complex compositing setups, Cryptomatte passes, or manual depth-based masks. These approaches are powerful but introduce significant complexity, and reduce iteration speed (something that Blender excels at, usually).
There is no native way to express the simple idea:
“This object should act as a matte for these objects, but not for the rest of the scene.”
Proposed Solution
Add an object-level occlusion property that allows a geometry object to be occluded by one specified occluding object (or more Objects if instead of an Object picker it uses a Collection picker).
Each renderable object (meshes, curves, text, metaballs, etc.) can reference another object that acts as an occlusion matte, evaluated from the active camera view at render time.
This behaves similarly to Holdout, but with object-based targeting instead of scene-wide effects.
User Interface Proposal
Inside (by default) : The occluding object hides only the portions of the target object that fall inside its silhouette.
Outside : The occluding object hides everything except what falls inside its silhouette.
Clarifications
-
Initial implementation could reasonably target Cycles only, as it already supports per-object ray visibility logic (e.g. light linking, shadow linking, holdouts).
-
This proposal is not a replacement for Holdout. Holdout affects everything in a View layer, while this feature affects only selected objects.
-
I believe this proposal aligns conceptually with Blender’s way of doing things, like the recent additions to Light and Shadow Linking, for example.
0 Comments