我必须为我的关于3D编程的A-Levels写一篇论文。但是我在理解透视投影矩阵时遇到了严重问题,我需要详细解释矩阵。我已经在这个主题上搜索了很多网站和YouTube视频,但很少甚至尝试回答问题为什么 Matrix在那个地方有这些价值。根据这个http://www.songho.ca/opengl/gl_projectionmatrix.html,我能够找出w-row的工作原理,但我不了解其他三个。
我决定使用"更简单的"仅限对称视口的版本(右手Coord。):
我非常感谢每一次向我解释前三行的尝试!
答案 0 :(得分:8)
矩阵的核心原因是将3D坐标映射到2D平面,并使更远的物体更小。
对于这个更简单的矩阵就足够了(假设你的相机在原点并且看着Z轴):
1 0 0 0
0 1 0 0
0 0 0 0
0 0 1 0
在与此矩阵相乘然后重新归一化w
坐标后,您就具有了这一点。每个x,y,z,1
点变为x/z,y/z,0,1
。
然而,没有深度信息(Z对于所有点都是0),因此深度缓冲器/滤波器不起作用。为此,我们可以为矩阵提供参数,以便深度信息保持可用:
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
现在结果点包含Z坐标中的反向深度。每个x,y,z,1
点变为x/z,y/z,1/z,1
。
额外的参数是将坐标映射到(-1,-1,-1)
- (1,1,1)
设备框的结果(如果你在它之外的边界框,则不会得到绘制的点)比例和翻译。