我有一个关于 opengl 剪辑坐标的问题。比如一个三角形,三个顶点,现在已经转化为相机坐标,乘以透视投影矩阵到剪辑坐标,开始剪辑,
-w=<x<=w, -w=<y<=w, -w=<z<=w,
x,y,z,w是指每个顶点的剪辑坐标吗?那么这三个顶点中的 w 可能不一样?
问问题
4644 次
1 回答
18
是的,w 会因顶点而异。大多数人将剪辑空间想象为立方体 [-1,1]^3。但是,这不是剪辑空间,而是规范化设备空间 (NDC)。您可以通过透视除法从剪辑空间到 NDC,因此将每个顶点除以其 w 分量。因此,在 NDC 中,该剪辑条件将转换为 -1 <= x/w <= 1。但是,在 NDC 中无法进行剪辑(没有额外信息)。
这里的问题是位于相机后面的点会出现在 NDC 空间中的相机前面。想一想:x/w 与 -x/-w 相同。使用典型的 GL 投影矩阵,顶点的 w_clip == z_eye。此外,位于相机平面(平行于投影平面但穿过相机本身的平面)中的点将具有 w=0 并且在该分割之后您不能进行任何剪裁。解决方案是始终在划分之前进行剪辑,因此剪辑空间称为“剪辑空间”......
于 2013-09-18T16:00:43.033 回答