正反射方向ベクトル

最終更新日21 Feb 2017 12:03

正反射方向ベクトルの計算

理科の授業を思い出してほしい。
入射角と、反射角は同じだったよね?
だから、正反射方向ベクトルを求めるには

  • 光源と頂点を結ぶベクトル
  • 視線と頂点を結ぶベクトル

を足し算すればいい。


この、vertexとlightとeyeとreflectionを結ぶと、平行四辺形になりますね。
ここれいう頂点は、反射する点てこと。
正反射方向ベクトルを仮にsとする

(1)
\begin{align} s=\vec{L}+ \vec{V} \end{align}

そして、長さは特に意味をなさないので、正規化するのが普通。
GLSLのコードで書くとこうなる

vec3 reflection = normalize(lightpos+viewvec);//正反射方向ベクトル

この正反射方向こそ、ハイライトの方向なのである。
この正反射方向ベクトルはHalfway Vectorとも呼ばれている。
光源と観測者の中間方向だからである。(2)
\begin{align} max\{ \vec{r} \cdot \vec{n} ,0\}^{shininess}*specular_{light}*specular_{material} \end{align}

shininessとは鏡面反射指数である。

サポートサイト Wikidot.com