Cycles: Experiment with shadow catcher

Alright,

so I’ve actually made a practical example to show you why Cycles’ shadowcatcher in this state just won’t work.

First, let’s break down what you usually need in order to successfully integrate CG elements into real life footage:
1, A plate/footage
2, HDRI captured at the location and point of interest where CG objects will be inserted
3, A 3D scene with Camera that has been positioned to match the position and orientation of the camera which shot the plate/footage.
4, 3D scene also needs to contain stand-in geometry or scanned geometry of the main elements present on the plate in order to effectively catch shadows and cast reflections.

It is not easy to find a good source of HDRI with matching plate(s) that is free to share, so I’ve made my own, synthetic, but still quite valid example: https://www.dropbox.com/s/a3elcjiqbh3rvyg/ShadowCatcherTest.zip?dl=0

The archive above contains 4 files:
1, Plate
2, Matching HDRI
3, .blend scene containing both stand-in geometry for the objects already captured on the plate, as well as new CG objects to be inserted on the plate
4, A reference image

This is the reference image:


Wooden planks, concrete wall, window, golden teapot and pepper mill are objects captured with the plate

Chrome teapot, red teapot and glass torus are CG objects inserted after reconstruction of a “shot” plate in CG scene.

Things you see on the plate that must happen:
1, CG objects cast same shadow color as the objects shot on the location
2, Thanks to the stand-in geometry, objects shot on the location are being both reflected, and refracted on/in the CG objects
3, ShadowCatcher solution needs to employ differential shading to be able to dissolve (not just add) reflections of the CG objects on top of the objects shot on the plate, assuming stand-in geometry is in place. On our picture, it also means that introduced CG objects correctly reflect in the objects that are already on the plate.
4, ShadowCatcher automatically projects plate geometry on top of the stand-in geometry, so for example in the reflection of the chrome teapot, you can see reflections of the planks are correctly distorted, and it really looks like the chrome teapot belongs in the scene.
5, This is extremely important: ShadowCatcher is catching shadows not only for direct eye rays, but also for reflection and refraction rays. So stand-in geometry you see reflected behaves exactly same as how it looks directly. It is a surface that has no shading of it’s own, but is being shadowed by the scene lighting, and receives bounced GI light from CG objects.

If shading in reflections was just diffuse, then you would see that lighting on the stand-ins in reflections does not match lighting of the stand-in when viewed directly, because light that was already there, captured on the plate, would be added twice, and so would the shadows

If shading in reflections was just emission or holdout material, then you would not see catched shadows in reflections, resulting in very ugly, bright fake look around contact areas.

So, you have the file, you have the reference. Anyone can now try and see how poor the current Cycles’ solution is :slight_smile: