投影矩阵

时间:2012-03-10 12:19:29

标签: 3d matrix xna projection perspective

我试图理解投影矩阵背后的数学,我发现this page。此页面中的矩阵:

Matrix

我发现这个矩阵类似于Xna的矩阵。

我理解他们如何得到矩阵的m33和m44列,但他们如何得到m11和m22?而且我不明白为什么我必须给出纵横比,如果我已经给出了视角。

我想知道的最后一件事是:从ndc空间转移到窗口空间的等式是什么以及它们如何得到这个等式?

2 个答案:

答案 0 :(得分:0)

如果屏幕呈圆形,FOV就足够了......但是它们是矩形的,所以只是FOV还不够。 FOV设置为屏幕高度,另一个是FOV乘以屏幕宽高比。

m11可以作为在宽度方向上缩放FOV的方法。 m22可以被认为是一种在高度方向上缩放FOV的方法。

答案 1 :(得分:0)

你可以通过缩放生成的x和y坐标来改变视野:你缩放它们,你会得到更小的视野(放大),你缩小它们你会得到更大的视野(缩小)。 3D软件中使用的透视投影是直线的,因此如果您的视野足够大,边缘处的失真将非常严重,并且您不能有超过180°的视野。

你需要宽高比,因为OpenGL和Direct3D中的剪辑坐标从-1到1运行。在水平方向上-1是左边,1是右边。在垂直方向上-1是底部,1是顶部。因此,如果您希望正方形显示为正方形,则需要使用纵横比缩小X坐标。