Bis das fertige 3D-Bild auf dem Monitor erscheint, müssen einige mathematische Berechnungen durchgeführt werden. Um ein flüssiges Bild zu erhalten, müssen mindestens 30 Bilder pro Sekunde berechnet werden. Diese Berechnung geschieht in der sogenannten 3D-Pipeline. Diese Pipeline kann man wiederum um mehrere verschiedene Schritte unterteilen: Tesselation, geometrische Transformation und das Rendering. Nach diesen Berechnungen erscheint das Bild auf der Monitor. Die meisten 3D-Chips arbeiten nach dem folgenden Prinzip:
. Anfangs ist die 3D Landschaft in Punkten angegeben
. Tesselation: Anstatt alles als eine Ansammlung von Punkten zu handhaben, werden nun alle Objekte einer 3D-Welt mit Polygonen (hier: Dreiecke) dargestellt. Für ein Dreieck werden jeweils drei Punkte mit den Koordinaten x für die horizontale Position, y für die vertikale Position und z für den Tiefenwert benötigt. Mit diesen drei Punkten werden die Ecken des Dreiecks definiert. Je nach gewünschter Darstellung erhält dann jeder Punkt noch einen Farb- und/oder einen Transparenzwert.
. Geometrische Transformation: Zum einen wird die Lage der Objekte relativ zum Betrachter neu erfasst, zum andern die Wirkung von allfälligen Lichtquellen auf die Objekte berechnet.
. Rendering: Dieser Arbeitschritt ist der rechenintensivste und wird daher speziellen 3D-Grafikkarten überlassen. Die Aufgabe des Renderings besteht darin, die bis jetzt nur im Speicher des Computers befindlichen Zahlenkolonnen in ein realistisches Bild auf dem zweidimensionalen Computerbildschirm zu bringen. Der 3D-Eindruck darf dabei natürlich nicht verloren gehen. Das Rendering kann wiederum in mehrere Schritte unterteilt werden: Hidden Surface Removal / Clipping, Texture Mapping / Perspective Correction, Shading, Bildaufbau im Framebuffer, Ausgabe auf dem Monitor.
o Hidden Surface Removal: In diesem Arbeitsschritt werden alle momentan nicht sichtbaren (Teil-)Objekte der 3D-Welt abgeschnitten (Clipping) oder entfernt. Mit Hilfe von z-Sorting werden die Objekte ermittelt, die von einem anderen im Vordergrund verdeckt werden. Beispielsweise steht vor einem Auto ein großes Haus. Natürlich ist das Auto jetzt für den Betrachter nicht sichtbar. Der Computer berechnet dies folgendermaßen. Mit geraden Strahlen, die vom Betrachter ausgehen wird die ganze 3D-Welt abgetastet. Trifft der Strahl nun auf ein Objekt, speichert er dessen Tiefeninformation im z-Buffer. Der Strahl durchsticht das Objekt und läuft gerade weiter. Trifft er nun erneut auf ein Objekt, vergleicht er dessen Tiefeninformation und falls dieses Objekt weiter hinten (also verdeckt) ist und das Objekt im Vordergrund nicht durchsichtig ist, wird das weiter hinten liegende Objekt entfernt. Dies hat den Vorteil, dass viel weniger Daten gerendert werden müssen.
o Texture Mapping / Perspective Correction: Diesen Schritt könnte man vereinfacht als \"Kosmetik\" beschreiben. Hier erhalten die Objekte die Texturen (Bilder), die Perspektive wird perfektioniert und der \"Treppcheneffekt\" und andere unschöne Dinge werden ausgebessert.
Zuerst werden die Texturen an die Objekte angeklebt. Die dabei einfachste Methode ist das Point-Sampling. Je nach Entfernung wird beispielsweise nur jeder fünfte Farbwert einer Texture verwendet. Dies führt zu einem scheußlich klumpigen Aussehen der Objekte. Besser ist da schon das bi-lineare Texture Mapping. Dabei werden nun aus viel benachbarten Bildpunkten einer Texture (Texeln) neue Farbwerte berechnet. Dies führt zu einer Verwischung der sonst klobigen Texturen. Falls vorhanden, werden nun anhand der Tiefeninformation im z-Buffer verschieden detaillierte Texturen ausgewählt (mit verschiedenen Auflösungen, je näher, desto detaillierter). Diese Methode nennt man MIP-Mapping (MIP abk. für Multum In Parvum).
Bei schrägen Linien und gekrümmten Kanten von Objekten bildet sich vor allem bei niedrigen Auflösungen der sogenannte \"Treppcheneffekt\" (Aliasing). Die Kanten erscheinen treppenförmig gezackt. Mit dem Anti-Aliasing-Effekt werden diese Treppchen ausgeglichen. Dieser Effekt kann auf mehrere Arten erreicht werden. Entweder man überblendet die benachbarten Pixel mit transparenten Pixeln mit der gleichen Farbe wie das Objekt, oder man interpoliert Mischpixel, d.h. man berechnet aus zwei benachbarten Farbwerten einen neuen.
o Shading: Bis jetzt wurden die in der geometrischen Transformation erhaltenen Daten von den Lichtquellen nicht berücksichtigt. Dazu gibt es nun mehrere mathematische Berechnungsmethoden. Beim Flat-Shading erhält jedes Dreieck einen Farbwert. Die führt dazu, das vor allem gewölbte Objekte recht eckig aussehen, dafür ist diese Berechnung sehr schnell durchgeführt.
Beim Berechnungsmodel des Computerwissenschaftlers Henri Gouraud, dem sogenannten Gouraud-Shading, erhalten alle drei Eckpunkte der Objekte einen eigenen Farbwert. Aus diesen drei Farbwerten werden dann die restlichen Punkte des Dreiecks berechnet, so dass ein fließender Farbübergang erreicht wird. Durch diese Methode erscheinen die Objekte bereits einigermaßen realistisch, da Rundungen nicht mehr eckig erscheinen.
. Sind nun all diese Schritte beendet, so befindet sich ein fertiges Bild im Framebuffer, also in einem Zwischenspeicher. Dieser Zwischenspeicher ist notwendig, da je nach Anzahl der sichtbaren Objekte mehr oder weniger lang für die Berechnung des kompletten Bildes benötigt wird. Ohne diesen Zwischenspeicher würde die Bildwiederholzahl immer schwanken, was den Benutzer stark stören würde
. Das fertige Bild gelangt nun mittels Flipping vom Frame-Buffer in den Videospeicher, also dem Speicher, dessen Inhalt auf dem Monitor angezeigt wird. Dieser Speicher wird ca. 75 mal pro Sekunde ausgelesen und auf dem Bildschirm dargestellt. Erst wenn wieder ein fertiges Bild im Framebuffer ist (ideal mind. 30 mal/Sek.), gelangt es in den Videospeicher und damit auf den Monitor!
|