Я пытаюсь повернуть модель (рельеф), расположенную по адресу (X,Y,Z)=(0,0,0)
моего OpenGL-World. +X
is east, -Z
is north, +Y
- высота. Вид смотрит на -Y
, потому что углы Эйлера устройства (0°,0°,0°)
, пока устройство лежит на столе, указывающем на север.Ось переключающего устройства в матрице вращения для вращения модели OpenGL ES2
Проблема:
мне нужно переключить ось моего устройства для изменения измеренного угла device -y
к device z
.
В настоящее время оборот вокруг device x-axis
работ (результаты по вращению вокруг World X-axis
).
Но вращение вокруг device y
приводит к вращению вокруг World Y
вместо World -Z
и вращения вокруг device z
вращению вокруг World Z
вместо World Y
.
К настоящему моменту у меня заканчиваются идеи, как это решить. Любой, кто мог бы дать мне подсказку, пожалуйста?
(OpenGL) (Device)
^+Y-axis ^+z-axis
* *
* *
* * ^+y-axis (North)
* * *
* * *
* * *
************> + X-axis ************> +x-axis
*
*
v +Z-axis (Minus North)
То, что я пытался до сих пор:
- Используя углы Эйлера от
SensorManager.getOrientation
и переключение углов работает нормально, хотя я в карданном замок близко, чтобы передать 90 град. Поэтому я ищу другое решение (матрица вращения или кватернионыSensorManager
). SensorManager.remapCoordinateSystem
почти в каждом возможном созвездии -> не помогает- Изменения COLS/строки моей матрицы вращения от
SensorManager.getRotationMatrix
-> не помогает