Математическая формула для 3d игры от первого лица - PullRequest
0 голосов
/ 20 декабря 2010

Я хочу сделать 3d-игру от первого лица, но не могу правильно настроить формулу камеры.

Итак, у меня есть поворот: от 0 до 359. Далее координаты x, y, z остаются прежними.

Вращение камеры: 0 - впереди, 90 - слева, 180 - сзади, 270 - вправо, но я могу его адаптировать

Какая формула для камеры?

Платформа: Panda3d, Python, OpenGL

Спасибо

Ответы [ 2 ]

3 голосов
/ 20 декабря 2010

ОК, похоже, вам нужно движение камеры в стиле Doom, т.е. никаких поворотов вверх-вниз.Примите во внимание следующее:

  1. Вам необходимо визуализировать «мир», видимый через камеру.
  2. Предполагая, что положительный x направо, а положительный y - перед, когда камераперемещается вправо, изображение мира перемещается влево.
  3. Когда камера поворачивается положительно влево, изображение мира поворачивается вправо.

Теперь давайте попробуем построитьУравнения:

1. Во-первых, переведите мировые координаты в положение камеры:

Xwt = Xw - Xc;
Ywt = Yw - Yc;
Zwt = Zw;

(Xc,Yc,Zc) = camera position
(Xw,Yw,Zw) = world coordinates of object in the scene
(Xwt,Ywt,Zwt) = world coordinates of object translated to camera position

2. Теперь поверните переведенные координаты на угол, противоположный повороту камеры:

Xwc =  Xwt * Cos(psi) + Ywt * Sin(psi);
Ywc = -Xwt * Sin(psi) + Ywt * Cos(psi);
Zwc =  Zwt

Psi = angle of camera rotation
(Xwc,Ywc,Zwc) = world coordinates of object transformed to camera orientation

Вы можете объединить два шага и преобразовать их в матричную форму.

0 голосов
/ 20 декабря 2010

Позже я нашел учебник, который исправил мою проблему:

https://www.panda3d.org/forums/viewtopic.php?t=3037

...