我已经在opengl中直接绘制到齐次剪辑空间(以0,0,0为中心的2x2x2立方体),并且我已经意识到透视变换矩阵将所有几何图形从一个右平行体(视图空间)转换到另一个右平行体(齐次剪辑空间)。
那么,为什么每一篇opengl文章都使用非右平行体截锥体来说明投影是如何工作的呢?我知道透视变换矩阵会使所有的东西被一个包含它到相机的距离和相机到平面的距离的项缩放…传统的截锥体图解能解释这一点吗?或者我们真的在透视变换的某个点进入了某个扭曲的空间?如果是这样的话,我们最终是如何回到右平行体(齐次剪辑空间)的呢?
你是对的,在某种意义上,只有一些仿射,线性变换,没有真正的透视失真-当你只是解释剪辑空间作为一个四维向量空间。
但是剪辑空间并不是"一切的结束"。透视效果是一种非线性变换,最终通过透视分割来实现,透视分割是在转换到剪辑空间之后进行的。投影矩阵决定了w
的值它将是这个的除数,通常就是-z_eye
。