物理ベースレンダリングーーリアルな環境光で物体を照明する

ゲームエンジンにおいて、物体（オブジェクト）を照らす光源は、平行方向光、点光源、スポットライト、ボリューメトリックライトなどさまざまなものがありますが、いずれも実際の光源を近似したもので、現実の照明の複雑さをうまくシミュレートすることはできていません。照明効果のリアルさを高めるために、イメージベースドライティング（Image-based Lighting）を使用しています。例えば、「Sky Box」は環境光スタンプとして、「Reflection Probe」は反射スタンプ（Reflection Mapping）として働きます。最近流行っている物理ベースレンダリングパイプラインの中に、IBLは不可欠な一部となっています。

今日紹介したいのは、1998年にPaul DebevecがSiggraphカンファレンスで発表した論文です。この論文では、HDR（High Dynamic Range）図とグローバルライト照明の技術を使用して、どのように仮想物体を現実の写真に融合させるかという問題を取り上げます。 実現効果と言えば、今でよく言うAR（Augmented Reality）技術に似ています。 仮想物体をレンダリングするとき、HDR画像を環境光スタンプとして使用する方法で照明結果を計算します。この方法は、IBLを照明の計算に用いる最初の実験の一つである。レンダリング結果下図のように示します。
![Blog-Study_IBL-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/3a10d50d-434a-65b7-0f4a-4d61e69944e4.png)


このうち、左図は実に撮った写真で、右図は仮想物体を実の撮った写真に合成した結果です。右図からわかるように、仮想物体の金属材質が周りの環境を反射しハイライトも形成し、前述の方法で実の物体と整合性のある照明結果を作り出すことができることが分かります。

この論文では、シーン内の物体を3種類に分類して処理しました。アルゴリズムの枠組みを以下の図に示す。
![Blog-Study_IBL-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/aa8ce4ed-81e2-570c-af8c-dc7506e1ad9f.png)


3種類のシーン内の物体はそれぞれ、「遠景」「近景（局部）」「仮想シーン」です。遠景をレンダリングするとき、実に撮った写真とシンプルなジオメトリでレンダリングします。すべての照明情報は撮影した写真から得ています。また、近景をレンダリングする場合、リアルシーンが仮想シーンに与える影響をシミュレートする必要があるため、著者は物体の材質を近似推定しました。最後に、仮想物体をレンダリングする際、環境照明からの入射光を用いて、照明を計算します。アルゴリズム処理の略図を以下に示す。
![Blog-Study_IBL-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/e9fadeb9-da02-3c7a-1159-e92d9d44927e.png)


まず、実際のシーンを撮影します。次に、反射プローブを用いてシーンの環境光を取得します。環境光スタンプを取得する際、HDR表現を利用します。 それから、取得した環境光スタンプを用いて、遠景をモデル化します。最後に、仮想物体だけでなく、大域照明ソフトウェアで仮想物体と照明効果を持つ近傍の局所物体をレンダリングし、実に撮影した写真に融合させます。

次は、この論文のアルゴリズムについて詳しく説明します。

## 一、リアルな環境光で物体を照らす

著者は、HDR画像を環境照明のスタンプとして使用しています。HDR画像は普通のLDR画像より実際の照明環境に近いことを説明するために、著者はHDRとLDRの環境光スタンプを別々にレンダリングし、両者の結果を比較したところ、下図のような結果になりました。
![Blog-Study_IBL-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/41c40cad-0167-281c-1885-05790cc45917.png)


1行目はHDR画像でレンダリングした結果、2行目はLDRでレンダリングした結果を示しています。右の3列の結果のうち、LDRのレンダリング結果は、LDRの入射光強度をHDRと同じにできるように、光量を6倍にして計算したものです。しかし、レンダリング結果を見ればわかるように、HDR環境光画像のレンダリング結果はより詳細で、LDRレンダリング結果は平坦に見えてしまうのです。そこで、著者は、次の実験では、完全にHDR画像を環境照明の入射光として使用した。

## 二、無限の遠景

遠方の物体をモデル化するために、著者はライトベースモデル（Light Based Model）を提案していました。この方法は、実は現在によく使われているスカイボックスと似ています。下図のように、HDRライトマップを四角い箱にマッピングして遠方の背景にします。
![Blog-Study_IBL-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/f3614ab3-448f-5df3-bcd4-9700e013cf82.png)


このマップは無限遠のシーンを表示することに使用されるだけでなく、仮想物体への入射光のレンダリングにも使用されます。

## 三、近辺の局部シーン

近辺の局部シーンの現実シーンと仮想シーンのライト交互をシミュレートするためには、近辺の局部シーンを幾何モデル化するだけでなく、その材質の情報を取得する必要もあります。材質取得ツールで実景の材質を計測することができるが、この論文の著者は反復的なアプローチで推定します。この方法のプロセスは次のとおりです。

1、まず、ローカルのリアルシーンのジオメトリをモデル化し、次に、diffuse、diffuse＋specular、あるいはBRDF任意の（空間的にさえ変化する）モデルなど、マテリアルを推定する。
2、推定した材質モデルに対して、初期パラメータを選択する。
3、大域照明アルゴリズムでローカルシーンをレンダリングする。
4、視点を変えて、レンダリング結果と実際の撮影結果を比べてみてください。
5、レンダリング結果が実際の撮影結果と一致しない場合は、モデルパラメータを調整し、ステップ3に戻って反復作業を続ける。

## 四、近辺の仮想シーン

近辺の仮想シーンをレンダリングする際、複数の環境光マップを取得し、入射環境光として1つの完全なマップに統合する必要があります。これは、Light Probeを使用して環境光を取り込む場合、Probe球の奥にあるシーンは取り込めないからです。同時に、カメラの方向を向いたシーンでは、球のエッジからの反射が伸びるため、サンプリングレートが低くなり、不完全になりがちです。そこで、プローブ球をさまざまな角度から撮影し、その結果を組み合わせることで、最終的に完全なマッピングを作成することに成功しました。下図は、著者が撮影した3つの環境光マッピングと、仮想シーンのレンダリング結果である。

![Blog-Study_IBL-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/19ba4c19-ffc8-9388-0f0a-48f98543b342.png)
![Blog-Study_IBL-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/c94a758a-69ba-bee6-1356-4ed26ff36fc5.png)


上の画像はLight Probeを用いて撮影した3枚のマッピング画像で、下の画像は合成された環境光マッピングでレンダリングされた仮想シーンの画像です。レンダリングには、著者が大域照明レンダリングエンジンであるRadianceを使用しました。現在に私たちがゲームエンジンで使用しているリアルタイムアルゴリズムとは異なり、「Radiance」はリアルタイムで計算を行うものではありません。当時のハードウェアの制約から、オフラインレンダリングをサポートしました。

## 五、 融合結果

著者は、遠景、近景、仮想のシーンの3つを融合させ、最終的に下図のような結果を得た。
![Blog-Study_IBL-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/750d0162-4801-ea6e-96b1-9c890485a52f.png)
![Blog-Study_IBL-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/e13a0c28-20bd-6724-4e78-b6bd5cf1ea73.png)




図(a)は実際に撮影した結果です。 図(b)は、Light Probeで撮影した環境光マッピングの設定です。図(c)～(f)は、繰り返しによる局所シーン（床）の推定を示す。著者は、仮想物体と床との間のシャドウオクルージョンや多重反射を示すために、純粋なdiffuseダンボールを用いて床を幾何学的に近似し、第三章の反復アルゴリズムによって床の材質パラメータを推定しました。図(g)は、仮想物体を実景に融合させた結果です。

## 六、 結論

本論文では、実写のライティングマッピングを用いて仮想物体をレンダリングし、融合させるアルゴリズムを提供しました。このアルゴリズムは、実際の撮影シーンに仮想物体を融合させるのに有効である主な理由は、仮想物体をレンダリングするための環境光マッピングを実写のHDR画像から取得することで、レンダリングされた仮想物体の照明を実写シーンと一致させることができるからです。また、著者がレンダリング時に仮想物体と相互作用する実景の幾何や材質を推定していることである。さらに、その推定結果に基づいて、大域照明をレンダリングします。最終的には、現実のシーンと仮想物体の間の反射やシャドウオークルジョンを捕捉する効果があります。

## 七、 論文情報

**著者情報**
Paul Debevec 南カリフォルニア大学非常勤研究員、GoogleVRプロジェクトの主要メンバー、有名なコンピュータビジョンとグラフィックス研究の学者。Light Stageを用いた人間の顔の反射モデルなどのBSDFの取得や、ハイダイナミックマップを用いた画像ベースのモデリングやレンダリングなどの研究を行っています。 彼の研究は、マトリックス、スパイダーマン2、キングコング、スーパーマンリターンズ、スパイダーマン3、アバターなど多くの有名な映画のレンダリングに使用されています。

**ダウンロードのリンク**
http://www.vis.uni-stuttgart.de/plain/vdl/vdl_upload/103_28_debevec-siggraph98.pdf

---
UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、**パフォーマンス分析**と**最適化ソリューション**及び**コンサルティングサービス**を提供している会社でございます。

今なら、UWA GOTローカルツールが**15日間に無償試用**できます！！
よければ、ぜひ！

UWA公式サイト：https://jp.uwa4d.com
UWA GOT OnlineレポートDemo：https://jp.uwa4d.com/u/got/demo.html
UWA公式ブログ：https://blog.jp.uwa4d.com