【计算机图形学】观察流水线中为啥需要有规范化的过程

因为你要做裁剪,把这个立方体以外的部分截掉。你的疑惑可能主要在为什么z方向也要做裁剪,一方面从相机角度来看我们不希望看到背后的东西,另一方面用于光栅化过程的深度缓冲精度是有限的,不可能对离相机任意远的两个片元都能进行正确的排序。
■网友
透视变换是将锥形的视景体变换成一个立方体(cuboid),视口变换再将这个立方体中的物体变换到视口中,题主的问题应该是透视变换中为什么要将坐标规范化到这个立方体中。
我的个人理解是:
在透视除法完成之后将坐标规范化到单位立方体中能方便后续的裁剪运算,裁剪运算是很复杂的运算,如果能将坐标规范化到(-1,-1,-1)到(1,1,1)的范围内,再用单位裁剪框去裁剪,只需简单判断坐标分量是否有大于1或者小于-1的就可以了,方便硬件实现。
【【计算机图形学】观察流水线中为啥需要有规范化的过程】 引入NDC的还有一个好处就是实现了设备无关,因为NDC隔离了设备坐标和世界坐标,如果设备的驱动程序发生了更改,是不需要考虑物体在世界坐标系中是怎么样进行描述的。例如,要在多视口中渲染一个场景,如果没有NDC的话,你还得根据不同设备进行编码,如果设备发生了变动很可能就不能正常工作。

■网友
我认为是不一定需要,说到裁剪,不在这个地方裁剪也可以,看具体实现了。


    推荐阅读