我想使用深度 - 失败算法来制作阴影卷并且所有工作都很棒,但我无法弄清楚如何将阴影体四边形挤出到无穷大。
目的是为从点光源照亮的三角形创建阴影体积。我有红色,我首先必须更改它没有远剪辑窗格的透视矩阵,并将w坐标设置为0.但是,x,y,z坐标是什么?
一个例子会非常有用,但我也想了解它是如何完成的。
答案 0 :(得分: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
转换(B
),您将获得
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显示了一个有效的阴影卷实现,其中无限上限。