OpenGL:使用四元数从位置和方向获取lookAt中心

时间:2018-11-15 16:10:11

标签: math opengl-es quaternions

我正在Android增强现实应用程序上使用OpenGL ES 2.0。我想将openGL相机放置在与耳机完全相同的位置(就空间的位置和方向而言)。我可以实时访问耳机的位置和方向,但是方向是基于四元数的。

到目前为止,我已经尝试过:我将四元数转换为欧拉角,以得到偏航角,俯仰角和侧倾角(看起来不错),然后计算方向矢量:

Crashlytics.logException(e);

然后,我更新我的LookAt值:

    float ray = 1.0f;
    directionX = ray * (float) (Math.cos(rollRadian) * Math.sin(yawRadian));
    directionY = ray * (float) (Math.cos(rollRadian) * Math.cos(yawRadian));
    directionZ = ray * (float) Math.sin(rollRadian);

但是,与耳机平移相比,方向值似乎太弱,导致显示不正确(例如:即使我不看方向也能看到我的虚拟对象)。我怀疑问题的一部分与上面公式中的 ray 参数有关,该参数来自this question in StackExchange

问题:我是否错过了此实施方案?是否有另一种方法可以从世界空间中的位置和方向四元数获取LookAt向量(或直接指向我要寻找的点)?

0 个答案:

没有答案