我正在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向量(或直接指向我要寻找的点)?