gluLookAt加速度计

时间:2010-07-01 17:09:44

标签: opengl-es

我目前正在iPhone 3GS上为自己编写一个小型AR游戏; - )

我想使用加速度计& amp;用于在opengl中旋转相机的罗盘数据。摄像机具有固定位置,并且只能由于加速度计而旋转。 iPhone最初旋转90°以获得更大的宽屏;-)所以轴切换......

当我把iPhone拉向我面前时,我得到了这些价值观:

  • accel.x = 1
  • axxel.y = 0
  • accel.z = 0

当我将iPhone直接移到我的顶部(在我的头上)时,我得到了这些值:

  • accel.x = 0
  • accel.y = 0
  • accel.z = 1

所以值介于:

之间
  • x:正前方1点,头顶0点
  • y:0直接,0在我头上
  • z:0直接前进,1超过我的头

我想用x,y,z作为我的相机世界坐标。例如。 accel.x = 0.5和accel.z = 0.5

相机应根据我从加速度计获得的值更改centerX,centerY和centerZ值。

我该如何管理?

谢谢; - )

1 个答案:

答案 0 :(得分:0)

如果你的手机正好在你面前X = 1,听起来你手持手机是正确的,右边的按钮是正确的吗?

加速度计报告重力,因此X = 1意味着你在屏幕上向下走X轴。

这意味着屏幕上的+ X方向(像素)实际上是OpenGL世界中的+ Y方向(gl绘图),对应于-X加速度计读数。

在此方向上,将手机移至左侧&右边将分别给出+ Y和-Y加速度计读数。读数的强度取决于您移动手机的力度。如果移动缓慢,读数可能与数据中的正常噪声无法区分。如果你移动的速度大约是手机掉落时的速度,那么你的读数将接近“1”(“1 G力”或“1重力”。)如果你移动速度快于此速度,你将会得到更高的读数。

注意:如果您只是转动,然后停止移动,加速度计读数将恢复为0.重力是衡量加速度(“重力加速度”!),而不是面对。这就是指南针变得重要的原因。

如果您将手机向下倾斜或屏幕向上倾斜,加速度计的Z读数将会随着重力拉入“进入”或“远离”屏幕而改变。屏幕完全垂直(将手机直接放在脸前,任何方向),加速度计Z读数应为0。

如何将方向数据转换为相机取决于您的应用。请记住,通过移动手机“转向”相机将很难做到正确,因为你必须考虑到用户动作的加速和减速!

为了帮助您想象这一点,请查看XCode的示例项目“Accelerometer”。只需在文档中搜索该单词,您就会看到一个可以构建和使用的示例项目,以了解每个轴的含义。

运气!