Kamera auf Kugel um Objekt rotieren
-
Hallo ,
ich habe ein kleines Problem, bei dem mir evtl. jemand helfen könnte und darüber würde ich mich riesig freuen. Also vielleicht hat schon jemand mal ein ähnliches Problem gelöst:
Ich möchte meine Kamera um ihren Focuspunkt auf einer Kugel rotieren lassen, je nach Mouse-Bewegung. Der Up-Vektor der Kamera ist (0,1,0). Wenn ich die Kamera nur um die X-Achse um den Winkel Phi rotiere, funktioniert das auch ganz gut. Wenn ich um die Y-Achse um den Winkel Theta rotiere springt die Kamera bei -PI/2 und PI/2 immer auf einen völlig anderen Punkt, ich glaube 180 Grad weiter. Ich schätze ich muss bei diesen Punkten die Kamera manuell neu Positionieren. Weiß zufälligerweise jemand wie ich die beiden Fälle behandeln muss? Irgendwie komme ich nicht dahinter, ich habe schon viel ausprobiert.
Bei Wikipedia http://de.wikipedia.org/wiki/Kugel ist die Parameterdarstellung einer Kugel aufgeführt. Theta geht dort nur von 0-PI. Ich schätze da liegt das Problem. Ich verwende jetzt Quaternionen. Damit habe ich aber das gleiche Problem.
Danke im voraus.
Grüße
Mihir
-
Ich kann jetzt jeweils die Drehwinkel unabhängig voneinander ändern. D.h. den jeweils anderen muss ich immer konstant lassen, dann funktioniert es. Wenn ich beide Winkel ändern will, also nicht nur auf einem Kreis rotieren will, ensteht voll das Chaos. Die Kamera springt zwar nicht, macht aber auch nicht das was sie soll. Weiß jemand, ob ich den UP-Vektor auch irgendwie drehen drehen muß, damit das funktioniert? Oder irgendwas anderes beachten muß. Die Kamera positioniere ich mit gluLookAt.
Die Lösung des ersten Problems was, dass ich den UP-Vektor hin und wider mal um 180 Grad drehen musste.