Blinn Model For Specular Reflection

本物のページはこちら→blinn-model-for-specular-reflection

フォンのモデルから派生した鏡面反射のモデル。
フォンのモデルから派生したのでBlinn-Phongのモデルと呼ばれている
フォンのモデルより計算が簡単でそれっぽく見えるのでよく利用されている。

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

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

  • 光源方向へのベクトルL視点方向へのベクトルVの2等分ベクトルH
  • 面の法線ベクトルN

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

(1)
\begin{align} H=\frac{L+V}{\|L+V\|} \end{align}

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

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

サポートサイト Wikidot.com