erste Frage zu SO obwohl ich schon viele Male hier durch Google gewesen bin. Ich habe ziemlich viel über das Thema der Verwendung von Quaternionen gelesen, um Rotation darzustellen, und um Menschen mit ähnlichen Problemen zu finden. Ich muss noch eine gute Lösung finden, oder eine, die ich verstehen könnte. Also gebe ich eine Chance, eine klare Frage zu stellen, um solide Antworten zu generieren.Quaternion Camera Representation in 6DOF - Abwehren von inhärenten Rollen
Ich verwende derzeit eine Quaternion (speziell eine Qt 4.7 Quaternion/C++), um die Ausrichtung meiner Kamera darzustellen. Bei jedem Schritt des Programms überprüfe ich auf Mausbewegung und mache ein fromAxisAndAngle (xaxis, x_mouse_movement) und fromAxisAndAngle (yaxis, y_mouse_movement). Ich nehme diese zwei Quaternionen und multipliziere sie (yaxis * xaxis). Für die Initialisierung habe ich eine Einheit Quaternion (w, x, y, z -> 1,0,0,0) mit zu multiplizieren. Ich akkumulieren die Rotation über diese vonAxisAndAngle Multiplikationen mit der aktuellen Ausrichtung. Dies erzeugt eine Rolle, bekannt als das Problem der Lie - Gruppe (glaube ich), dass, wenn Sie kontinuierlich Pitch und Gieren anwenden, Sie eine reine Rolle erzeugen können, und das ist das, was ich in meiner aktuellen Implementierung habe (was für meine Prozedur korrekt ist) Ich kann sagen).
Ich habe eine andere Methode implementiert, bei der Pitch, Gier, Roll inkrementiert werden und die Quaternion von AxisAndAngle jedesmal von diesen Werten aufgebaut wird. Dies erzeugt eine korrekte FPS-Stil-Kamera, aber es leidet unter einer kardanischen Verriegelung. Mein Ziel ist es, die reine Quaternion-Darstellung beizubehalten und gleichzeitig den Rolling-Effekt zu eliminieren (oder auszugleichen), der nur durch Tonhöhen und Gier erzeugt wird, so dass ich diese allgemeine 6DOF-Kamera als FPS-Kamera oder Raumschiff-Kamera verwenden kann. Ich suche nach Vorschlägen (bestimmten Routinen), um diese Rolle zu korrigieren, oder nach einer alternativen Darstellung, die meinen Bedürfnissen entspricht. Sorry für die Wand des Textes, aber ich wollte sehr klar sein. Vielen Dank für Ihre Zeit und für ein glückliches Hacken!
Haben Sie eine Referenz für dieses "Lie Group Problem"? Ich hatte Schwierigkeiten, nach relevanten Referenzen zu suchen. Mein Verständnis war, dass eine Quaternion verwendet wurde, um den inkrementellen Ansatz zu ermöglichen, da Rundungsfehler vermieden werden, und dieses Problem ist neu für mich. –