【发布时间】:2011-01-06 09:25:17
【问题描述】:
我已经为 android 编写了一个第一人称相机类。
这个类很简单,相机对象有它的三个轴 X,y 和 Z
并且有一些函数可以创建 ModelView 矩阵(即 calculateModelViewMatrix() ), 沿 X 和 Y 轴旋转相机 并沿其 Z 轴平移相机。
我认为我的 ModelViewMatrix 计算是正确的,我还可以沿 Z 轴平移相机。
沿 x 轴旋转似乎可行,但沿 Y 轴旋转会产生奇怪的结果。 旋转的另一个问题似乎是,我的 3d 模型不是旋转相机,而是开始沿其轴旋转。
我已经编写了另一个基于观察点的实现,并使用 openGL ES 的 GLU.gluLookAt() 函数来获取 ModelView 矩阵,但这似乎也遇到了完全相同的问题。
编辑
首先感谢您的回复。
我实际上已经实现了 Camera 类的第二个实现,这次使用了 android.opengl.Matrix 类中提供的旋转功能,如你所说。 我提供了下面的代码,更简单。
令我惊讶的是,结果“完全相同”。 这意味着我的旋转函数和 Android 的旋转函数产生了相同的结果。
我做了一个简单的测试并查看了我的数据。 我只是围绕 Y 轴一次旋转 LookAt 点 1-dgree 并查看坐标。似乎我的 LookAt 点落后于确切的旋转角度,例如在 20 度时,它只旋转了 10 到 12 度。 45度后开始反转
【问题讨论】: