Как реализовать угол крена вместе с рысканием и тангажем в функции glm :: lookAt?

На этой странице https://learnopengl.com/Getting-started/Camera я узнал, как реализовать угол рыскания и тангажа в функции glm :: lookAt. Но, к сожалению, я не смог найти никаких указаний о том, как добавить к функции угол крена.

Когда я пытаюсь реализовать это, оси x и z остаются постоянными и не адаптируются к вращению Roll.


person Marc Monfort    schedule 22.11.2020    source источник
comment
glm! = glm -математика   -  person Rabbid76    schedule 22.11.2020
comment
Угол крена определяется направленным вверх вектором.   -  person Rabbid76    schedule 22.11.2020


Ответы (1)


Сначала убедитесь, что вам действительно нужно использовать рулон для движения камеры, поскольку это редкость, если вы не делаете камеру, которая следует за чем-то летающим. Вы изменяете крен, вращая вектор вверх вокруг переднего вектора (который не изменится), поэтому он должен выглядеть примерно так:

up.y = up.y * cos(rollAngle)
up.x = ...
up.z = ...

где x и z будут иметь 2 члена, в зависимости от x и z переднего вектора, аналогично тому, как в учебнике вычислялся передний вектор, зависящий от рыскания и тангажа.Вы можете рассмотреть библиотеку линейной алгебры, такую ​​как Eigen, поскольку она позаботится о вращения и другие вещи, которые вам, вероятно, довольно легко понадобятся, используя их Transform api.

person Mudkip Hacker    schedule 23.11.2020
comment
Не могли бы вы подробнее рассказать, как рассчитать x и z? - person kmecpp; 09.04.2021