为什么我们需要透视划分?

Meg*_*raj 11 opengl opengl-3 opengl-es-2.0

我知道透视划分是通过将x,y和z除以w来完成的,以获得标准化的设备坐标.但我无法理解这样做的目的.此外,它与剪辑有什么关系吗?

a.l*_*ram 12

一些细节补充了一般答案:

想法是在屏幕上投影点(x,y,z)以具有(xs,ys,d).下图显示了y坐标.

在此输入图像描述

我们从学校知道

tan(alpha)= ys/d = y/z

这意味着投影计算为

ys = d*y/z = y/w

w = z/d

这足以应用投影.但是在OpenGL中,您希望(xs,ys,zs)是[-1,1]中的规范化设备坐标,是的,这与剪切有关.

(xs,ys,zs)的极值表示单位立方体,其外部的所有内容都将被剪裁.因此,投影矩阵通常考虑剪切限制(Frustum)以进行单个变换,利用透视分割,同时应用投影并将投影坐标与z一起变换为标准化设备坐标.


dat*_*olf 5

我的意思是为什么我们需要那个?

用外行术语来说:使透视变形起作用。在透视投影矩阵中,Z坐标“混合”到W输出分量中。因此,Z坐标的值越小,即离原点越近,则缩放的对象越多,即在屏幕上越大。