Как правильно установить ориентацию датчиков для приложения компаса в VR - PullRequest
0 голосов
/ 08 июля 2019

Я создаю приложение VR (Unity / Android с Java-плагином), которое будет использовать функциональность компаса для выравнивания игрового севера с реальным направлением, но азимут, полученный с помощью SensorManager, кажется неточным.

До сих пор я пытался использовать датчик вектора вращения с SensorManager.remapCoordinateSystem () для получения, преобразования результатов и получения азимута.

public void onSensorChanged(SensorEvent event) {

        synchronized (this) {

            // It is good practice to check that we received the proper sensor event
            if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR)
            {
                float[] mRotationMatrixIn = new float[16];
                float[] mRotationMatrixOut = new float[16];
                float[] orientationVals = new float[9];
                // Convert the rotation-vector to a 4x4 matrix.
                SensorManager.getRotationMatrixFromVector(mRotationMatrixIn,
                        event.values);
                SensorManager
                        .remapCoordinateSystem(mRotationMatrixIn,
                                SensorManager.AXIS_X, SensorManager.AXIS_Z,
                                mRotationMatrixOut);
                SensorManager.getOrientation(mRotationMatrixOut, orientationVals);

                // Optionally convert the result from radians to degrees
                azimuth = (float) Math.toDegrees(orientationVals[0]);

            }
     }
}

Результат в переменной «азимут» должен быть от -180 до 180 градусов, меняясь при повороте, но я часто вижу результаты, которые очень не поддаются изменению.Я особенно не уверен насчет аргументов для SensorManager.remapCoordinateSystem ().Я использую правильные оси для позиционирования VR?(боковой край обращен вниз).Правильный ли мой код для того, чего я пытаюсь достичь?Кроме того, есть ли способ минимизировать неточность результатов, когда я слегка наклоняю телефон?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...