We have just updated all users in the company from version 7 to 8.
Now, users have noticed a difference in how the ground plane receives shadows.
After extensive testing, it turns out this issue is related to transparent geometry.
In this test scene, I have placed some geometry on top of the ground plane. The ground plane is set to only receive shadows, as I need a transparent background.
In the four images, I only change the transparency of the red box: 20%, 40%, 60%, and 80%.
Notice that the shadow appears correctly on the green surface, but the intensity on the ground plane changes depending on the transparency level of the red box.
As a result, our screen renders show varying shadow intensity based on how transparent some geometry is.
The ground plane, shadows and transparency code is different from Rhino 7 as the engine behind it had also changed considerably. We tried to get aa close as possible to the old results, but some cases were overlooked. I think your issue is related to RH-82367 Shadows on shadows-only gp not visible through glass material
We compared the shadows in Rhino 7 and 8, and the ones in R8 are better. The issue is that they change depending on the transparent materials in the file.
One of the geometries has a transparent material that seems to be “responsible” for the shadows on the ground plane. If I change the transparency of the material on that geometry, the shadows change. If I apply another transparent material to that object, it’s the transparency of the new material that affects the shadows.
I’ve tried to make a video to show how it changes.
I can’t figure out how Rhino “selects” which geometry controls the shadows. If we can identify that, maybe we can automatically add a geometry that ensures consistent shadow behavior every time.
Do you have any timeframe for when this can be fixed? I see that RH-82367 is over a year old.
Alternatively, is it possible to create a material for the ground plane that is transparent but still receives shadows?
We really need renders with transparent backgrounds and shadows.
Thanks again for your help. Looking forward to hearing your thoughts!
This is really odd behaviour. Is there any way to prevent it taking the transparency of objects into account through the RhinoCommon API @nathanletwory ?
No, I don’t think there is a way to influence that via any API work. That is due to how the shadow catcher is implemented, there is no outside control from our API.
Not as far as I can see at this time with Rhino 8.
Thanks for the reply. Is it possible to somehow see what object determines the intensity of shadows. It seems to be controlled by a single object in the scene. So is it the first one with transparency added to the render pipeline, or what is the logic?. If we know this, we can at least control it.
To be honest I’m not sure how exactly transparent objects are influencing the results. This is an implementation created by @DavidEranen , he’ll be able to tell more how this works.
We’ve been testing extensively, and it seems that, to a large extent, the transparent geometry closest to the camera is the one controlling the intensity of the shadow.
We created a script that places a small box with a specific transparent material just behind the camera. This worked about 90% of the time when we moved the camera, but not always. Occasionally, when the camera was placed between other geometries, it didn’t pick up the information from the small box.
@DavidEranen hope you can help with this! Is it correct understood that the shadow intensity on the ground plane is controlled by a single transparent object in the scene - and that the control is somewhat related to it’s position relative to the camera?