lwjgl / rotation / follow camera / OpenGL

hasta_jesaja

Erfahrenes Mitglied
Hi,

ich setz mich nun schon seit mehreren Tagen mit OpenGL basierend auf lwjgl auseinander. Vorher habe ich Java3D ausprobiert, in dessen Bibliothek es Funktionen gibt für view, womit man relativ simpel eine follow camera erzeugen kann.
Was mich nun aber seit mehreren Tagen beschäftigt, ist die drehung der "camera" um ein objekt z.B. mit gluLookAt. Die drehung um EINE Achse ist kein Problem, das funktioniert super. Ich habe mich auch schwer mit Matrizen und Quaternions auseinander gesetzt um mehrere Drehungen zu kombinieren, was aber leider immer wieder fehl schlägt.
Kann mir jemand helfen, wie ich eine Drehung der follow camera um zwei Achsen (x und y) kombiniere, so dass die position der kamera nachher stimmt?
Ich habe zich möglichkeiten ausprobiert, daher weiss ich nicht mit welchem code sample ich anfangen soll.
Am besten zeige ich mal wie ich die Kamera Vektoren für die jeweilige Achsendrehung berechne. Diese beiden möchten ich ja dann gerne kombinieren. Ob in einer Matrix oder mit Quaternions ist mir egal, wobei Quaternions glaube ich schneller sind.

Hier die berechnung von x und z bei einer Drehung von rotY um die Y Achse:
Code:
float camX = (float) (camDistance * Math.sin(rotY * Math.PI / 180.0) + centerX);
float camZ = (float) (camDistance  * Math.cos(rotY * Math.PI / 180.0) + centerZ);

Also die Kamera hat eine feste Distanz (die verändert werden kann mit Mausrad oder +/-, somit kann man zoomen) und auf "center" liegt der punkt worum sich die "Kamera" dreht, also die Spielfigur sozusagen oder ein beliebiges Objekt.

Die Drehung um x sieht dann Ähnlich aus, jedoch habe ich bis jetzt keinen funktionierenden code hinbekommen der die beiden drehungen kombiniert ohne gimbal lock oder sonstigen komischen ergebnisse.

Bitte helft mir! Danke euch.
 
Hallo,

mal was grundsätzliches: Das hier ist ein Grundlagenforum und was du wissen willst hat nichts mehr mit Java-Grundlagen zu tun. Das ist richtig tief drinnen in der Materie. Wenn du eine Antwort willst, dann würde ich das in einem passenderes Unterforum posten, denn hier werden nicht unbedingt Leute hinkommen, die sich mit 3D in Java auskennen.
Leider bleibe ich dir eine Antwort schuldig aber vielleicht bekommst du ja eine, wenn du meinen Ratschlag beherzigst.

Gruß

taouri
 
Zurück