C
Vielen Dank für das Angebot, ich hätte es auch fast angenommen.
Die Lösung ist eigentlich ganz einfach, und irgendwie auch erschreckend logisch.
Ein Vektor (hier der up-Vektor) muss konstant bleiben. Diese Drehen muss immer gleich bleiben. Die anderen Beiden Vektoren müssen sich aber mitdrehen. Manchmal hilft nachdenken halt doch mehr als stumpfes Testen, ich hatte natürlich immer nur alle Vektoren global oder alle lokal gehalten.
(Bei einer Rotation um die Z-Achse muss man den "up"-Vektor natürlich ändern.)
Edit:
Na, das mit dem up-Vektor ändern klappt leider noch nicht so. Aber da bin ich auf dem richtigen Weg, leider muss ich jetzt erst mal eine Woche weg.
Eine kleine Frage hätte ich aber noch: Ich nutze jetzt Quaternionen, welche ja angeblich recht performant sein sollen. Aber wenn ich die jetzt um eine eigene Achsen rotiere, muss ich ja erst eine Matrix aus dem Quaternion erstellen, dann die globale Achse über diese Matrix in das lokale Koordinatensystem drehen, nur um nachher wieder ein Quaternion um diese Achse zu erstellen. Das muss doch schneller möglich sein?