Grundlagen der 3-D-Visualisierung

 

In dieser Ausgabe des Fachgruppenzirkulars machen wir einen kleinen Ausflug in die Visualisierung von dreidimensionalen Gegenständen am (zweidimensionalen) Bildschirm. Dabei wird das Augenmerk auf den mathematischen Grundlagen der Projektion liegen.

Die Geometrie ist unten schematisch abgebildet. Der zu visualisierender Gegenstand ist der blaue Pfeil, der sich in unserem Beispiel (aber nicht notwendigerweise) im Bereich hinter der x-y-Ebene befindet. Ferner haben wir eine Beobachterposition, dargestellt durch das stilisierte Auge, und eine Projektionsfläche (rot dargestellt), die dem Bildschirm entspricht. Die Projekt des Gegenstands ergibt sich in der Grafik aus den Schnittpunkten der Verbindungslinien zwischen Betrachter und Objekt (hier: Anfang und Ende des blauen Pfeils) mit der Projektionsfläche (rot dargestellt).

Repetitorium: Vektoren, Geraden- und Ebenengleichungen

Damit sind die Grundlagen auch schon beschrieben. Mathematisch gehen wir mit Hilfe der Vektorrechnung heran, die sicher einige von Euch noch aus der Oberstufe kennen. Vektoren beschreiben wir als Zahlentripel (x, y, z) im dreidimensionalen Raum; als für uns wesentliche Eigenschaft haben sie eine Länge und eine Richtung. Der Anfangs- bzw. Endpunkt des blauen Pfeils haben ebenfalls drei Raumkoordinaten und lassen sich somit jeweils als Vektor angeben.

Die Vektorrechnung bietet noch einige Möglichkeiten mehr. Geraden im Raum lassen sich recht elegant mit einer vektoriellen Geradengleichung beschreiben. Sie hat die Form

G = A + λ*B,  (Hinweis: fortan sind alle fett markierten Formelsymbole Vektoren!)

wobei A der Ortsvektor der Geraden, B der Richtungsvektor und λ ein frei skalierbarer Parameter ist. Der Ortsvektor ist ein beliebiger Punkt auf der Geraden, während der Richtungsvektor, wie der Name es schon nahelegt, die Richtung der Geraden im Raum festlegt. Nun kommt der Parameter λ ins Spiel: Die Gerade als Ganzes lässt sich über die Wahl dieses frei skalierbaren Wertes vollständig durchfahren. Die Geradenbeschreibung ist somit vollständig.

Diese Betrachtung lässt sich auf Ebenengleichungen ausweiten. Diese haben nun die Gestalt

E = U + μ*V + ν*W,

wobei U wiederum der Ortsvektor auf dieser Ebene ist und V und W zwei nichtparallele Richtungsvektoren sind, die beide in der Ebene liegen. Das Prinzip ist ähnlich zur Geradengleichung: Durch skalieren der beiden freien Parameter μ und ν lassen sich alle Punkte der Ebene erreichen.

Der Ansatz

Kehren wir nun wieder zu unserer Geometrie zurück. Uns interessieren die bereits erwähnten Durchstoßpunkte. Wir benötigen zunächst die Gerade zwischen Beobachter und Objekt in Form einer Geradengleichung sowie die Mattscheibe (Projektionsfläche) als Ebenengleichung.

Sowohl den Beobachter als auch den betrachteten Gegenstand - nehmen wir mal die blaue Pfeilspitze - kann man als Vektor beschreiben. Die Verbindungsgerade zwischen den beiden Positionen im Raum lässt sich mit einer Geradengleichung beschreiben, wobei man für den Ortsvektor den Vektor des Beobachters selbst nehmen kann und für den Richtungsvektor die Differenz aus dem Vektor der blauen Pfeilspitze und dem Ortsvektor.

Auch für die Mattscheibe lässt sich eine Darstellung in Form einer Ebenengleichung finden: Als Ortsvektor eignet sich der Ursprung (s. Abb.) und als Richtungsvektoren V und W können der linke Rand der Mattscheibe, welcher in unserer Anschauung auf der x-Achse liegt, sowie ihr unterer Rand auf der y-Achse genommen werden, also etwa V = (1, 0, 0) und W = (0, 1, 0).

Die Durchstoßpunkte haben die Eigenschaft, dass sie sowohl Elemente der Geraden als auch der Ebene sind; d.h. man bestimmt sie durch Gleichsetzen der Geradengleichung mit der Ebenengleichung (E = G). Da diese Gleichsetzung vektoriell in 3 Dimensionen erfolgt, erhält man ein lineares Gleichungssystem mit 3 unbekannten λ, μ und ν, welches stets eindeutig lösbar ist.

Für die Projektionsfläche sind die Werte von μ und ν entscheidend. Liegen beide Werte zwischen 0 und 1 (die Grenzen in unserem Beispiel), so liegt der Durchstoßpunkt auf der Mattscheibe; das Objekt kann also gezeichnet werden. Eine Besonderheit muss noch beachtet werden: Auch Objekte, die hinter dem Betrachter liegen, können Durchstoßpunkte auf der Mattscheibe erzeugen. Diese gilt es zu filtern; sie sind erkennbar am negativen λ. In einem letzten Schritt werden die Werte von μ und ν in Bildschirmkoordinaten umgerechnet.

Diese Projektion liefert die perspektivische Verzerrung frei Haus.

In der Praxis wird der Programmierer diesen Formalismus wohl kaum selbst implementieren. Bibliotheken wie OpenGL und Direct3D erlauben das Zeichnen von 3-D-Objekten, wobei sie weit mehr Möglichkeiten bieten, wie z.B. das Arbeiten mit Texturen, Lichtverhältnissen oder Oberflächeneigenschaften.