Freigeben über


Ansichtstransformation

Eine Ansichtstransformation sucht den Betrachter im Weltraum und wandelt Scheitelpunkte in den Kamerabereich um. Im Kamerabereich befindet sich die Kamera oder der Betrachter am Ursprung, der in die positive Z-Richtung schaut. Die Ansichtsmatrix verschlegt die Objekte in der Welt um die Position einer Kamera – den Ursprung des Kamerabereichs – und die Ausrichtung. Direct3D verwendet ein linkshändiges Koordinatensystem, sodass z in eine Szene positiv ist.

Es gibt viele Möglichkeiten zum Erstellen einer Ansichtsmatrix. In allen Fällen verfügt die Kamera über eine logische Position und Ausrichtung im Weltraum, die als Ausgangspunkt zum Erstellen einer Ansichtsmatrix verwendet wird, die auf die Modelle in einer Szene angewendet wird. Die Ansichtsmatrix übersetzt und dreht Objekte, um sie im Kamerabereich zu platzieren, wo sich die Kamera am Ursprung befindet. Eine Möglichkeit zum Erstellen einer Ansichtsmatrix besteht darin, eine Übersetzungsmatrix mit Drehmatrizen für jede Achse zu kombinieren. Bei diesem Ansatz wird die folgende allgemeine Matrixgleichung angewendet.

Formel der Ansichtstransformation

In dieser Formel ist V die zu erstellende Ansichtsmatrix, T ist eine Übersetzungsmatrix, die Objekte in der Welt neu positioniert, und Rₓ durch Rz sind Drehungsmatrizen, die Objekte entlang der x-, y- und z-Achse drehen. Die Übersetzungs- und Drehmatrizen basieren auf der logischen Position und Ausrichtung der Kamera im Weltraum. Wenn also die logische Position der Kamera in der Welt 10.20.100> beträgt<, besteht das Ziel der Übersetzungsmatrix darin, Objekte -10 Einheiten entlang der X-Achse, -20 Einheiten entlang der Y-Achse und -100 Einheiten entlang der Z-Achse zu verschieben. Die Drehungsmatrizen in der Formel basieren auf der Ausrichtung der Kamera, in Bezug darauf, wie viel die Achsen des Kameraraums aus der Ausrichtung mit dem Weltraum gedreht werden. Wenn die oben erwähnte Kamera beispielsweise gerade nach unten zeigt, beträgt ihre Z-Achse 90 Grad (Pi/2 Bogenmaß) außerhalb der Ausrichtung mit der Z-Achse des Weltraums, wie in der folgenden Abbildung dargestellt.

Abbildung des Sichtraums der Kamera im Vergleich zum Weltraum

Die Drehungsmatrizen wenden Drehungen gleich, aber entgegengesetzt auf die Modelle in der Szene an. Die Ansichtsmatrix für diese Kamera enthält eine Drehung von -90 Grad um die x-Achse. Die Drehungsmatrix wird mit der Übersetzungsmatrix kombiniert, um eine Ansichtsmatrix zu erstellen, die die Position und Ausrichtung der Objekte in der Szene so anpasst, dass deren oberer Rand auf die Kamera gerichtet ist, wodurch die Kamera über dem Modell dargestellt wird.

Einrichten einer Ansichtsmatrix

Direct3D verwendet die Welt- und Ansichtsmatrizen, um mehrere interne Datenstrukturen zu konfigurieren. Jedes Mal, wenn Sie eine neue Welt- oder Ansichtsmatrix festlegen, berechnet das System die zugehörigen internen Strukturen neu. Das häufige Festlegen dieser Matrizen ist rechenaufwändig. Sie können die Anzahl der erforderlichen Berechnungen minimieren, indem Sie Ihre Welt- und Ansichtsmatrizen in eine Weltansichtsmatrix verketten, die Sie als Weltmatrix festlegen, und dann die Ansichtsmatrix auf die Identität festlegen. Behalten Sie zwischengespeicherte Kopien einzelner Welt- und Ansichtsmatrizen bei, die Sie nach Bedarf ändern, verketten und zurücksetzen können.

Transformationen