Mathematik in Computerspielen – Implementierung der Perspektivischen Projektion

15.09.2017

Um die dreidimensionale Welt eines Computerspiels auf dem zweidimensionalen Bildschirm darzustellen werden Berechnungen durchgeführt die so gewählt sind, dass das Ergebnis wirkt als sei es von einer (virtuellen) Kamera aufgenommen worden. Im Folgenden wird die dazu üblicherweise in Computerspielen verwendete Vorgehensweise (vereinfacht) vorgestellt.

Bei der Abbildung der dreidimensionalen (kurz: 3d) virtuellen Welt eines Computerspiels auf den Bildschirm (oder der echten Welt auf ein Foto) geht eine Dimension verloren. Diese Dimensions-Reduktion wird mathematisch als Projektion bezeichnet. Die einfachste Variante (ein Spezialfall der orthogonalen Projektion) ist das Weglassen einer Dimension, sozusagen Flachdrücken eines Objekts oder auch Bildung von dessen Silhouette. Etwa so wie bei einem Stadtplan oder einem (architektonischen) Grundriss die Höhe ignoriert wird (sie würde genau senkrecht zum Papier bzw. Plan stehen). Dieser Artikel befasst sich mit einer anderen Variante, der perspektivischen Projektion.

Aus Gründen der Visualisierbarkeit vereinfachen wir zunächst auf das Problem Projektion von 2d nach 1d, bevor wir (als dessen einfache Erweiterung) die Projektion von 3d auf 2d betrachten.

Positionen in der uns umgebenden 3d-Welt lassen sich mit kartesischen Koordinaten beschreiben (als Entfernungen entlang der aufeinander senkrecht stehenden Achsen Länge, Breite, Höhe - üblicherweise als x, y, z abgekürzt (Die genaue Zuordnung variiert, z.B. wird in manchen Situationen y als Höhe bevorzugt, in anderen z)).

Diese Beschreibung setzt stillschweigend einen euklidischen (d.h. flachen im Sinne von nicht gekrümmten) Raum voraus und insbesondere, dass sich Licht entlang von Geraden ausbreitet - für den Alltag (Alltag im Sinne von: in guter Näherung mit newtonscher Physik beschreibbare Situationen, im Gegensatz zu: relativistische Physik erfordernde Extremfälle, wie z.B. sehr große Massen) und die meisten Computerspiele eine akzeptable Näherung.

Die virtuelle Welt eines 3d-Computerspiels lässt sich mittels analytischer Geometrie modellieren. Jedes Objekt wird (zumindest was die Visualisierung betrifft) üblicherweise nur durch seine Oberfläche dargestellt, die aus vielen (kleinen) Dreiecken zusammengesetzt gedacht wird. Jeder Eckpunkt eines Dreiecks ist durch seine Koordinaten definiert. Um die Überlegung zu vereinfachen befassen wir uns ab hier nur noch mit den (Eck-)Punkten.

Wir denken uns nun den Betrachter bzw. eine virtuelle Kammera (zur Vereinfachung der Überlegung auf einen Punkt zusammengeschrumpft vorgestellt) im Ursprung des Koordinatensystems, entlang der z-Achse durch einen dazu im Abstand 1 senkrecht aufgespannten Bildschirm auf ein Objekt (oder eine ganze Szene) dahinter blickend (diese spezielle Ausgangslage resultiert in der einfachsten Formel). Wie müssten nun die Punkte auf dem Bildschirm angeordnet werden, damit das resultierende Bild für den Betrachter wie ein Blick in die Szene wirkt? Da Licht sich unter Alltagsbedingungen mit sehr guter Näherung entlang von Geraden bewegt, liegt jeder abgebildete Punkt auf dem Schnittpunkt der Geraden vom Betrachter zum betrachteten Punkt in der Szene.

Betrachten wir einen einzigen Punkt P mit den gegebenen Koordinaten (x, y, z). Gesucht sind die Koordinaten des auf den Bildschirm (Wir setzen hier Normalized Device Coordinates voraus, d.h. der linke/untere Rand liegt bei -1, der rechte/obere bei +1) abgebildeten Punktes (sx, sy). Sei t ein Parameter, der die Position auf der Geraden angibt: 0 im Ursprung (Beobachter), 1 auf dem Bildschirm. Dann ergeben sich unter Verwendung der Definition einer Geraden folgende Gleichungen, die beschreiben, durch welche Punkte im Raum eine Gerade (durch den Ursprung und einen bestimmten Punkt auf dem Bildschirm) verläuft:

gleichungen1

Einsetzen (von III in II und I) und Auflösen nach den Bildschirm-Koordinaten liefert die Formeln (für den einfachsten Fall der perspektivischen Projektion):

gleichungen2

Beispiel 1

Betrachten wir einen Würfel, mit Zentrum in (0,0,3) und Kantenlänge 2.

Die Eckpunkte sind somit

tabelle1

Wechseln wir vorerst zwecks besseren Überblicks in die Draufsicht, d.h. hier unter Weglassen der y-Koordinate, so dass nur ein Quadrat (der Deckel des Würfels) zu sehen ist, mit den Eckpunkten

tabelle2

Formel I' (wie gesagt, y lassen wir erstmal weg) liefert für sx die Werte

werte1

Die ganze Anordnung sieht in Draufsicht so aus:

aligned_2d_enhanced
Sicht von oben

Wenden wir Formeln I' bzw. II' auf die Koordinaten aller Eckpunkte des Würfels an, so ergibt sich folgendes Bild auf dem Schirm:

aligned_3d_enhanced
Sicht von Vorne

Diese Darstellung würde man auch als Abbildung eines Würfels in Zentralperspektive bezeichnen.

Beispiel 2

Was passiert, wenn wir einen gedrehten Würfel betrachten? Eckpunkte z.B.

tabelle3

In Draufsicht wird das ein gedrehtes Quadrat, mit den Eckpunkten

tabelle4

Es ergeben sich die projezierten Koordinaten

werte2

Die ganze Anordnung sieht in Draufsicht so aus:

rotated_2d_enhanced
Sicht von oben

Wenden wir wieder Formeln I' bzw. II' auf die Koordinaten aller Eckpunkte des gedrehten Würfels an, so ergibt sich folgendes Bild auf dem Schirm:

rotated_3d_enhanced
Sicht von Vorne

 Ausblick

In diesem Artikel wurde nur der einfachste Fall der perspektivischen Projektion besprochen. Befindet sich der Schirm nicht in einer Entfernung von 1 zum Betrachter so wird die Formel etwas komplizierter.

Die tatsächliche Implementierung in der Computergrafik erfolgt normalerweise mittels homogener Transformationsmatrizen (mit denen dann auch Drehung und Verschiebung der Kamera berechenbar werden), aber diese hier einzuführen würde den Rahmen des Artikels sprengen. Zum Glück liefert der hier beschriebene, verständlichere, Ansatz für die angegebene Ausgangskonfiguration exakt dasselbe Ergebnis.