0
我想使用深度失效算法來製作陰影卷並且所有工作都很好,但我無法弄清楚如何將陰影卷四邊形擠出到無限遠處。將陰影卷拉伸到無窮大
目標是創建從點光源點亮的三角形的陰影體積。我有紅色,我首先必須改變透視矩陣,它沒有很遠的剪輯窗格,並將w座標設置爲0.但是什麼是x,y,z座標呢?
一個例子會非常有幫助,但我也想了解它是如何完成的。
我想使用深度失效算法來製作陰影卷並且所有工作都很好,但我無法弄清楚如何將陰影卷四邊形擠出到無限遠處。將陰影卷拉伸到無窮大
目標是創建從點光源點亮的三角形的陰影體積。我有紅色,我首先必須改變透視矩陣,它沒有很遠的剪輯窗格,並將w座標設置爲0.但是什麼是x,y,z座標呢?
一個例子會非常有幫助,但我也想了解它是如何完成的。
這個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
)與A
,z'
現在是一個常數,其總是等於歸一化器件座標中的遠平面。
這個article顯示了一個有效的陰影體積實現與無限上限。
也許你可以解釋爲什麼要將陰影體積擠壓到無窮大。 – JCooper
Tod避免在陰影中的錯誤。這是深度失效算法中經常使用的一種方法。 – user2195441