夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

レイトレーシングについて歴史を交えまとめる その6  ライティングの計算

本日はグラフィック枠です。

現在レイトレーシングにいてアルゴリズム面を中心に学んでいます、

1979年に登場したレイトレーシングは現実の物理学的な光の動きの逆のプロセスをコンピュータ内で計算することでコンピュータグラフィックスの処理として反射、屈折、散乱といったレンダリング処理をリアルに計算できるようになりました。

 レイトレーシング自体はピクセルごとにレイを放ち、オブジェクトとの交差点を判定し、さらにその座標からレイを飛ばし、最終的に光源までそれを行い、各衝突の過程において、光や物体の挙動についての結果を用いてレンダリングを行っています。

現時点まででカメラ座標の定義、レイとオブジェクトの交差についてみていきました。

レイとオブジェクトの交差ではオブジェクトの形状によって異なるアルゴリズムが用いられています。

基本的な考え方としてはレイのベクトルが形状に対して領域ないに存在するか?を判定しています。

今回もひきつづき以下の文献をもとに理解を進めていきます。今回はセクション2.4を見ていきます。

https://inst.eecs.berkeley.edu/~cs294-13/fa09/lectures/scribe-lecture1.pdf

〇ライティング計算

前回まででレイとオブジェクトの交差を検知するアルゴリズムを見ていきました。

レイトレーシングではピクセルごとにレイを放ち、オブジェクトにあたることを検知するだけに終わりません。

この際に形状の情報を収集して最終的にレンダリング計算に使用されています。

この時にライティングの計算をすることになります。

レイを使用して影の効果を作成すること自体は簡単です。オブジェクトとレイが交差した場合、交差点から光源へのレイを作成し、さらになにかと交差するかを判定。交差がある場合、光源から最初に交差した場所までに何かが存在し、最初に交差した場所は光源から見た場合影になっていることがわかります。

影の計算は次のようになります。

 \displaystyle
I = K_a + K_e + \sum_{i=1}^{n}V_i L_i max(l_i ・ n, 0) + K_s max(h_i ・n ,0))^{s})
 

この式はフォン反射モデル(Phong reflection model)と呼ばれています。

ここで各記号は以下のようになります。

 \displaystyle
 I :表面からの最終的な反射光の強度
 

 \displaystyle
K_a : 環境光の影響を表す定数
 

 \displaystyle
K_e : 環境からの放射輝度を表す定数 放射光

 \displaystyle
K_s:表面の鏡面反射率 (スペキュラー)
 

 \displaystyle
V_i: 光源の強度 つまり光が物体から支店まで到達できるかどうか
 

 \displaystyle
L_i: 光源から放出される光の強さ(方向ベクトル)
 

 \displaystyle
l_i: レイの方向ベクトル
 

 \displaystyle
h_i: 反射ベクトル
 

 \displaystyle
s: 光沢度 
 

レイトレーシングにおける光の計算においてこれらのパラメータを使って、各ピクセルの色を計算します。

上記アルゴリズムがライティングに関しての計算アルゴリズムになります。

本日は以上です。