Shade3Dで大域照明(パストレーシング、フォトンマッピング)を使用したレンダリングは、
exr/hdrといったダイナミックレンジを持つイメージ(HDRI:High Dynamic Range Image)を背景に指定している場合に、
その背景自身が光源として反映されます。
レンダリングでテクスチャイメージを光源として扱うことを「IBL(Image Based Lighting)」と呼びます。
HDR/HDRI
pngやjpegイメージは、色のRGB(Red/Green/Blue)の要素の範囲として
0.0-1.0の値を持ちます。
ファイルフォーマットとしては、RGBそれぞれは内部的に整数値の1バイトで表現され0-255が0.0-1.0の実数値に相当します。
exrやhdr形式のイメージの場合、この1.0を超える表現が可能になっています。
1.0を超えるピクセル要素を持つ状態は「HDR(High Dynamic Range) 」(ダイナミックレンジを持つ)となり、
その時のイメージは「HDRI(High Dynamic Range Image)」と呼ばれます。
ファイルフォーマットとしては、RGBに加えて指数情報を持つ形になります。
これにより、0-255の256段階よりももっと細かく表現できるようになります。
なお、HDRに対比するようにpng/jpegなどのダイナミックレンジを持たないイメージを「LDR(Low Dynamic Range)」と呼ぶこともあります。
このHDRにより、テクスチャイメージとしてピクセルごとに発光させるといった表現が可能になります。
光源になるわけですね。
HDRIのイメージ単体を見ると、png/jpegと見比べてもモニタ上では違いが分かりにくいです。
ところがレンダリングした場合はそれぞれが発光可能な状態になるため、
仕上がりに大きく影響します。
以下は、ShadeExplorerの「プリセット」-「背景」から「Park_of_pine_1.shdbgr」を読み込んでリニアワークフローとしてまずは「レイトレーシング」でレンダリングしました。
無限遠光源の明るさを0.25として直接照明を弱くして、背景のIBLが分かりやすくなるようにしています。
この場合は大域照明は「無し」で直接照明のみが反映されています。
背景は光源としては作用していません。
パストレーシングでレンダリングしました。
このときの背景画像(exr形式)はダイナミックレンジを持っています。
試しにこの背景画像をjpeg形式にして保存し、jpeg画像を背景に割り当ててレンダリングしてみました。
若干暗くなりますね。
背景は光源になりますが、ダイナミックレンジを持たないため光としては不足した状態になっています。
HDRIとして背景を指定すると背景が光源になるため、ライティングとしてはより現実に近い表現を目指すことが可能になります。
特に野外シーンの場合は、HDRIでの背景イメージはよりフォトリアルに近づく手段として有効です。
HDRIはどうやって作成する ?
背景としてのHDRIは、カメラを使用しても作成するのには難易度があります。
大きく、以下の2つの処理が必要です。
- 360度パノラマ画像の作成
- HDRに加工
360度パノラマ画像の作成
「360度パノラマ画像」は、
以下のような2×1の解像度比のまわりぐるっとの球からの撮影を正距円筒として平面展開した画像です。
「Equirectangular(エクイレクタングラー)」と呼ばれます。
普通にカメラで撮影しただけではこの画像は得られず、
複数枚撮影してつなげる(「スティッチ」と呼びます)加工処理が必要です。
また、常に動いている雲や町中など、一発で撮影するのは難易度がありそうですね。
そのために撮影に魚眼レンズを使用して、できるだけ撮影枚数を抑えるということも行われます。
なお、RICOH社のTHETAなど360度撮影ができるカメラを使用すると、360度パノラマ画像は1回で撮ることができます。
ただし、高解像度にしたい場合や品質にこだわりたい場合は、やはり高解像のカメラでの撮影とスティッチ作業が発生することになります。
HDRに加工
カメラで撮影したそのままの画像は、ダイナミックレンジを持たないjpeg形式で最終出力されることが多いかと思います。
この状態ではダイナミックレンジは持たないため、露出を変えて3枚以上撮影し、後で合成することでHDRを表現します。
試しに、RICOH社のTHETAを使って撮影した360度パノラマ画像をHDRに加工してみました。
通常の露出での撮影/露出を暗くしたもの/露出を明るくしたもの、の3枚を素材として用意します。
↓ 通常の露出で撮影
↓ 露出(暗)で撮影
↓ 露出(明)で撮影
露出を暗くすると、空がより明るいのが分かりますね。
このときに明るくなっている箇所が光源としても強い部分となりそうです。
露出を明るくすると、落ち葉の明暗がより分かりやすくなっています。
この3枚のパノラマ写真を
ダイナミックレンジを扱えるツールで合成します。
Adobe社のPhotoshopや Serif 社のAffinity Photoなどでも合成できますが、HDR合成専用のツールもあります。
以下の画像は、Affinity Photoでの合成画面です。
これをexrファイルとして保存し、
Shade3Dに背景として読み込んで無限遠光源の明るさを0にし、背景IBLだけでパストレーシングでレンダリングしました。
無限遠光源や点光源を配置しなくても、背景IBLだけで現実にあるかのような表現に近づきました。
背景の「光源としての明るさ」を調整
背景として使用するhdr/exrファイル自身は、数値的に正確に光の明るさが記録されているわけではありません。
また、明るさの単位も持っていません。
そのため、レンダリング時には現実よりも暗すぎたり明るすぎるということが起きることがあります。
「背景のレンダリングはそのままにして、IBLとしての明るさだけ変えたい」という場合は、
統合パレットの背景ウィンドウの「光源としての明るさ」より調整できます。
IBL表現はどのレンダリング手法で使用できる ?
ここで解説したIBL表現は、大域照明を使用しないと反映されません。
Shade3Dのレンダリング設定で「大域照明」の「パストレーシング」を使用することでIBLが反映されます。
「ラジオシティ」では使用できません。
「フォトンマッピング」でもIBLとしては反映されますが、若干意図しない結果となりました(Shade3D ver.17/18で確認しています)。
左がパストレーシング、右がフォトンマッピングでのレンダリングです。
光源は背景のIBLのみ使用しています。
フォトンマッピングの場合は、全体的に暗くなり地面の平面の周囲にうっすらと黒い部分が出てきています。
フォトンマッピングでレンダリングする場合は、背景の「光源としての明るさ」は0として、
光源としては無限遠光源や面光源、点光源などを使用したほうがいいかもしれません。
今回はHDRIとIBLについての説明でした。
次回は、レンダリングの設定の説明を再開予定です。