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:
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.
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.