嗨我设法在我的Android应用程序中找到了来自加速器和磁传感器的偏航,俯仰和滚动.我现在想根据角度来旋转我的场景中的一个点周围的相机目标(min3d).结果是能够通过移动Android设备来查看3d场景.我已经尝试了几天几乎阅读所有相关的答案,但我不能让它工作.
我得到的运动绝对没有感觉.我证实我的偏航在0-360之间并且是正确的,音高在-90到90之间且是正确的,最后滚动在-180和180之间并且是一致的.
基本上我正在通过我的目标和向上矢量进行矩阵旋转和乘法.
float[] rotation = new float[16]; Matrix.setIdentityM(rotation, 0); Matrix.rotateM(rotation, 0, (float) Math.toDegrees(roll), 0, 0, 1); Matrix.rotateM(rotation, 0, (float) Math.toDegrees(pitch)+90f, 1, 0, 0); Matrix.rotateM(rotation, 0, (float) Math.toDegrees(-azimut), 0, 1, 0); float[] target = new float[4]; float[] source = new float[]{0,0,150,0}; Matrix.multiplyMV(target, 0,rotation, 0, source, 0); float targetX = target[0] + 0; float targetY = target[1] + 150; float targetZ = -target[2] + 0; target = new float[4]; source = new float[]{0,1,0,0}; Matrix.multiplyMV(target, 0,rotation, 0, source, 0); float upX = target[0]; float upY = target[1]; float upZ = target[2]; scene.camera().target.x = targetX; scene.camera().target.y = targetY; scene.camera().target.z = targetZ; scene.camera().upAxis.x = upX; scene.camera().upAxis.y = upY; scene.camera().upAxis.z = upZ;
最初我的目标是(0,0,150),我的向上是(0,1,0).
感谢您的任何帮助.