Blinn-Phongのモデル

最終更新日30 May 2017 13:17

Phongのモデルから派生した鏡面反射のモデル。
Phongのモデルから派生したのでBlinn-Phongのモデルと呼ばれている
Phongのモデルが正反射ベクトルを使うのに対し、Blinnのモデルはハーフベクトルを使用する。
Phongのモデルより計算が簡単でそれっぽく見えるのでよく利用されている。

Blinn-Phongのモデルはエネルギーを保持しない、と言われている。
物理的に正しいわけではない。でも見た目をそれっぽく見せることができる。

物体表面を微小な面の集合と考え、
その微小面の方向が面の法線方向を中心に分布しているものと仮定する。
その分布は、ガウシアン分布や回転楕円体状の分布に従うものとする。
これらの関数は、

  • $\vec{h}$…光源方向へのベクトルL視点方向へのベクトルVの2等分ベクトル(half-vector)
  • $\vec{n}$…面の法線ベクトル

とがなす角θによって表される。

(1)
\begin{align} \vec{h}=\frac{\vec{l}+\vec{v}}{\|\vec{l}+\vec{v}\|} \end{align}

角θの関数として微小面の分布を考え、
その微小面から完全鏡面反射として視点へとどく光の割合を求めることにより、
反射光の強さを計算する。
コードで書くとこんなかんじ

vec3 half=normalize(light+viewvec);//halfway vector
float specular = dot(half,_normal);//なす角θ

Blinn-Phongの正規化BRDF

Blinnの論文ではBRDFは正規化されていなかった。
正規化係数は

(2)
\begin{align} \frac{m+8}{8} \end{align}
(3)
\begin{align} \frac{m+8}{8\pi}(\overline{cos})^mc_{spec} \end{align}
  • $m$…パラメータ 大きいほどテカる
  • $c_{spec}$…スペキュラカラー

Blinn-Phongのモデルに物理的な意味をあてはめるならば

Bibliography
2. Three.js MeshPhongMaterial….Blinn-Phongのモデルでパラメータをいじるとどうなるのか、手軽に体験するならこちら

not-pbr phong


files

サポートサイト Wikidot.com not-pbrphong