我目前正在嘗試使用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不夠敏感。