Я пытаюсь сделать программу для первого лица в OpenGL.
Я использовал библиотеку GLM для вычислений, которая имеет только функцию lookAt()
для Матрицы просмотра. Однако параметры функции определяют местоположение камеры и координаты x, y, z
того, на что она смотрит.
Я хочу изменить шаг, рыть, перевернуть в x, y, z
. Однако, похоже, в Интернете нет никаких уравнений.
Roll игнорируется, но как использовать только шаг и рыскание, вы получите координаты x, y, z
?
0, 0
возвращает 0, 0, 1
0, pi
возвращает 0, 1, 0
pi, 0
возвращает 1, 0, 0
и т.д. Может ли кто-нибудь помочь с расчетами для всех значений 0 - 2pi
?
Постройте матрицы вращения для рыскания, подачи и броска и умножьте их. Получаемый продукт представляет собой матрицу с векторами базовой оси с вращающейся координатой в качестве ее столбцов. Однако векторам не гарантировано быть ортогональными. На самом деле может случиться так, что два или все три из них станут коллинерами из-за эффекта, называемого кардановым замком. Gimbal lock также является причиной того, что вы не должны использовать вращения Euler вообще.