在 openGles 中,减少平截头体近平面(如您所见 here )会使物体看起来更近。我来自 3d,例如在 Vray 中,更改近裁剪平面不会修改距离,只会裁剪一些几何体。
为什么改变平截头体的近平面会使物体看起来更近?
最佳答案
我假设改变平截头体具有描述的效果 here.
所以根据文档,当你调用这个函数时
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 坐标,并且应该使对象看起来更“压缩”到中心。我想这种效果更符合我们通过使近裁剪平面更接近视点而产生的直觉预期。
关于java - Frustum near plane OpenGL 使对象看起来更近,而不仅仅是剪裁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481743/