Blender Cycles の透明シェーダーがVolumeに影を落とすのはバグかも

前提。Blender の透明シェーダー、 Glass BSDF や Principled BSDF (with Transmission) 等は、光源に対して透明ではなく、他のシェーダーと同じように100%の影を落とします。影を落とした後に refractive caustics の形で、明るさを戻す考えです。これは全然普通の考えだと思います。

しかしここに、明るさを戻すときに影に対して caustics の明るさが足りないバグがあります。このバグに対しては caustics の量を変化させる方法はないので、影の量を小さくするワザを使います。ガラスを光源に対して完全に透明にするためには、この方法で shadow ray のみを Transparent BSDF に30%ほど迂回させてやる必要があります。裏技的ですが、常用しないといけないレベルにこの状況は頻出します。

そしてタイトルにもした、もっと大きくて困るバグは、透明シェーダーがオブジェクトの内側の volume にも影を落とすことです。そして困ったことに caustics はオブジェクトの内側には落ちないので、これではオブジェクトの内側はただ暗くなる一方です。これは牛乳等のマテリアルを volume scattering で作ろうとしたときに問題になります。先の方法でこの問題を回避するためには光源からの光の80%以上を Transparent BSDF に迂回させてあげる必要があります。

下の画像は上から、参考のための SSS、Principled BSDF (100% Transmission) + Volume Scattering の80%迂回、0%迂回です。

デフォルト(0%迂回)は腐った牛乳が表現したいときしか使えない。

Shadow ray を80% Transparent BSDF へ迂回することで Volume Scattering で初めて牛乳が作れるようになったわけですが、この方法には問題があります。先に述べたように外に落とす影に対しては30%迂回でちょうど正確な描写になり、内側のVolumeに対しては80%迂回する必要があります。つまりどちらも正しく描写する設定はないということです。下の図は光源だけを変えたものです。真ん中の薄いところの透けている部分を見てください。Volumeの明るさを正しく表示する方に合わせているので、影は周辺より明るくなってしまっています。これは影なし+causticsの計算としての表れです。

Cyclesでこの問題を解決した例は僕の観測するところではなく、うまくいってる画像はだいたいLuxCoreRenderでやってる感じでした。誰か直して。

作成者: show

Painter/Illustrator in Tokyo, Japan

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA