本日はグラフィック枠です。
現在レイトレーシングにいてアルゴリズム面を中心に学んでいます、
1979年に登場したレイトレーシングは現実の物理学的な光の動きの逆のプロセスをコンピュータ内で計算することでコンピュータグラフィックスの処理として反射、屈折、散乱といったレンダリング処理をリアルに計算できるようになりました。
レイトレーシング自体はピクセルごとにレイを放ち、オブジェクトとの交差点を判定し、さらにその座標からレイを飛ばし、最終的に光源までそれを行い、各衝突の過程において、光や物体の挙動についての結果を用いてレンダリングを行っています。
現時点まででカメラ座標の定義、レイとオブジェクトの交差についてみていきました。
レイとオブジェクトの交差ではオブジェクトの形状によって異なるアルゴリズムが用いられています。
基本的な考え方としてはレイのベクトルが形状に対して領域ないに存在するか?を判定しています。
今回もひきつづき以下の文献をもとに理解を進めていきます。今回はセクション2.3を見ていきます。
https://inst.eecs.berkeley.edu/~cs294-13/fa09/lectures/scribe-lecture1.pdf
〇変換されたオブジェクトに対するレイトレーシングの処理(楕円形)
レイトレーシングはカメラの描画ピクセルごとにレイを投射し、オブジェクトとの交差を検知していました。
円形や平面を見ていきましたが、例えばここで楕円形のような形状を処理したい場合はどのようにするか?
シンプルな方法はレイと楕円体の交差を判定する新しい関数を作成することですが、効率的な方法として既存のレイと球体の交差判定を利用し、その球体に変形を適応することができます。
つまり最初に球体との交差判定を行いますが、この球体にシアリング行列やスケーリング行列などの変換行列を与えることで基本形状から形状を変形させることができます。
このときレイと形状の交差点を求める通常の方法ではなく、変換されたオブジェクトとの交差点をチェックする必要があります。
このためにレイに逆行列を適応します。
3Dオブジェクトの返還に用いられている行列をMとします。
このとき逆転置行列はM^-tであらわされます。(ここでのtは特定のパラメータではなく行列の転置を表す記号です。)
逆転置行列とは元の行列の逆行列を求めたのちにその行列を転置(行と列を入れ替える)したものを指します。
法線ベクトルをnと置くとこの時変換されたオブジェクトの法線方向は次のように求めることができます。
交差点p,法線ベクトルはそれぞれ変換行列を掛けることであらわされます。
ここでQはMと同じように変換行列を指しますが、法線ベクトルを正しく変換するための特殊な変換を意味します。
具体的にはMの逆転置行列となります。
ここで変換された法線ベクトルはQnとなり、変換された点はMpとあらわせ、これらは直行しています。(点に対して法線は直行します。)
次に行列Qの逆行列QT・・・つまりQがMの逆転置行列のため逆転事業列の転置行列(M-{-t}T=M^-1)は元の行列にもどります。
つまり、QとMを掛け合わせることは単位行列(I)となります。
セクション2.3をまとめると次のようになります。
・変換の適応
基本形状(球)から楕円形のレイトレーシングを行う際は新しい交差関数を作成する代わりに球ーレイの交差判定を利用して変換行列を使用した変換を適応する。
・逆変換の利用
オブジェクトに適応される変換Mがある場合レイにたいし逆行列M^-1を適応し、レイーオブジェクトの交差を計算、その後交差点を実際の座標空間に変換します。
・法線。点の変換
法線はMとは異なる方法で変換されn-T p =0(法線は頂点に対して直行する)という性質より法線に対しての変換Qを求めてます。
以上オブジェクトに対して変換行列や逆転置行列を使用することによって効率的にレイトレーシングの処理が可能となります。