为什么应该在CCS而不是NDCS中进行裁剪



为什么应该在CCS而不是NDCS中进行剪裁。我认为在NDCS中剪辑更容易,但许多书都说剪辑应该在CCS中完成。他们举了一个例子,从后面和前面在眼睛上画了一条线。

我不明白为什么这会成为一个问题。

标准化设备坐标(NDCS)和剪辑空间(CCS)之间的唯一区别是,CCS在透视分割之前,NDCS在透视分割之后。剪裁在NDCS中效果不佳的原因是透视分割将查看器后面的点移动到前面(因为w包含-z),因此查看器后面的三角形在前平面上不会被正确地剪裁掉。

问:NDCS中的查看器在哪里。在VCS中,查看器的位置是原点[0,0,0,1]。然而,如果我用透视矩阵计算原点,结果会很奇怪。齐次坐标不是1而是0。我们如何定义观众在NDCS中的位置

在NDCS和CCS中,没有有限的观看点(我不确定观众与剪辑有什么关系)。人们必须将这两个系统视为视锥体被扭曲为立方体(近平面和远平面具有相同的尺寸)。在NDCS中,可见区域沿每个轴在[-1,1]中,而在CCS中,可见面积在[-w,w]中。现在想想查看器:在视图空间中,查看器(投影中心)是从近平面的一个角到远平面的各个角的所有光线相交的点。当我们现在将平截头体扭曲为立方体时,所有这些射线都是平行的,不再有交点。这意味着投影中心是无限远的,这在投影空间中用齐次坐标为0的向量来描述。

Q:然而,z>0的点在转换后总是大于1,并且在NDCS中也被切割。我错了吗?如果我错了,你能给我举一个例子吗

你基本上是对的。但是剪裁不会发生在单个点上,而是发生在这些点之间的边上。

假设我们有一条线,从截头体(a)内的一点到观察者(B)后的一点。在这种情况下,剪裁应该发生在近平面上,直线应该从A到B'(直线与近平面的交点)。

如果我们首先执行透视分割,那么(正如你所指出的)A仍然停留在截头体内部,但B被映射到远平面后面的一个点。当我们现在裁剪这些点之间的线时,我们得到一条从a到远平面上的点B'的线。很明显,当线路最初穿过观众时,我们不想让线路离开观众。

相关内容

  • 没有找到相关文章

最新更新