Как правильно установить абсолютное вращение объекта / узла?

Обычно, когда я хочу повернуть объект / узел в моей сцене Ogre, я вызываю метод узла rotate(). Это поворачивает узел локально относительно его текущего вращения. Так, например, когда я начинаю с вращения 0, затем дважды поворачиваюсь на 5 градусов вокруг одной оси, после второго вызова объект поворачивается в общей сложности на 10 градусов.

Теперь мне нужно установить абсолютное вращение узла / объекта напрямую, независимо от его текущего вращения. Таким образом, скажем, я не знаю текущий поворот объекта, мне нужно установить его, скажем, на 45 градусов по оси X. Что-то вроде setRotation().

Я знаю, что в классе SceneNode есть метод setOrientation(), который ожидает объект кватерниона. Я также знаю, что могу получить текущий кватернион ориентации. Чего я не знаю: как я могу использовать / изменить этот текущий кватернион ориентации, чтобы установить новое абсолютное вращение узла?


person Matthias    schedule 09.05.2013    source источник
comment
Crosspost на ogre3d.org/forums/viewtopic.php?f=2&t= 77710   -  person Matthias    schedule 10.05.2013


Ответы (1)


Вы можете найти хорошо написанное введение в Quaternions и Ogre здесь: http://www.ogre3d.org/tikiwiki/Quaternion+and+Rotation+Primer

Особенно Resetting Orientation может быть интересным.

person c_k    schedule 10.06.2013