Share via


Ansichtstransformation

Eine Ansichtstransformation findet den Betrachter im Weltraum und wandelt Scheitelpunkte in den Kameraraum um. Im Kamerabereich befindet sich die Kamera bzw. der Betrachter am Ursprung und sieht in positiver Z-Richtung aus. Die Ansichtsmatrix verschiebt die Objekte in der Welt um die Position einer Kamera – den Ursprung des Kameraraums – und die Ausrichtung. Direct3D verwendet ein linkshändiges Koordinatensystem, sodass z in einer Szene positiv ist.

Es gibt viele Möglichkeiten, eine Ansichtsmatrix zu erstellen. In allen Fällen hat die Kamera 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 Drehungsmatrizen für jede Achse zu kombinieren. Bei diesem Ansatz gilt die folgende allgemeine Matrixgleichung.

Formel der Ansichtstransformation

In dieser Formel ist V die Ansichtsmatrix, die erstellt wird, T ist eine Übersetzungsmatrix, die Objekte in der Welt neu positioniert, und Rₓ bis Rz sind Rotationsmatrizen, die Objekte entlang der x-, y- und z-Achse drehen. Die Übersetzungs- und Drehungsmatrizen 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 um 10 Einheiten entlang der x-Achse, -20 Einheiten entlang der y-Achse und -100 Einheiten entlang der Z-Achse zu verschieben. Die Rotationsmatrizen in der Formel basieren auf der Ausrichtung der Kamera, d. h., wie stark die Achsen des Kameraraums aus der Ausrichtung mit dem Weltraum heraus gedreht werden. Wenn die oben erwähnte Kamera beispielsweise gerade nach unten zeigt, ist 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 der gleichen, aber entgegengesetzten Größe 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 ihre obere Seite der Kamera zugewandt ist, sodass sich die Kamera über dem Modell befindet.

Einrichten einer Ansichtsmatrix

Direct3D verwendet die Welt- und Ansichtsmatrizen, um mehrere interne Datenstrukturen zu konfigurieren. Jedes Mal, wenn Sie eine neue Welt- oder Sichtmatrix festlegen, berechnet das System die zugeordneten 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 einer Weltansichtsmatrix verketten, die Sie als Weltmatrix festlegen, und dann die Ansichtsmatrix auf die Identität festlegen. Behalten Sie zwischengespeicherte Kopien einzelner Welten bei, und zeigen Sie Matrizen an, die Sie ändern, verketten und die Weltmatrix nach Bedarf zurücksetzen können.

Transformationen