Hallo,
ich habe mir im Internet schon einige Quellen zu Quaternionen angesehen, aber irgendwie hat es noch nicht klick gemacht bzw. habe ich nichts gefunden, was den Bedürfnissen meines Spiels entspricht. Also folgendes:
Ich habe eine Sphäre im Ursprung und hätte gern eine Kamera, die um die Sphäre herumkreisen kann und immer in Richtung Ursprung (0,0,0) schaut. Ähnlich wie bei Super Mario Galaxy, nur halt mit nur einem Planeten. (Im Grunde steuert der Spieler ein Objekt, dass sich auf dem Planeten bewegt und die Kamera folgt diesem Objekt.)
Ich gehe mal davon aus, dass ich die Position der Kamera als Quaternion (plus Entfernung vom Ursprung?) speichern kann. Aber wie wende ich die Bewegungen an? (Rauf-runter und links-rechts. Natürlich relativ zur Kamera, nicht zum Planeten/Weltkoordinaten.) Und wie errechne ich mir daraus die ViewMatrix und Kameraposition in kartesischen Koordinaten? Quaternion in Matrix umrechnen kann ich schon, aber ist das schon die ViewMatrix (die ich benötige)? Oder brauche ich das konjugierte Quaternion?
Mein Ziel ist natürlich u.a. Gimbal Lock zu vermeiden und deswegen habe ich mir mal (noch) nichts mit Euler Winkeln angesehen.
Oder liege ich überhaupt ganz falsch?
Danke schon einmal im Voraus!
Lg,
Marko
PS: Also im Grunde brauche ich moveUp(angle), moveRight(angle), moveNear(distance), getViewMatrix() und getLocation(). Nur eben die Implementierung ist mir unklar.



Reply With Quote

. Ich würde zuerst eine konstante Translation machen, dann um die Y-Achse rotieren und dann um die X-Achse.

Bookmarks