【blender 2.8】EEVEEで反射を表現する
EEVEEは、高速でとてもキレイなレンダリングをしてくれる反面、デフォルトだと表現できない要素がいくつかあります。「反射」もその中のひとつです。今回は、EEVEEで反射を表現するための設定方法についてまとめていきたいと思います。
デフォルトだと何も反射しない
EEVEEのデフォルト状態だとマテリアルで反射するノード設定にしても何も反射されずのっぺりした形で表現されてしまいます。
下記画像はモンキーオブジェクトにプリンシプルBSDF(Principled bsdf)でメタリックの数値を1にして粗さ(Metalic)を0にしている鏡面状態にしていますが、何も反射されないので陰影が出ずにどんな形状かわからない形になっています。
床の平面は2つのオブジェクトを配置し、上面の面は透明に見える様にプリンシプルBSDF(principled bsdf)で「伝播(Transmission)」を1にしています。下の平面は少しグリーンの色味にしています。
床は透過も反射も何も反射されません…。
いくつかの設定変更で反射が表現されます
レンダーなどのいくつかの設定を変更することで、これらの反射が表現されるようになります。
レンダーのスクリーンスペース反射をオン
プロパティメニューの「レンダー」より「スクリースペース反射(Screen Space Reflections)」をオンにします。この時床の透過も出したいので「屈折(Refractions)」もチェックを入れてオンにします。
これでモンキーの顔の陰影がしっかりでて、となりの赤い球体が反射しています。床にもきちんと反射していますが、反射元のオブジェクト(モンキーなど)のビューから見えていない下部や裏側の部分の反射が表現されていません…。スクリーンスペース反射の仕様のようですね。
見えない部分の反射はライトプローブで補完
見えない部分の反射を表現するためにライトプローブ(Light Probe)をセットします。ライトプローブは、「Shift + A」を押して展開するオブジェクト追加メニューにあります。今回は床の反射設定を行いますので「反射平面(Reflection Plane)」を追加します。追加語に床オブジェクトを覆うようなサイズに拡大し、パラメーターの「距離」を配置している3Dオブジェクトの高さをカバーできる数値に変更すればOKです。
見えない部分の反射もしっかりされました。
床の透過を設定
ただ、スクリースペース反射の屈折をオンにしていますが、まだ床が透過できていません。透過させたい床の平面のマテリアル設定の「設定」にある「スクリーンスペース屈折」をオンにします。これで床が透過されます。プリンシプルのカラーも白に設定するのを忘れない様にしないといけないですね。(うっかり忘れて透過しないとあわててしまいました…)
環境テクスチャでIBLを設定
最後に背景の設定を変更してIBL(Image Based Lighting)の設定をします。プロパティメニューの「ワールド」を選択し、「カラー」の横にある○をクリックしてメニューから「環境テクスチャ(Environment Texture)」を選択してHDRIの画像をセットします。
IBL(Image Based Lighting)
イメージベースドライティング | CG用語辞典 | CGWORLD Entry.jp
IBLと略すこともある。実在する風景の写真や高精細な画像をライティングの色情報に使用して、シーンをレンダリングする方法。広いレンジの明るさ情報を記録できるHDRIを用いることで、自然な光と陰影を表現できる。ミラーボールなどを使って現実世界を撮影した写真をライティングに用いると、実写によくなじむCGを制作できる。そのため、特に実写合成で多用されている。
※HDRIの画像は無料配布しているサービスなどもあります。今回はBlender Cloudの素材を利用しています。
細かい設定を知ると広がるEEVEEの表現
EEVEEは細かい設定を知っていくと表現の幅がホントに広がりますね。
今回は、床のみ見えない部分の反射があったので反射平面でしたが、モンキーにのみ見えない部分の反射があった場合は、モンキーにライトプローブを設定する方法もあります。この場合は反射平面ではなく「反射キューブマップ(Reflection Cubemap)」を使用することになります。反射キューブマップはベイクが必要になるので、そこだけご注意くださいませ。
色々と複雑ですが、頑張ってEEVEE使いこなせるように勉強していきたいです。