【问题标题】:Android Gyroscope - OpenGL LookAt PositionAndroid 陀螺仪 - OpenGL LookAt 位置
【发布时间】:2012-08-06 09:53:06
【问题描述】:

我想通过陀螺仪传感器的能力得到我想“查看”的X、Y、Z位置的准确位置

我能够从陀螺仪传感器获得 9 值,但我无法计算出从该陀螺仪传感器获得准确位置的公式。

我想要公式或例子来得到正确的答案

这是我想要结果的代码

double standX = 0.0f, standY = 0.0f, standZ = 0.0f;
double lookX = 0.0f, lookY = 0.0f, lookZ = 1.0f;
double headupX = 0.0f, headupY = 1.0f, headupZ = 0.0f;
float[] deltaRotationMatrix = new float[9];
SensorManager.getRotationMatrixFromVector(deltaRotationMatrix, deltaRotationVector);

// code here

// in my onDraw
// I'm trying to make the lookAt position proper
Matrix.setLookAtM(mViewMatrix, 0, 
        eyeX, eyeY, eyeZ, lookX, lookY, lookZ, headupX , headupY, headupZ);

结果示例如下:

【问题讨论】:

    标签: android opengl-es sensors gyroscope


    【解决方案1】:

    我已经完成了我的问题 这是我的解决方案

    首先,我需要制作这 3 个矩阵以获得 x、y、z 位置的结果

    private float[] mRotXMatrix = new float[] {
     1, 0, 0, 0, 
     0, 0, 1, 0,
     0, 1, 0, 0,
     0, 0, 0, 1 };
    private float[] mRotYMatrix = new float[] {
     0, 0, 1, 0,
     0, 1, 0, 0,
     1, 0, 0, 0,
     0, 0, 0, 1 };
    private float[] mRotZMatrix = new float[] { 
     0, 1, 0, 0,
     1, 0, 0, 0,
     0, 0, 1, 0,
     0, 0, 0, 1 };
    

    然后在 onSensorChanged(SensorEvent e) 方法中,我像这样旋转所有这 3 个矩阵以及我的相机视图

    Matrix.multiplyMM(mViewMatrix, 0, deltaRotationMatrix, 0, mViewMatrix, 0);
    Matrix.multiplyMM(mRotXMatrix, 0, deltaRotationMatrix, 0, mRotXMatrix, 0);
    Matrix.multiplyMM(mRotYMatrix, 0, deltaRotationMatrix, 0, mRotYMatrix, 0);
    Matrix.multiplyMM(mRotZMatrix, 0, deltaRotationMatrix, 0, mRotZMatrix, 0);
    

    要获取我的相机视图的 X、Y、Z,只需从这些矩阵中获取它

    viewX = mRotXMatrix[2];
    viewY = -mRotYMatrix[6]; // +/- up to your initial camera view
    viewZ = mRotZMatrix[10];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      相关资源
      最近更新 更多