Wie kann man bei Verwendung von Quaternionen "Standard" -Drehungen von three.js ableiten?

8

Newbie stack overflow Teilnehmer, Anfänger 3D-Programmierer, und weit entfernt von einem Mathewiz ... also werde ich versuchen, diese Frage so klar wie möglich zu gestalten, in der Hoffnung, dass es Sinn macht und auf eine Antwort hofft, die nicht einen Kilometer entfernt ist mein Kopf.

Ich habe eine sehr coole App mit three.js geschrieben, mit der der Benutzer durch 3D-Raum fliegen und ein Sonnensystem erkunden kann. Das Flugmodell basiert lose auf dem Fly.Controller-Beispiel / Erweiterung im three.js-Paket, das mir beibrachte, Quaternionen zu verwenden, um alle Achsenrotationen relativ zueinander sinnvoll zu halten. Der fliegende Teil funktioniert alles super.

Hier ist mein Dilemma: Wie kann ich bei der Verwendung von Quaternionen die Rotationswerte "normal" (ich weiß nicht, wie es sonst genannt wird) ableiten, um festzustellen, in welche Richtung ich mich befinde? Bei Verwendung von Quaternionen bleibt die "Rotations" -Struktur innerhalb des Kameraobjekts bei 0,0,0. Während ich frei durch den Weltraum fliegen kann, kann ich nicht herausfinden, in welche Richtung ich eigentlich komme. Gibt es eine eingebaute three.js-Funktion oder eine andere einfache Möglichkeit, dies zu konvertieren?

Ich habe einige ähnliche, verwirrende Hinweise im Internet gefunden, aber nichts, was ich in three.js entziffern und verwenden kann. Danke.

    
J Sprague 05.01.2013, 02:29
quelle

2 Antworten

0

Danke für die schnelle Antwort - es war nicht genau das, wonach ich suchte, aber ich wusste wahrscheinlich nicht, wie ich die Frage klar stellen sollte. Mein spezifischer Anwendungsfall war, dass ich eine 2D-Karte zeichnen wollte, die die relativen Positionen aller Objekte in meiner 3D-Szene darstellt, aber ich wollte die Objekte in der Karte basierend auf dem Gieren der Kamera in der 3D-Szene drehen - also musste ich den "Winkel" der Quaternion-basierten Kamera kennen, um die Rotationen der 2D-Objekte auf der Karte entsprechend auszugleichen. Scheint ziemlich gut zu funktionieren. Ich wünschte nur, es müsste nicht so viele Berechnungen geben, aber zumindest ist Javascript schnell.

%Vor%     
J Sprague 10.01.2013, 23:45
quelle
4

Das ist eine gute Frage.

Wenn sich ein Objekt in seiner Standardausrichtung befindet, kann davon ausgegangen werden, dass es in die Richtung seiner internen, positiven Z-Achse blickt. (Die Ausnahme ist die Kamera , die in die Richtung ihrer internen negativen z-Achse blickt.)

Wenn ein Objekt gedreht wird, können Sie daher die Richtung, der das Objekt zugewandt ist, ermitteln, indem Sie die Quaternion des Objekts auf einen Einheitsvektor anwenden, der in die Richtung der positiven Z-Achse (negative Z-Achse der Kamera) zeigt / p> %Vor%

Dadurch wird ein Einheitenvektor zurückgegeben, der in die Richtung zeigt, in die das Objekt "zeigt".

Wenn das Objekt ein Kind eines anderen gedrehten Objekts ist, ist die Situation komplizierter.

BEARBEITEN: aktualisiert für R.58. Danke @eshan.

    
WestLangley 05.01.2013 04:18
quelle

Tags und Links