Die Theorie hinter 3D-Grafik: So entstehen virtuelle Welten
3/4Skalarprodukt
Das Skalarprodukt wird verwendet, um den Winkel zwischen 2 Vektoren zu bestimmen. Außerdem spielt es wichtige Rolle beim Frustum Culling, bei dem nur die Objekte angezeigt werden, die innerhalb des Sichtfeldes sind.
Das Skalarprodukt ist eine Zahl, die durch folgende Verknüpfung der beiden Vektoren entsteht.
Es gilt:
daraus folgt:
Wenn das Skalarprodukt von zwei Vektoren gleich Null ist, dann stehen sie senkrecht aufeinander. Wenn die Vektoren einen größeren Winkel als 90° einschließen ist das Skalarprodukt > 0, bei einem kleineren Winkel als 90° ist das Skalarprodukt < 0.
Technische Umsetzung
Nachdem im Rechner alle Objekte definiert wurden, liegen alle Objekte als Drahtmodell im Speicher des Rechners vor. Nun müssen weitere Schritte durchgeführt werden, damit diese Modelle am Bildschirm erscheinen können. Die Software, die dafür verantwortlich ist, wird als 3D-Pipeline bezeichnet. Diese Pipeline kann man sich als Leitung vorstellen, durch die alle Modelle fließen müssen um zum Bildschirm zu gelangen. Die Pipeline besteht selbst auch wieder aus einzelnen Pipelines, die nacheinander durchlaufen werden.
Die Darstellung eines 3D-Bildes erfordert eine große Menge mathematischer Berechnungen, damit alle Details der Szene richtig dargestellt werden. Für diese Berechnungen ist die Pipeline verantwortlich. Sehen wir uns diese einzelnen Pipelines nun genauer an.
- Transformationspipeline
Hier werden die Modelle im Raum verteilt und ausgerichtet. Die erste Transformation ist die „Welt-Transformation“, mit dieser wird das Objekt im Raum positioniert. Für jedes Objekt wird dabei eine andere Transformation durchgeführt. In der folgenden „Ansichts-Transformation“ wird die Position der Objekte relativ zum Betrachter bestimmt. Als letzte Transformation findet die „Perspektiven-Transformation“ statt, die verantwortlich ist für die Formung der Szene in eine gewünschte Perspektive (ähnlich einer Kameralinse). - Frustum Culling/Clipping Pipeline
In dieser Pipeline wird ermittelt, welche Objekte im sichtbaren Bereich des Bildschirms liegen und welche nicht. Unsichtbare Objekte werden nicht berechnet und nur teilweise sichtbare Objekte werden an den Bildschirmrändern abgeschnitten (Clipping). - Beleuchtungspipeline
Um größeren Realismus zu erreichen, werden die Objekte meist von Lichtquellen beleuchtet. Dabei wird die Lichtstärke in jedem Bereich des Objektes berechnet, sowie die Glanzpunkte, die durch Reflexionen entstehen. - Texturierungspipeline
Nach der Beleuchtung werden meist Texturen über die Objekte gezogen, das sind zweidimensionale Bilder, mit denen die Oberfläche des Objektes beschrieben wird. Diese Texturen werden mit den Beleuchtungswerten kombiniert, damit eine realistische Schattierung gewährleistet wird. - Hidden Surface Removal Pipeline
In dieser Pipeline werden die Objekte ermittelt, die von anderen verdeckt werden. Diese verdeckten Objekte werden dann nicht gezeichnet, um Ressourcen zu sparen. - Rasterisierung
Die Rasterisierung ist der letzte Schritt der 3D-Pipeline. Dabei werden die 3D-Oberflächen in Pixel auf dem Bildschirm umgewandelt, nachdem sie alle anderen Pipelines durchlaufen haben. Heutzutage wird dieser Vorgang von der Grafikkarte hardware-beschleunigt durchgeführt.
Nach diesem letzten Schritt wird nur der eingestellte Ausschnitt unserer 3D-Welt am Bildschirm mit all seinen Details dargestellt.