2011-08-15 44 views
4

単純レイトレーシングアルゴリズム を実装しようとしています。最初に、ピクセル座標をuvw座標系に変換します。 iam本 enter image description hereレイトレーシングのピクセル座標からuvw座標を取得する

視錐台点(i、j)は画素インデックスされている場合、L、R、B、T、(NX、NY)は、次いで正規算出するシーンの幅と高さ

あります座標を使用する

enter image description here

私は、以前の方程式を理解したいと、彼らは透視投影のためではない正射影のためUWV座標を与える理由(私は正射影を使用するときに透視投影が使用されているかのような式はまだ結果を与える)

答えて

3

のは、あなたを想定してみましょうカメラはある種のピラミッドです。それは私が「カメラスクリーン」と呼ぶ底面を持ち、焦点距離とも呼ばれるピラミッドの高さはF(またはあなたの方程式、W)でマークされます。

  T(op) 
     *---------* 
     |\  /| 
     | \ /| 
     | \ /| 
     | \/ | 
L(eft) | *E(ye| R(ight) 
     | /\ | 
     |/ \ | 
     |/ \ | 
     |/  \| 
     *---------* 
     B(ottom) 

のはjは(1/Nyの段階で-Ny/2から+Ny/2に)下から上へ行くと仮定しましょう、とiは(-Nx/2から1/Nxの段階で+Nx/2に)左から右に行きます。 Nyが偶数の場合、jはNx/2-1になります(Nxが偶数の場合も同様です)。

あなたがイメージに下から上に行くように、画面上の、あなたはT値にB値から移動。

d = (j + 0.5)/Ny 
:下から上へあなたの方法のd(= 0との間の底部および1 =トップ)留分で、あなたの高さは、いじりのビットは小数dが実際にあることを示している

Vs = T + (B-T) * d 

あります

ので:

Vs = T + (B-T) * (j + 0.5)/Ny 

と同様:

Us = L + (R-L) * (i + 0.5)/Nx 

ここでは、左から右へ行くベクトルとしてU、下から上へV、目から進む方向に「W」を示します。これらのベクトルはすべて正規化されています。

ここでは、目がピラミッドの長方形の面の中心の真上にある(0,0)の真上にあるとします。

Ws * W 

そしてインデックスで、画面上の別のポイントにその時点から行くこと(i,j)あなたは行くだろう:あなたが行くだろう(0,0)に直接目から行くために

Us * U + Vs * V 

あなたは見ることができるようになることUs = 0目は中央の真上にあるように、i = 0用とB = -TL = -R以来j = 0ためVs = 0(の長方形)。

そして、私たちは一緒にそれを構成する場合、最終的に、インデックス(i,j)で画面上のポイントは

S = E + Us * U + Vs * V + Ws * W 

お楽しみです!

+0

素晴らしいイラストは、 –

+0

:)おかげで私は私の説明で裏返し底部と頂部を固定しました。方程式はそうだった。だから何かがどこかで理にかなっていない場合は、再読みしてみてください。嬉しいことに役立つ:) –

関連する問題