スペキュラライティング : 非正規化 Blinn-Phong モデルと 非正規化 Phong モデルの違い
概要
- この記事ではスペキュラライティングでの 非正規化 Blinn-Phong モデルと 非正規化 Phong モデルの違いについて簡単に説明します.
見た目の違い
- ポイントライトによるスペキュラライティングの計算をした際, 下図の左側が Phong モデルで, 右側が Blinn-Phong モデルの結果です.
- 特に平面に対するスペキュラライティングの結果が違っていて, 左側の Phong モデルは平面に対して丸いハイライトで, 右側の Blinn-Phong モデルは縦伸びのハイライトになっています.
- 一方で下図が現実世界でのスペキュラライティングの写真です. これを見ると, Blinn-Phong モデルの方がより現実世界に近いらしいことがわかります.
- では, 平面のスペキュラに関して 非正規化 Blinn-Phong モデルと 非正規化 Phong モデルはどうして違いがあるのでしょうか ?
非正規化 Phong モデル
- 非正規化 Phong モデルは下のような数式です.
- 重要なところは max( 0, dot(v, r) ) ^m で, 視点ベクトル v と光源の反射ベクトル r の一致度を m の値に応じて増幅させています.
- なので m の値が変化すると, 鏡面反射しているポイントライトのぼけ具合が変化していると言えます.
- つまり, 非正規化 Phong モデルはぼけたポイントライトの完全鏡面反射である, と言えます.
- 従って, 最初の図の平面のハイライトは ポイントライトがぼけたようなハイライトになります.
非正規化 Blinn-Phong モデル
- 非正規化 Phong モデルは下のような数式です.
- 重要なところは max( 0, dot(n, h) ) ^m で, これは m の値に応じて 法線ベクトルと一致するハーフベクトルの分布が変化することを表しています.
- ここでの m はシャイニネスと呼ばれていて, 物体の表面の粗さを表すラフネスと同じ意味合いで使われるパラメータです.
- またハーフベクトル h は表面上の細かい凹凸の法線であるマイクロファセットを表すものとして使われています.
- (マイクロファセットの分布関数 D(m) について http://d.hatena.ne.jp/hanecci/20130511 )
- つまり, 非正規化 Blinn-Phong モデルは完全なポイントライトが, 表面の粗さによってぼけた鏡面反射である と言えます.
結論
- 非正規化 Phong モデルよりも, 非正規化 Blinn-Phong モデルの方が良さそうです.
- 理由は表面の粗さによってスペキュラのハイライトがぼける現象を表現することができるからです.
- また物理ベースなシェーディングの際に, 表面上の細かい凹凸の法線であるマイクロファセットの分布関数を使う必要がありますがこれを使う際にはハーフベクトルが絡んできます.
- そして, 非正規化 Blinn-Phong はスペキュラライティングの計算時にハーフベクトルを使っているので, うまくマイクロファセットの概念をスペキュラライティングに取り込むことができます.
参考文献
- "Physically-Based Shading Models in Film and Game Production". SIGGRAPH 2010 Course Notes. Naty Hoffman
- "An Efficient and Physically Plausible Real-Time Shading Model". ShaderX7.
- "Computer Graphics Lighting ". University of Freiburg
- Crytek FreeSDK Shading