Java OpenGL使对象显示得更近,而不仅仅是剪裁
在openGles中,减少平面附近的截锥体(如您所见)会使对象看起来更近。我来自3d,例如在Vray中,更改近剪裁平面不会修改距离,只会剪裁一些几何体Java OpenGL使对象显示得更近,而不仅仅是剪裁,java,android,opengl-es,frustum,Java,Android,Opengl Es,Frustum,在openGles中,减少平面附近的截锥体(如您所见)会使对象看起来更近。我来自3d,例如在Vray中,更改近剪裁平面不会修改距离,只会剪裁一些几何体 为什么更改平截头体的近平面会使对象看起来更近?我假设更改平截头体具有所描述的效果 所以根据文档,当你调用这个函数 void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble fa
为什么更改平截头体的近平面会使对象看起来更近?我假设更改平截头体具有所描述的效果 所以根据文档,当你调用这个函数
void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble nearVal, GLdouble farVal);
您要做的是将当前投影矩阵乘以根据参数中指定的值构建的矩阵
如果你看看这个矩阵是如何构建的,你会注意到它非常类似于一个缩放矩阵。3,3处的元素(在文档页面中称为C
)等于-(远+近)/(远-近)
。这意味着,如果您将减少到接近
的位置,并保持far
不变,C
将接近于零。当矩阵相乘发生时,这就像Z坐标的缩小
因此,当您减小“近”值时,顶点将显示为与Z坐标成比例地靠近原点。当然,这一减少也会对X和Y坐标产生影响,并且会使对象看起来更靠近中心“压缩”。我想这种效果更符合我们通过使近剪裁平面更靠近视点而直观地期望的效果。更改到近剪裁平面的距离不会使“对象”看起来更近或更远。所以问题是如果它有这种效果,你会改变什么。没有更多细节,没有人能告诉你。@derhass:我的猜测是,OP保持左、右、上、下值不变,因此改变近剪裁平面距离会改变视野。@DatenWalf:这也是我的第一个猜测,但减小近平面距离并保持其他参数会增加视野,因此,对象应该看起来更小。