Фон
Я использую источник VTK KiwiViewer на своем мобильном устройстве, и я Я использую его для создания сцен VR с использованием облаков точек, где телефон пользователя действует как очки VR.
Я получаю attitude
от CMDeviceMotion, который предоставляет мне Углы Эйлера для осей x, y и z (соответственно тангаж, крен и рыскание).
Я пытаюсь получить опыт работы с Google Cardboard, не используя Cardboard SDK. Причина в том, что Kiwi уже импортирует все модели, которые мне нужны для тестирования.
Сценарий
Kiwi использует систему координат на основе XYZ для положения камеры и точки фокусировки. Вот три объекта, с которыми вам нужно работать, чтобы позиционировать вид VR:
- Фокус: xyz точки, на которую смотрит камера.
- Положение камеры: xyz, где камера находится в трехмерном пространстве.
- Камера вверх: относительный xyz для управления поворотом камеры.
На данный момент я всегда устанавливаю положение камеры на 0,0,0
. Я использую _3 _ / _ 4_ с углами Эйлера * 10, чтобы разместить точку фокусировки на расстоянии 10 единиц от камеры. При установке положения камеры и точки фокусировки автоматически устанавливается подходящее правильное значение для параметра Поднятие камеры.
Установка точки фокусировки
x = -(sin(roll) * cos(pitch)) * 10;
y = cos(roll) * sin(pitch) * 10;
z = sin(yaw);
setCameraFocalPoint(x, y, z);
Вопрос
Моя текущая установка работает нормально, но имеет некоторые неприятные особенности. Как я могу настроить преобразование, чтобы получить более надежный опыт работы с виртуальной реальностью?