UnityのMeshRendererのCast Shadowsの設定項目にTwo Sidedという設定があります(図1)。
この設定は一体なんなのでしょうか?
[図1]
Cast ShadowsはMeshRendererが描画するメッシュをシャドウマップに書き込むかどうかの設定です。
これをOnにしていると図2のように影が落ちます。
しかし、よく見てみるとちょっと違和感のある影の落ち方をしています。
[図2]
このような現象はCastShadowの設定をTwo Sidedに変更すると解決することができます(図3)。
[図3]
では、なぜ図2のような現象が起きるのでしょう?
答えはシャドウマップに描画する際に背面カリングを行う設定でメッシュを描画しているからです。
背面カリングとはポリゴンの裏面を描画しない設定です。
閉じているモデルであれば、本来背面は映らないので、背面を描画しない設定でいいのですが、開いているモデルはカメラの位置によって、背面が見えてしまいます。
図4を見てみてください。実はこのティーポットのモデルはティーポットの蓋と本体との間に隙間があって、ティーポットの底が見える形状になっています。
ティーポットの底のメッシュは裏側が表示されているので、背面カリングで描画されていません。
このため、図2のような違和感のある影ができてしまっていたのです。
[図4]
Caster Shadowsの設定をTwo Sidedにすると、カリング設定がオフになり、表面、背面ともに描画されるようになります。
このため、Two Sided(両面)という設定が用意されているわけです。
RenderDocで確認すると、TwoSidedの時はちゃんとカリングがオフになっていました(図5)。
[図5]
More than 1 year has passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme