Wie macht man konvertieren Welt-Koordinaten Kamera-Koordinaten?
Ich habe ein Eingabe-3D-Vektor, zusammen mit pitch-und gierwinkel der Kamera. Kann mir jemand beschreiben oder einen link auf eine Ressource, die mir helfen werden zu verstehen und zu implementieren, die erforderliche transformation und matrix-mapping?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die-Welt-zu-Kamera transformation matrix ist die inverse der Kamera-zu-Welt-matrix. Die Kamera-zu-Welt-matrix ist die Kombination von einer übersetzung in die Kamera, die position und rotation der Kamera-Ausrichtung. Also, wenn M wird die 3x3 rotationsmatrix entsprechend der Kamera-Ausrichtung und t wird die position der Kamera, dann die 4x4-Kamera-zu-Welt-matrix ist:
Beachten Sie, dass ich bin davon ausgegangen, dass die Vektoren werden in der Spalte Vektoren, die multipliziert werden, die auf das Recht zum ausführen von Transformationen. Wenn Sie die entgegengesetzte Konvention, stellen Sie sicher, dass das transponieren der matrix.
Finden M, Sie können verwenden Sie eine der Formeln aufgeführt, die auf Wikipedia, je nach Ihren jeweiligen Konvention für roll, pitch und yaw. Beachten Sie, dass die Formeln verwenden die Konvention, dass Vektoren Zeilen-Vektoren, die multipliziert auf der linken Seite.
Statt-computing-die-Kamera-zu-Welt-matrix und invertiert es, eine effizientere (und numerisch stabile) alternative ist die Berechnung der-Welt-zu-Kamera-matrix direkt. Dazu einfach umkehren der position der Kamera (durch die Negation allen 3 Koordinaten) und seine Orientierung (durch die Negation der roll -, pitch-und yaw-Winkel, und passen Sie in Ihre richtigen Bereiche), und berechnen Sie die matrix mit dem gleichen Algorithmus.
Wenn wir eine Struktur haben, wie dies zu beschreiben, eine 4x4-matrix:
Wenn Ihr alle Eulerschen Winkel, d.h. einen Winkel repräsentieren die yaw, pitch, roll und ein Punkt im 3d-Raum für die position, können Sie berechnen, Rechts, Oben und Schauen Vektoren. Beachten Sie, dass Rechts, Bis, und Suchen Sie nur die X -, Y -, Z-Vektoren, aber da dies eine Kamera, ich finde es einfacher, es so nennen. Der einfachste Weg, um Ihre roations, um die Kamera-matrix ist der Bau einer Reihe von rotation Matrizen und multiplizieren wir Sie mit der Kamera-matrix, die von jeder rotation matrix.
Eine gute Referenz für das hier: http://www.euclideanspace.com
Sobald Sie sich beworben haben, die alle benötigten Rotationen, können Sie den vector Pos, um die position der Kamera im Raum der Welt.
Schließlich, bevor Sie die Kamera transformation, die Sie benötigen, um die Kamera inverse von der matrix. Dies ist, was Sie gehen zu multiplizieren Sie Ihre modelview-matrix durch, bevor Sie starten, zeichnen von Polygonen. Für die matrix-Klasse vor, die inverse wird berechnet, wie diese:
Also endlich, mit all unseren matrix-Konstruktion aus dem Weg, Sie würden dabei so etwas wie dieses:
Hoffe, das hilft.
Was Sie beschreiben, nennt sich "Perspektivische Projektion" und es gibt unzählige Ressourcen im web, die erklären, die matrix-Mathematik und geben Sie den code, der erforderlich ist, dies zu tun. Sie könnten mit dem start wikipedia-Seite