ライティング
フォンライティングモデル
このモデルでは、表面で反射した光を、次の3つの項を足し合わせたものとしてモデル化する。
アンビエント項
シーン中の間接的に跳ね返る光の量を、全体として近似したもの。
シーン全体のライティングのレベルをモデル化する。
間接的な跳ね返りがあることで、影になっている領域も完全な黒にはならない。
ディフューズ(拡散)項
各光源から直接来て全方向に均一に反射する光を記述する。
光沢のない表面での現実の光の反射をうまくモデル化できる。
スペキュラー(鏡面反射)項
光沢のある表面で見られる明るいハイライトをモデル化する。
スペキュラーハイライトは、光源が直接反射する角度と視角が近い場合に起こる。
フォン反射の計算
- 視線方向ベクトルV(カメラのfrontベクトルの逆ベクトル。反射点から仮想カメラの焦点に伸びる)
- ambientの明るさA=(AR,AG,AB)
- 光が表面に当たる点での面法線N
- ambientの反射率kA=(kAR,kAG,kAB)
- diffuseの反射率kD=(kDR,kDG,kDB)
- specularの反射率kS=(kSR,kSG,kSB)
- specularの光沢度の指数α
- 光源iの色味と明るさCi=(CiR,CiG,CiB)
- 光源iの反射点からの方向ベクトルLi
ある点で反射した光の明るさIは、以下のベクトル方程式で表される。
IRGB=(kA⊗A)+i∑(kD(N⋅Ii)+kS(Ri⋅V)α)⊗Ci
反射点からの方向ベクトルLは、表面の接線方向LTと接平面上の法線方向LNに分解できる。
L=LN+LT
内積(N⋅L)は、表面と直交するLの射影を表す。
そのため、法線成分LNは、単位法線ベクトルNにこの内積をかけたものになる。
LN=(N⋅L)N
ベクトルRi=(Rix,Riy,Riz)は、光線の方向ベクトルLiの反射である。
反射ベクトルRは、Lと同じ法線成分を持つが、接線成分は反対向きとなる。
したがって、Rは次のように求められる。
RRi=LN−LT=LN−(L−LN)=2LN−L=2(N⋅L)N−LT
ブリン・フォンライティングモデル