ライティング

フォンライティングモデル

このモデルでは、表面で反射した光を、次の3つの項を足し合わせたものとしてモデル化する。

アンビエント項

シーン中の間接的に跳ね返る光の量を、全体として近似したもの。

シーン全体のライティングのレベルをモデル化する。

間接的な跳ね返りがあることで、影になっている領域も完全な黒にはならない。

ディフューズ(拡散)項

各光源から直接来て全方向に均一に反射する光を記述する。

光沢のない表面での現実の光の反射をうまくモデル化できる。

スペキュラー(鏡面反射)項

光沢のある表面で見られる明るいハイライトをモデル化する。

スペキュラーハイライトは、光源が直接反射する角度と視角が近い場合に起こる。

フォン反射の計算

ある点で反射した光の明るさI\bold{I}は、以下のベクトル方程式で表される。

IRGB=(kAA)+i(kD(NIi)+kS(RiV)α)Ci\bold{I}_{RGB} = (\bold{k}_A \otimes \bold{A}) + \sum_i (\bold{k}_D(\bold{N} \cdot \bold{I}_i) + \bold{k}_S(\bold{R}_i \cdot \bold{V})^\alpha) \otimes \bold{C}_i

反射点からの方向ベクトルL\bold{L}は、表面の接線方向LT\bold{L}_Tと接平面上の法線方向LN\bold{L}_Nに分解できる。

L=LN+LT\bold{L} = \bold{L}_N + \bold{L}_T

内積(NL)(\bold{N}\cdot\bold{L})は、表面と直交するL\bold{L}の射影を表す。

そのため、法線成分LN\bold{L}_Nは、単位法線ベクトルN\bold{N}にこの内積をかけたものになる。

LN=(NL)N\bold{L}_N = (\bold{N} \cdot \bold{L})\bold{N}

ベクトルRi=(Rix,Riy,Riz)\bold{R}_i = (R_{ix}, R_{iy}, R_{iz})は、光線の方向ベクトルLi\bold{L}_iの反射である。

反射ベクトルR\bold{R}は、L\bold{L}と同じ法線成分を持つが、接線成分は反対向きとなる。

したがって、R\bold{R}は次のように求められる。

R=LNLT=LN(LLN)=2LNLRi=2(NL)NLT\begin{align*} \bold{R} &= \bold{L}_N - \bold{L}_T \\ &= \bold{L}_N - ( \bold{L} - \bold{L}_N ) \\ &= 2\bold{L}_N - \bold{L} \\ \bold{R}_i &= 2(\bold{N} \cdot \bold{L})\bold{N} - \bold{L}_T \end{align*}

ブリン・フォンライティングモデル