Blender で HDR 画像を使った IBL ( Image Based Lighting ) のやりかたです。 まぁこのことについては、いろんなブログなどで情報が出ているので、わざわざこのブログで記事にすることもないとは思ったのですが、基本的なことなので一応書いておきたいと思います。 なおこの記事では Cycles でレンダリングしています。

ワールドノードを使ってHDRIを環境テクスチャにする

HDR 画像で IBL を行うには、ワールドの環境テクスチャに HDR 画像を設定します。 ワークスペースから「Shading」を選ぶと作業がしやすいと思います。

Shadingワークスペースからワールドノードを使用

「ノードを使用」にチェックをいれて、「ワールド」を選択します。 Shift + A キーから「テクスチャ」→「環境テクスチャ」ノードを追加して、好みの HDR 画像を開きます。 これで IBL の完成です。

環境テクスチャノードを追加してHDRIを設定

つぎに HDRI 画像を回転して、自由に光源の角度を変えられるようにしていきます。 Shift + A キーから「入力」→「テクスチャ座標」ノードと「ベクトル」から「マッピング」ノードを追加して、下記のようにノードを組みます。

テクスチャ座標とマッピングノードを追加

テクスチャ座標の「回転」の Z 軸を変更すると、HDRI画像が回転します。

※Blender にデフォルトでインストールされているアドオン「Node Wrangler」を有効にしておけば環境テクスチャノードをアクティブにしておいて Ctrl + T キーを押すだけでテクスチャ座標ノードとマッピングノードを追加できます。

環境設定のアドオンから「Node Wrangler」にチェックを入れる
環境設定のアドオンから「Node Wrangler」にチェックを入れる
Ctrl+Tキーでテクスチャ座標ノードとマッピングノードを追加

HDRIでライティングの強さと背景の明るさを別々に調整する

HDR 画像のライティングを調整するには「強さ」を調整しますが、画像の明暗を調整するのでライティングを弱くすれば背景画像も同時に暗くなってしまいます。 そこでライティングの強さと背景画像の明るさを別々に調整できるようにノードを組み直してみます。

まずは「背景シェーダー」をもうひとつ追加して HDRI 画像とつなげます。

背景シェーダーを追加

次に「入力」→「ライトパス」ノードと、「シェーダー」→「シェーダーミックス」ノードを追加して、下記のようにつなげます。

ライトパスとシェーダーミックスノードを追加
ライトパスの「カメラレイ」をシェーダーミックスの「係数」に接続します

ふたつある背景シェーダーのうち、上の背景シェーダーの強さではライティング、下の背景シェーダーの強さでは背景画像の明るさを調整できます。

それぞれの背景シェーダーの強さでライティングと背景の明るさを調整

地面を設定して影を落とす

HDRI を環境テクスチャに設定しただけだと、地面が設定されていないので影が落ちません。

オブジェクトが落とす影がない

影を落としたい場合は、地面となるオブジェクトを用意する必要があります。 今回はシンプルに「平面」を追加して地面に見立てていきます。

まずは Shift + A キーから「平面」のメッシュを追加して、手頃な大きさに拡大します。

平面を追加しシャドウキャッチャーにチェックを入れる

オブジェクトプロパティタブにある「シャドウキャッチャー」にチェックをいれます。 すると平面には HDR 画像が反射して、背景画像との境目がなくなります 。 平面が透明になったように見えますが、そうではなく鏡のように HDR 画像を反射しています。

シャドウキャッチャーON/OFFの比較

一見これでよさそうなのですが、もとの平面の色が白かったので地面からの反射光が強すぎます。 なので平面にマテリアルを設定して色を変更します。

平面にマテリアルを設定する

背景の地面の色をスポイトでとり若干暗めにして平面の色に設定しました。 真っ白の場合とくらべて反射光が抑えられました。

反射光の強さの違い

Blender:背景画像と被写界深度