IBL レンダリングで影を落とす方法
Environment Texture->Background->World Output と接続し、HDRI ファイルを利用した IBL (イメージベースドライティング) レンダリングを行う時、床面を HDIR ファイルの画像そのものを利用しようとすると、そこに影が落ちないためにオブジェクトが浮いたような違和感のある画像となってしまいます。
しかし、影を落とすための Plane を追加すると、IBL による影は表示されますが、表示したい HDMI の床面の画像は隠れてしまいます。
そこで、RenderLayer と Compositing nodes を利用し、影を合成します。
設定手順は、以下の通りです。
- 床面に相当する Plane を作成します
- 被写体オブジェクトと床面オブジェクトを別レイヤにします
- ここでは、被写体オブジェクトをレイヤ 1 とし、床面オブジェクトをレイヤ 2 とします
- RenderLayer を 4 つ作成します (RenderLayer の基本的な使い方 も参照してください)
- 初期値で作成されている RenderLayer は無効にするか、名前を変えて利用します
- 各 RenderLayer を以下のように設定します
- 被写体用の RenderLayer 名を subject とし、Layer-Layer でレイヤ 1 のみオン、Layer-Exclude でレイヤ 2 のみオン
- これで、この RenderLayer は、床面オブジェクトを考慮せずにレンダリングされます
- 床面用の RenderLayer 名を floor とし、Layer-Layer でレイヤ 2 のみオン、Layer-Exclude でレイヤ 1 のみオン
- これで、この RenderLayer は、被写体オブジェクトを考慮せずにレンダリングされます
- 背景用の RenderLayer 名を environment とし、Layer-Layer でレイヤ 3 のみオン (実際はオブジェクトのないレイヤならどこでも構いません)、Passes-Environment をオン
- これで、この RenderLayer は、なにもオブジェクトがない状態でレンダリングされ、Environment パスを出力することができます
- 影用の RenderLayer 名を shadow とし、Layer-Layer でレイヤ 2 のみオン
- これで、この RenderLayer は、床面オブジェクトに被写体オブジェクトの影が落ちた状態でレンダリングされます
- 被写体用の RenderLayer 名を subject とし、Layer-Layer でレイヤ 1 のみオン、Layer-Exclude でレイヤ 2 のみオン
- Compositing nodes で、以下のようにノードを構築します
- Properties-Render-Film の Transparent をオンにします
- レイヤ 1 および レイヤ 2 を表示してレンダリングを実行します
上記設定でのレンダリング結果
すこし影が濃いので、Compositing nodes で、Add の Fac を 1.0 から 0.2 に変更
このように、Compositing nodes の Add の Fac は、影の濃さを調節するために使用してください。
- 最終更新:2014-01-07 11:36:58