2013-06-27 74 views
0

我想使用深度失效算法來製作陰影卷並且所有工作都很好,但我無法弄清楚如何將陰影卷四邊形擠出到無限遠處。將陰影卷拉伸到無窮大

目標是創建從點光源點亮的三角形的陰影體積。我有紅色,我首先必須改變透視矩陣,它沒有很遠的剪輯窗格,並將w座標設置爲0.但是什麼是x,y,z座標呢?

一個例子會非常有幫助,但我也想了解它是如何完成的。

+0

也許你可以解釋爲什麼要將陰影體積擠壓到無窮大。 – JCooper

+0

Tod避免在陰影中的錯誤。這是深度失效算法中經常使用的一種方法。 – user2195441

回答

0

這個link顯示了一個投影矩陣的例子。它的形式是:

a 0 b    0 
A = 0 d e    0 
    0 0 -(f+n)/(f-n) -2fn/(f-n) 
    0 0 -1    0 

f是遠平面,你想f -> infinity

limit f -> infinity of (f+n)/(f-n) = limit f -> infinity of (1+n/f)/(1-n/f) 

limit f -> infinity of 2fn/(f-n) = limit f -> infinity of 2n/(1-n/f) 

因爲

f -> infinity => n/f -> 0 

f -> infinity你的矩陣變得

a 0 b 0 
B = 0 d e 0 
    0 0 -1 -2n 
    0 0 -1 0 

如果你(x,y,z,w=0)與變換你會得到

x' = ax + bz 
y' = dy + ez 
z' = -z 
w' = -z 

和透視除法給出

x' = -ax/z - b 
y' = -dy/z - e 
z' = 1 

雖然x'y'是相同的轉化(x,y,z,w=0)與Az'現在是一個常數,其總是等於歸一化器件座標中的遠平面。

這個article顯示了一個有效的陰影體積實現與無限上限。