在 openGles 中,减少平面附近的平截头体(如您在此处看到的)使对象看起来更近。我来自 3d,例如在 Vray 中,更改近剪裁平面不会修改距离,只会剪裁一些几何图形。
为什么改变平截头体的近平面会使物体看起来更近?
我假设更改截锥体具有此处描述的效果。
所以根据文档,当你调用这个函数时
void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble farVal);
您正在做的是将当前投影矩阵乘以根据参数中指定的值构建的矩阵。
如果您看一下该矩阵是如何构建的,您会注意到它与缩放矩阵非常相似。3,3 处的元素(C
在文档页面中的名称为 )等于-(far+near)/(far-near)
. 这意味着如果你减少near
并保持far
原样,C
将接近于零。当矩阵乘法发生时,这将像 Z 坐标的缩小一样。
因此,当您减小 near 值时,顶点将看起来好像它们已与 Z 坐标成比例地靠近原点。当然,这种减少也会对 X 和 Y 坐标产生影响,并且应该使对象看起来更加“压缩”到中心。我想这种效果更符合我们直观地期望使近剪裁平面更接近视点的效果。