微小面モデルーーPBRレンダリングパイプラインの材質

PBRレンダリングパイプラインがさまざまな材質（マテリアル）をリアルに表現できるのは、より複雑な材質モデルを使用しているからです。PBRレンダリングパイプラインが登場する前は、通常使用していた材質モデルは、環境光（Ambient）、拡散反射（Diffuse）、鏡面反射（Specular）の3つの部分で構成されていました。Lambertモデルは拡散反射をシミュレートし、Phongモデルは鏡面反射をシミュレートします。ただし、これらのモデルは、粗さが違う表面の異なる反射効果をシミュレートすることは困難です。従って、シミュレートされた材質は、ツルツルとしたプラスチック表面のように見えます。



PBRレンダリングパイプラインは、微小面（Microfacet）と呼ばれる材質モデルを利用しています。これは物理的な観察に基づいて、物体（オブジェクト）の表面には多くの小さな凹凸（微小鏡面）があると考え、サイズと向きが異なる微小面は、入射光を反射するときにさまざまな反射効果を生成します。従って、肉眼で様々な材質特性を確認できるようになります。したがって、微小面モデルは、次の図に示すように、さまざまな異なる材質をより写実的にシミュレートできます。

![Blog-Study_PBR-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/a5f27088-c883-6659-c439-f10b1ad9993e.png)




PBRレンダリングパイプラインは近年ゲームレンダリングの分野に用いたが、微小面モデルは早くも1980年代にコンピュータグラフィックスの分野で提案されています。本日紹介する技術論文は、1981年にACMComputerGraphicsに掲載されたものです。この論文では、現実の世界の材質をシミュレーションする数学モデルを提案し、Cook-Torranceモデルとして知られます。Cook-Torranceモデルは、コンピュータグラフィックス材質モデルの発展に重要な影響を及ぼします。今日でも、多くのゲームエンジンのPBRレンダリングパイプラインで、Cook-Torrance材質モデルの簡略版と変種を見ることができます。



Cook-Torranceモデルが登場する前は、コンピュータグラフィックスで物体材質モデルをシミュレートするための設計アイデアのほとんどは、次のような幾何光学に基づいていました。理想的な拡散反射をシミュレートするLambertモデル、余弦関数指数関数でハイライトをシミュレートするPhongモデル、grazing angleのハイライトを考慮するBlinnモデルなどがあります。これらのモデルは、現実の世界の材質をシミュレートできますが、シミュレートできない材質もあります。それに対し、Cook-Torranceモデルはそれらと違って、物体の表面が多くの小さな平面で構成されているという物理現象に基づいています。これらの平面の方向は異なり、滑らかな物体の場合、微小面の方向分布はより均一で、粗い物体の場合、微小面の方向分布はより分散しています。これにより、Cook-Torranceモデルの用途が広がり、表面の粗い材質をシミュレートできるようになります。前任者によって提案されたモデルは、鏡面反射とハイライトの効果をシミュレートする場合、プラスチックに似ています。Cook-Torranceは、プラスチックをシミュレートできるだけでなく、金属などの粗い表面のハイライト現象もシミュレートできます。



次に、反射照明モデル、つまりCook-Torranceモデルの通式を紹介します。次に、ハイライト項の表現式を紹介します。微小面ベースの物理モデルと従来の分析モデルの最大の違いは、鏡面反射ハイライトの処理の違いであるためです。微小表面モデルのハイライト項に基づいて、フレネル現象、微小面の方向分布関数、シャドウオクルージョン項など、より多くの要素を考慮に入れて、一般的な材質モデルとなります。

---


## 一、反射モデル



光源、物体の表面、および観察者が与えられた場合、反射モデルは、光線が光源の方向から物体の表面に当たり、観察者の方向から反射される状況を表します。その中には、光の強度と色の情報が含まれています。反射光の強度と色は、光源から放出される光の強度と色、および物体の表面の反射率に依存します。通常、BRDF（Bidirectional Reflectance Distribution Function）関数で物体の表面の光に対する反射能力を表します。次に、論文の著者がこの関数をどのように定義するかを紹介します。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/60790d0b-2d82-ca0e-e891-c6215f9ebb96.png)




物体の表面の反射能力関数、つまりBRDF関数は、次のように定義できます。L方向から入る光のどれだけがV方向から放出されるか。入射光が無限遠の指向性光であり、光強度がIiで表されるとすると、L方向から点Pに入射する光エネルギーは次のように表すことができます。


![Blog-Study_PBR-fx1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/908be17d-971c-9928-ed9d-e3736c50315a.png)



ここで、ωは入射光の方向角です。 RがBRDF関数で、Irが反射光の強度である場合、Irは次のように表すことができます。

![Blog-Study_PBR-fx2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/2d02ea1d-3c1c-1a49-9a1f-22a3425e4914.png)




ここで、s + d = 1は、それぞれハイライトと拡散反射係数を示します。環境光の影響を加えると、上記の式を次のように変更できます。

![Blog-Study_PBR-fx3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/4fee7936-bd64-b9a3-43e1-dd9eea78bf60.png)




上記の式は、照明計算式です。


---

## 二、鏡面反射項（Specular Term）と各項の式



著者は、光源の方向と視線の方向の間のベクトルHを定義しています。上の図に示すように、物体の表面上の点P、光源の方向L、視線の方向Vが与えられます。その場合、その中間ベクトルは次の式で表すことができます。

![Blog-Study_PBR-fx4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/26072a33-cfb4-498f-f4ad-1f70479ad549.png)


ここで、θはLとVの間の角度の半分です。したがって、
![Blog-Study_PBR-fx5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/2675971b-0168-c8eb-6bc6-af339ceb466a.png)



著者は、環境光が一定の値で、拡散反射が理想的な拡散反射であると想定しているため、RaとRdは視線に依存しません。しかし、鏡面反射項Rsは視線方向に関連しています。微小面モデルの定義によれば、物体の表面は、無限の方向が違う微小面で構成され、各微小面は、入射光に鏡面反射を生成する鏡面と見なすことができます。したがって、法線方向がHと同じ微小面のみが、鏡面反射項に寄与します。鏡面反射項を定義する式は次のとおりです。

![Blog-Study_PBR-fx6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/f321bb16-3cc7-51d8-88a6-ee7b9ee10664.png)


このうち、Fはフレネル項、Gはシャドウオクルージョン項、Dは方向分布項です。次に、これら3つの項の式を1つずつ紹介します。



まず、シャドウオクルージョンを紹介します。前任者のモデルによれば、G関数は次の式で表すことができます。
![Blog-Study_PBR-fx7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/3c1d886b-bc4e-cf36-7751-b26ff174bbb2.png)



方向分布関数Dは、H方向の面の比率を表します。前任者のモデルの中で、BlinnとBeckmannによって提案されたものは特に有名です。Blinnモデルの式は次のとおりです。

![Blog-Study_PBR-fx8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/9b8c8b67-cdd7-c270-cbd9-18054ab02192.png)




ここで、Cは定数です。Beckmannモデルの式は次のとおりです。
![Blog-Study_PBR-fx9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/ed5d990c-da40-b22e-098b-0b24f02d9ae7.png)



どちらのモデルでも、αはHとNの間の角度を表し、mは鏡面分布の範囲を決定します。mの値が小さい場合、微小面の方向は比較的均一であるため、鏡面反射の範囲は比較的狭くなります。それどころか、次の図に示すように、鏡面反射の反射範囲は比較的広いです。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/aca49191-bea5-b473-ec60-a323a88da08e.png)



(a)と(c)はBeckmannモデルの反射分布です。(a)はm=0.2、(c)はm=0.6の場合の反射分布を表します。(b)と(d)ガウスモデルの反射分布です。(b)はm=0.2、(d)m=0.6の場合の反射分布です。上の図からわかるように、m値は表面の粗さを表しています。物体の表面にさまざまな粗さが存在する場合、分布関数Dは、さまざまなm値の加重平均になります。

![Blog-Study_PBR-fx10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/82350675-9f2a-e584-ebb3-514abfb0f428.png)

前任者によって提案されたフレネルの式によれば、フレネルの項Fは次のように表すことができます。

![Blog-Study_PBR-fx11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/2f435271-4dd8-b047-ca20-25868e35559c.png)


ここで、c=cosθ=V・H、g2 = n2+c2-1。 θ=0の場合、c=1およびg=n。それによって、

![Blog-Study_PBR-fx12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/49724f11-5750-6060-15ff-0c6952ca9375.png)

したがって、次のことが求められます。

![Blog-Study_PBR-fx13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/e17fce72-65ea-4e91-6236-cb987b855e82.png)



これまで、Cook-Torranceモデルのスペキュラーアイテムに関するすべてを紹介してきました。次に、論文でレンダリング結果を示します。

---

## 三、その他の結果



著者は、さまざまなパラメータを使ってさまざまな材質の物体をレンダリングしました。下の図に示すように、モデルが異なれば、s、d、mの値も異なります。
![Blog-Study_PBR-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/ff43df89-9788-c669-22d6-c98ecdd75163.png)



レンダリングされた結果を次の図に示します。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/7fbadea5-2b36-02ad-784c-a24643a121ab.png)



次の画像は、複数の材質を含む物体をレンダリングした結果です。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/24d2636f-86ba-db8e-6c33-08df50f55e20.png)



![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/c56b33aa-be57-4661-81a6-c4bbcedb7f1d.png)

上の画像に示されているように、左側に黄色のプラスチック材質のボトル、右側に黄色の銅のボトルで、いずれもCook-Torranceモデルでレンダリングされました。上の図からわかるように、Cook-Torranceモデルは、物体の表面のさまざまな粗さの照明条件を適切にシミュレートできるため、プラスチック材質の表面に明確なハイライト（鏡面反射）をレンダリングできるだけでなく、金属表面のぼやけたハイライトをレンダリングすることもできます。このような特性は、従来のモデルでは実現できない効果です。

---
## 四、まとめ



今回紹介した論文は微小表面モデルに基づく新しい材質モデルを提案した。前のモデルと比較して、このモデルは、フレネル現象、シャドウオクルージョン、微小面の方向分布などの要素が鏡面反射項に対する影響を考慮しています。したがって、モデルは粗い表面での鏡面反射現象をうまくシミュレートできます。さまざまな粗さのパラメータ値の場合、このモデルはより広範囲の材質をシミュレートできます。

---

## 五、論文情報



**論文の著者**

Robert L. Cookは、コーネル大学を卒業した有名なコンピュータグラフィックス学者です。現在、Pixarアニメーションフィルムカンパニーの有名なレンダリングエンジンRenderManの創設者の一人であり、現在は退職しています。



Kenneth E. Torrance、有名なコンピュータグラフィックス学者です。コーネル大学の機械航空宇宙工学部で働いていましたが、現在は退職しています。



**ダウンロード**

http://inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.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