I have found sever threads to this point, but none was able to really explain the shadow catchers behaviour. The scene for the image below only contains a sphere, a plane with a pure white diffuse shader and an are light. The left image shows the plane set as shadow catcher, the render result layered on top of a plain white fill layer (renderings were saved as .png). The right one shows the identical scene but the plane NOT set as shadow catcher.
As you can see, the shadow catchers shadow not only is waaaay darker - it is a completely different one regarding the shape and gradient. It seems to be that way since years, so I’d call it intended behaviour. That in turn leads me to the conclusion there IS a way to compose everything in a way it looks exactly as the right image.
Coming from C4D I’m used to just take the shadow channel, mask it with object ID AOV’s and multiply over whatever Background I’d like to use.
Could anyone tell me, how the shadow catcher is intended to be used correctly?
OK, I’m getting somewhere near. This time in the left picture I activated the shadow catcher pass in the view layer settings. This pass is multiplied over a plain white layer. The “combined” pass is on top of it all. The right image (no shadow catcher used) has still a less dark shadow in the area to the right…
Which leads to the question: why do I have to activate this pass manually? In my opinion it should be activated as soon as an active shadow catcher object is present. Or at least give a hint that there needss an additional setting to be set.
Shadow catcher can be used in VFX composition when you are adding model to real life photo/video and you want to get “real” shadows/reflections of 3d model.
I know what it’s for, but I can’t get accurate results. In darker environments as in your example you won’t notice it that much. But if you have light or just even white backgrounds, this can drive you crazy.
I visualize industrial components, placed mainly on an “infinite” floor or even on a colored background. The floor shadows add some kind of ground to it.
Because of all that hazzle I currently don’t use the shadow catcher at all, rather setting an AOV to my nearly white floor and multiply the floor on top of a background layer i can adjust as I wish. This way I can isolate the floor shadows in a fairly good way.
Actually, to do it correct you’d need to use a darker background color and light it up - but that’s a different story…
I’d say the difference you´re seeing is because on the image on the right the plane is also receiving light bounces from the sphere, adding additional light to the shadow. But the shadow catcher pass doesn’t contain that light bounce contribution, so that’s why it looks darker.
I agree though, the shadow catcher pass should be activated automatically the moment any object is set as a shadowcatcher.
OP is coming from C4D, which can render the shadow more obviously in terms of the opacity, darkness, and simply a layer in post without too much thinking. I’ve faced this myself, when trying to use my older techniques with Blender’s layer rendering.
I see what they’re after here; they aren’t looking for “how it’s done with completely different techniques”, but how to more closely get the result they’re looking for.
Actually, I want to understand how it is supposed to work. It seems overcomplicated to me, but more often the issue is not within Blender but me, myself and I…
Yes, I do.
My test images above dont use any world shader. As soon as I do this (and I hardly never get away without it) the difference is increasing heavily.
Actually, it does as the manual states:
“The Shadow Catcher outputs different results depending on if the Shadow Catcher pass is enabled in Render Layer settings. With the Shadow Catcher pass enabled, all indirect light interactions are captured. With it disabled, a simple approximation is used instead. The simple approximation is used in viewport rendering.”
It’s closer to the full rendering then anything else I got using the shadow catcher. The compositor workflow can easily be reproduced in BMD Resolve or whatever compositing software one would use.
Using the shadow catcher + pass even changes the lighting on the sphere, which definietly should not happen. But again - I’m pretty shure it’s user error.
The shift in the spheres lighting must be caused by the fact I loaded the rendered .png back into the compositor. It doesn’t happen when I compare it directly as in this file. I set up two scenes, one with and one without shadow catcher workflow. multiplying the shadow catcher pass over a plain white background gives a completely diffrent result compared to the floor including shadows multiplied over the same background.
Maybe it’s something to do with the color management?
Yes, it’s almost certainly that. Where & how you were doing your compositing of these passes was going to be my first question when I read your initial post—the shadow catcher workflow assumes linear values. The catcher is calculated in Blender’s internal linear space, so it’s meant to be applied in linear space: compositing it in a display-referred program like Photoshop, or with one or more elements that have already been tone-mapped, will produce the wrong results.
Here’s A) a scene with the elements rendered all together, B) a composite using the alpha shadow (the one that’s rendered into the beauty pass when the Shadow Catcher pass is off), and C) a composite using the Shadow Catcher pass: apart from the small bit of bounce light missed by the alpha shadow (since it can only capture darkening, not lightening), the three are identical when rendered & composited correctly.
On the other hand, if the composite is done in display-referred space instead of linear space, or if any of the elements have been tone-mapped (i.e. processed through Filmic, AgX, whatever) before the composite, then the results won’t match the render, since the pixel values happening in the composite aren’t the expected ones.
Thanks for this extensive answer. That explains it pretty much, as I’m using the tonemapping in Blender and comp everything in BMD Resolve or Affinty. As the knowledge of how something works is the prerequisite to create correct results, this really helps me get ahead.