я знаю, что прошло почти три года с тех пор, как этот ответ был опубликован, но я пытаюсь сделать то же самое, и мне было интересно, если у вас еще есть исходный код @Doran

ользую libgdx для разработки базовой 3d-игры для Android, и мне трудно правильно ориентировать камеру с учетом трех углов поворота, обеспечиваемых компасом (азимут - вращение вокруг Z, вращение - вращение вокруг Y, наклон - вращение вокруг X) , У меня был небольшой успех в следующем коде: я могу правильно нацелить виртуальную камеру вниз по оси Z и по оси X, как я и ожидал. (Углы в градусах [-180,180])

camera.direction.x = 0;
camera.direction.y = 0;
camera.direction.z = 1;
camera.up.x = -1;
camera.up.y = 0;
camera.up.z = 0;

camera.rotate(azimuth,0,0,1);
camera.rotate(roll,0,1,0);
camera.rotate(pitch,1,0,0);

Я также имел некоторый успех с этим, но он не ориентирует вектор роста камеры. (Углы были преобразованы в радианы в этой версии)

float x,y,z;
roll = (float) (roll + Math.PI/2.0);
x = (float) (Math.cos(azimuth) * Math.cos(roll));
y = (float) (Math.sin(azimuth) * Math.cos(roll));
z = (float) (Math.sin(roll));
Vector3 lookat = new Vector3(x,y,z);
camera.lookAt(lookat.x, lookat.y, lookat.z);

Может кто-нибудь пролить свет на то, как правильно ориентировать виртуальную камеру под этими тремя углами?

Кроме того, я пытаюсь, чтобы телефон находился в горизонтальном режиме, чтобы верхняя часть телефона была слева, а нижняя - справа. Следовательно, направление камеры по умолчанию (все повороты равны 0, верх телефона направлен на север) - это камера, направленная к земле (положительный Z) с направленным вверх востоком (отрицательный X).

Ответы на вопрос(1)

Ваш ответ на вопрос