为什么我的OpenGL球体看起来像椭圆形

时间:2012-03-10 03:05:39

标签: android opengl-es 3d

我在Android中使用OpenGL ES20创建了一个球体。在透视投影环境中,我将球体从[-1.5,-2,-2]动画到[-1.5,2,-2]。问题是,球体到达截锥体边界时看起来像一个椭圆。实际上,当它在[0,0,-2]时它看起来只是一个圆圈,它越远离[0,0],它就越像椭圆。

这是标准行为吗?我想,在所有视角下,一个球体应该看起来像一个圆圈。你能帮忙吗?

The sphere

1 个答案:

答案 0 :(得分:1)

你应该减少你的视野;你展示的是正常的,是3d投影的轻微人工性质的副作用 - 3d投影假设观看者与屏幕保持固定距离,并且他们的眼睛直接从屏幕中心沿z定位完全向前。查看相关问题described here,了解与真实相机相同的效果。

隐式默认视野通常是90度。但是当你手里拿着一部手机时,它的视力远远低于90度。

如果您正在使用glFrustum,请尝试为左侧,右侧,顶部和底部指定较小的值。作为快速修复,在计算投影矩阵后,只需将glScalef投影到投影堆栈(或等效的ES 2)上。