我目前正在尝试使用Android的陀螺仪和加速度计实现头部跟踪和移动系统。对于这项任务,我认为这将是更难的部分:我设法使用Android陀螺仪来使Headtracking工作。所以我可以使用计算的旋转矩阵在场景中自由浏览。我想实现的第二部分是使用Android加速器来改变场景中的位置。我的目标是实现像HTC Vive一样的动作追踪(或者从一开始就追踪玩家是否移动,例如在一个轴上)。使用Android加速度计实现3D场景中的移动
因此,我实施了高通和低通滤波器来摆脱重力影响,如下所述:See paragraph "Using the Accelerometer"。 此外,执行此过滤器后,我还包括第二步,以消除传感器的剩余抖动。它只是这样的:if(sensorData <= EPSILON) sensorData = 0
;
有了这些准备,如果我的手机搁在桌子上,我执行向正x轴的轻微运动,我看到这样的事情:
X-Acc: 0.46105415
X-Acc: 2.031945
X-Acc: 1.5450834
X-Acc: 1.1939144
X-Acc: -0.18298185
X-Acc: -2.796235
X-Acc: -4.160668
X-Acc: -2.663677
X-Acc: 1.1761014
X-Acc: 0.8469965
X-Acc: 0.46683544
X-Acc: 0.4156207
所以,最初的加速度增加,之后由于摩擦,手机会遭遇负面加速。我正在努力的一点是,为什么后来增加?事实上,这些数据告诉我,手机向右移动,停了一下,向左移动了一小会儿,停了下来,又一次移向右边?
我很高兴在这个话题的每一个提示。有更好的方法吗?我是否以错误的方式解读传感器数据?我想我必须使用加速度计来获得运动的想法,gps不够敏感。