我正试图从姿势的视图矩阵中获取眼睛坐标(相机的位置,方向和向上),但我得到的并不是我所期望的。
我不确定ARCore是否使用相同的系统,我没有找到关于使用的坐标系的精确信息。
接下来,我正在分解视图矩阵,但如果结果在数学上是好的(方向和向上似乎在好的方向,位置似乎具有良好的比例),结果是非常cahotic,因为我的相机在我的场景中奇怪地移动。
// Get camera matrix and draw.
float[] viewmtx = new float[16];
frame.getViewMatrix(viewmtx, 0);
Vector3 pos = new Vector3(viewmtx[12], viewmtx[13], viewmtx[14]);
Vector3 camDir = new Vector3(viewmtx[8], viewmtx[9], viewmtx[10]).nor().scl(-1);
Vector3 camUp = new Vector3(viewmtx[4], viewmtx[5], viewmtx[6]).nor();
对你来说听起来有点奇怪吗?
答案 0 :(得分:0)
以下是答案: 我使用的设备/配置是横向模式,因此坐标框架不是这个。
这是我的修复:
Vector3 pos = new Vector3(viewmtx[12], viewmtx[13], viewmtx[14]).scl(1000);
Vector3 camDir = new Vector3(viewmtx[8], viewmtx[9], viewmtx[10]).nor();
Vector3 camUp = new Vector3(viewmtx[4], viewmtx[5], viewmtx[6]).nor();
if (isLandscape) {
pos = new Vector3(viewmtx[12], viewmtx[13], viewmtx[14]).scl(1000);
camDir = new Vector3(-viewmtx[8], -viewmtx[9], -viewmtx[10]).nor();
camUp = new Vector3(viewmtx[0], viewmtx[1], viewmtx[2]).nor();
}