Вращение оси объекта в OpenGL - PullRequest
0 голосов
/ 10 января 2012

Когда я вращаю объект в OpenGL, ось также вращается вместе с объектом. Есть ли способ избежать этого? По сути, я хочу добиться последовательных вращений вокруг одной и той же оси.

Я не очень знаком с кватернионами, но, когда я читаю, кажется, что это решение. Есть ли другой способ получить его?

1 Ответ

0 голосов
/ 10 января 2012

Когда я вращаю объект в OpenGL, ось также вращается вместе с объектом.

Преобразование не вращает объект, оно вращает систему координат. Цепные вращения некоммутативны. Итак, вам нужно просто: поменять операции поворота, чтобы первое примененное вращение, т. Е. Последнее умножение в стеке, обозначало вращение вашего объекта, а затем (т.е. ранее умноженное) с другим вращением.

Кстати: в комментарии вы написали:

Я сохраняю предыдущее преобразование с помощью glGetDoublev, а затем перед применением нового вращения загружаю эту матрицу с помощью glLoad, а затем умножаю ее на новую матрицу вращения. В моем приложении я должен сериализовать объект на диске, поэтому я сделал это таким образом. Наряду с объектом я также храню матрицу преобразования

Это говорит о том, что вы приняли за OpenGL граф сцены или матричную математическую библиотеку. Это ни то, ни другое. Не используйте OpenGL в качестве «хранилища объектов» (так оно не работает) и не полагайтесь на матричные функции OpenGL (они все равно были удалены из OpenGL-3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...