Okay, let’s go through what’s actually happening here, and why.
The main problem here is that Rhino does not support making shadows lighter if they are caused by transparent objects. So ideally, if we have a solid object, the shadow that is cast due to the object should be at “full strength”, a shadow cast due to a 50% transparent object should be at “half strength”, and a shadow cast due to a 100% transparent object should not be visible at all.
Rhino only supports casting a full strength shadow, or none at all. This is why we’ve offered a setting to users to specify at what transparency level Rhino should be rendering the full shadow, and when it should render no shadow at all. I completely understand that this setting is confusing. Ideally, it should not need to exist at all - the shadows should just look right without the need for any user input.
In order to support shadows that change in intensity according to the transparency of the object causing the shadow, we would have to change the way sharp shadows (e.g. the Sun) and skylight shadows are rendered. These changes are not exactly trivial to make, especially in the skylight case.
Now regarding Arctic mode: things get a tad more confusing when dealing with Arctic mode. In Arctic mode, all objects are the same white color. The only way to actually distinguish objects is to render shadows around them. This is why it’s easy to think an object is solid, when in reality it has transparency but the shadows have been rendered at full strength making it look solid. It’s confusing, I know! The reason your blocky object is not visible inside the cone object is because the skylight shadow algorithm doesn’t take into account transparency, so when we generate the shadows the algorithm doesn’t see the blocky object because it’s behind the cone. If, however, we move the “Transparent Objects” slider, we can make it so that the cone is now 100% see through, and therefore we can see the blocky object and render shadows for it.
In your last picture we can see that your blocky object can be seen really clearly (too clearly) through an object that is only 10% transparent. This is because the “Transparent objects” slider is all the way to the left, which makes it so that transparent objects never cast shadows. This in turn makes the cone object not appear in skylight shadows calculations, so that it is essentially invisible to it. Therefore we get shadows only on the blocky object.
As you can tell, this is all very confusing and not really working correctly. To eventually remedy this, I have created the following two YouTrack items which should remove the need for the slider and make things work correctly in regards to shadows and transparent objects:
- https://mcneel.myjetbrains.com/youtrack/issue/RH-65789 (Display: Make shadow maps take into account object transparency)
- https://mcneel.myjetbrains.com/youtrack/issue/RH-65790 (Display: Make skylight shadows (SSAO) take into account object transparency)
Keep in mind that this is not trivial to implement, and I’m fairly sure that the fix will not make it into Rhino 7, but a subsequent version. Sorry to disappoint on that front!
Finally, I think you might be able to work around the issue by using Raytraced mode. I know it’s not exactly the same look at Arctic, but there might be a way to get really close to the same look, while also handling shadows and transparency correctly. @nathanletwory might have some tips on how to achieve the Arctic look in Raytraced.
Thanks for reporting this - it helps us prioritize items better when people take the time to write about what issues they’re having.
Regards,
-David