2010-07-01 170 views
0

我目前的iPhone 3GS ;-)gluLookAt加速度计

我想用加速度计&指南针数据,在OpenGL转动我的相机编码有点AR-游戏为自己。相机有一个固定的位置,只能由于加速度计旋转。 iPhone是最初旋转90°有一个更大的宽屏;-)所以轴切换...

当我握住iPhone straigt在我的面前,我得到这些值:

  • 加速度。 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值。

如何管理呢?

感谢;-)

回答

0

如果你得到X = 1与手机正前方的你,这听起来像你拿着景观手机,与按钮的右侧,是正确的?

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

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

在此方向上,将手机向左移动&将分别给出+ Y和-Y加速计读数。读数有多强烈取决于您移动手机的力度。如果缓慢移动,读数可能与数据中的正常噪音无法区分。如果您的移动速度大约是手机坠落的速度,那么您的读数将接近“1”(“1重力”或“1重力”)。如果移动速度超过此值,您将获得更高的读数。

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

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

如何将定向数据转换为相机取决于您的应用程序。请记住,通过移动手机来“转向”摄像头会很棘手,因为您必须考虑到用户动作的加速和减速!

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

好运!