Opengl 透视投影矩阵-剪辑空间坐标
我一直在阅读,试图理解透视矩阵 本教程使用平截头体比例fatorOpengl 透视投影矩阵-剪辑空间坐标,opengl,Opengl,我一直在阅读,试图理解透视矩阵 本教程使用平截头体比例fatorS定义透视矩阵,如下所示 Xclip = S * Xcamera Yclip = S * Ycamera 但也有其他教程,如定义 xclip = 2 * n / (r-l) yclip = 2 * n / (t-b) 如果它们是一样的,请有人帮我理解一下好吗 当您分别分配S=2n/(r-l)或S=2n/(t-b)时,您最终得到相同的方程式(不要忘记第二种情况下与x\u camera和y\u camera的乘法)。在第一个方程中,
S
定义透视矩阵,如下所示
Xclip = S * Xcamera
Yclip = S * Ycamera
但也有其他教程,如定义
xclip = 2 * n / (r-l)
yclip = 2 * n / (t-b)
如果它们是一样的,请有人帮我理解一下好吗 当您分别分配
S=2n/(r-l)
或S=2n/(t-b)
时,您最终得到相同的方程式(不要忘记第二种情况下与x\u camera
和y\u camera
的乘法)。在第一个方程中,比例因子是根据其他常数预先计算的。请注意,x和y的比例因子通常不同,因为视锥体的底面不是正方形。但在本教程中s的计算方式不同。它的FOV*pi/180。FOV=视野角度,单位为度。这会给出与第二个方程式相同的值吗?您确定这是准确的公式(参考?)。这似乎在任何方面都不合理。通常,这类似于1/tan(fov/2)
。然后我们知道2*n*tan(fov/2)=t-b
。重新排列这个方程会产生S=2*n/(t-b)=1/tan(fov/2)
这是一个参考,方法名是CalcFrustumScale(),我很困惑,因为我在其他地方没有看到这个公式。但我在几乎所有其他教程中都看到了公式2*n/(t-b)=1/tan(fov/2),如CalcFrustumScale()
返回1/tan(fov/2)
。公式tan(fov/2)=(t-b)/2/n
基本上是应用于从上面看的平截头体(眼睛处的三角形)的tangens的纯粹定义。