Christina Nell 3D-Computergrafik Seminararbeit im Hauptseminar Grafikprogrammierung. Universität Ulm Sommersemester 2008



Ähnliche Dokumente
Christina Nell. 3D-Computergrafik

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen

Im Original veränderbare Word-Dateien

Primzahlen und RSA-Verschlüsselung

3.2 Spiegelungen an zwei Spiegeln

10.1 Auflösung, Drucken und Scannen

Programm 4: Arbeiten mit thematischen Karten

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Woraus besteht ein Bild? (c) Winfried Heinkele

Lineare Gleichungssysteme

Plotten von Linien ( nach Jack Bresenham, 1962 )

Advanced Rendering Interior Szene

1 Mathematische Grundlagen

Diese Prozesse und noch viele andere Tricks werden in der Digitalfotografie mit Hilfe von Bildbearbeitungsprogrammen, wie z. B. Gimp, bewältigt.

6.2 Scan-Konvertierung (Scan Conversion)

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

PTV VISWALK TIPPS UND TRICKS PTV VISWALK TIPPS UND TRICKS: VERWENDUNG DICHTEBASIERTER TEILROUTEN

Professionelle Seminare im Bereich MS-Office

Die Übereckperspektive mit zwei Fluchtpunkten

Wie löst man Mathematikaufgaben?

Lineare Gleichungssysteme

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Datensicherung. Beschreibung der Datensicherung

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Lernwerkstatt für die Klassen 7 bis 9: Linsen und optische Geräte

computer graphics & visualization

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock

5. Bildauflösung ICT-Komp 10

Informationsblatt Induktionsbeweis

1 topologisches Sortieren

Bilder Schärfen und Rauschen entfernen

ACDSee 2009 Tutorials: Rote-Augen-Korrektur

Zeichen bei Zahlen entschlüsseln

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Fotos in Tobii Communicator verwenden

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Gimp Kurzanleitung. Offizielle Gimp Seite:

Eine Logikschaltung zur Addition zweier Zahlen

Farbtypen. Bedeutung von Farben 1. Drucken. Arbeiten mit Farben. Papierhandhabung. Wartung. Problemlösung. Verwaltung. Index

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Zwischenablage (Bilder, Texte,...)

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Wie Sie mit Mastern arbeiten

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

1. Arbeiten mit dem Touchscreen

Auflösung und Farbmodus von Zertifikaten, Bewerbungsfoto und Signaturen

Speicher in der Cloud

Falten regelmäßiger Vielecke

Repetitionsaufgaben: Lineare Funktionen

Scheper Ziekenhuis Emmen. Tel.: + 31 (0) Fax: + 31 (0) Web:

Gruppenrichtlinien und Softwareverteilung

(1) Problemstellung. (2) Kalman Filter

Bilder zum Upload verkleinern

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Was ist Sozial-Raum-Orientierung?

Kreatives Occhi. - V o r s p a n n - Alle Knoten und Knüpfelemente sowie ihre Verwendbarkeit. Die Knoten

Projektmanagement in der Spieleentwicklung

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Belichtung mit Tonwertkorrektur verbessern

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem

Eigenen Farbverlauf erstellen

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Bilderzeugung Pixel. Daniela Glatz Jasmin Rießle. Sommersemester 2012

Paper Computer Science Experiment. Computation (NP-Vollständigkeit) Steinerbäume

Mobile Intranet in Unternehmen

SANDBOXIE konfigurieren

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

WORKSHOP für das Programm XnView

Der Einsatz von HDRIs in LightWave 7

! " # $ " % & Nicki Wruck worldwidewruck

Guide DynDNS und Portforwarding

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x y = x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

YouTube: Video-Untertitel übersetzen

Der Leverage-Effekt wirkt sich unter verschiedenen Umständen auf die Eigenkapitalrendite aus.

Wie funktioniert ein Mieterhöhungsverlangen?

Pädagogik. Melanie Schewtschenko. Eingewöhnung und Übergang in die Kinderkrippe. Warum ist die Beteiligung der Eltern so wichtig?

Einfärbbare Textur erstellen in GIMP (benutzte Version: 2.6.7)

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Simulation LIF5000. Abbildung 1

Konzepte der Informatik

Programme im Griff Was bringt Ihnen dieses Kapitel?

Vibono Coaching Brief -No. 39

Berechnungen in Access Teil I

Papa - was ist American Dream?

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Einfügen von Bildern innerhalb eines Beitrages

Fotos verkleinern mit Paint

Modellbildungssysteme: Pädagogische und didaktische Ziele

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Transkript:

Christina Nell 3D-Computergrafik Seminararbeit im Hauptseminar Grafikprogrammierung Universität Ulm Sommersemester 2008 1

Inhalt 1 Einleitung 3 2 Beleuchtung 2.1 Grundlagen 2.2 Beleuchtung 2.3 Shading 2.3.1 Flat Shading 2.3.2 Gouraud Shading 2.3.3 Phong Shading 3 3 4 5 5 5 6 3 Texturierung 3.1 Texture Mapping 3.2 Bump Mapping 3.3 Normal Mapping 3.4 Displacement Mapping 3.5 Parallax Mapping 7 7 8 9 9 10 4 Texturfilterung 4.1 Mipmaps 4.2 Nearest-Neighbor-Interpolation 4.3 Bilineares Filtern 4.4 Trilineares Filtern 4.5 Anisotropes Filtern 10 11 11 12 12 13 5 Zusammenfassung und Ausblick 14 Literatur 15 2

1 Einleitung Die Geschichte der Computergrafik ist länger, als man denkt. So wurde zum Beispiel die Special Interest Group on Graphics (SIGGRAPH) der Association for Computing Machinery (ACM) offiziell bereits 1969 gegründet der Gründung ging eine sechsjährige Existenz als Special Interest Committee voraus [4]. Allerdings geht die Geschichte der 3D-Computergrafik nicht so weit zurück, denn auch wenn es bereits Anfang der 1970er Jahre einige Durchbrüche zu vermelden gab, so stand damals noch nicht die entsprechende Hardware zur Verfügung, um die zugehörigen Berechnungen in Echtzeit durchführen zu können. Viele der heute verwendeten Algorithmen zur Beleuchtung oder Texturierung, wie u.a. Gouraud Shading oder Bump Mapping, stammen noch aus dieser Zeit und finden sich als weit verbreitete Methoden in modernen Grafikkarten wieder. Diese Ausarbeitung befasst sich lediglich mit einem relativ kleinen Teil der Grafikpipeline. Die Grafikpipeline ist eine Modellvorstellung der Computergrafik, die den Vorgang beschreibt, in dessen Verlauf aus einer dreidimensionalen Szene nach und nach ein zweidimensionales Ausgabebild wird [19]. In diesem Verlauf werden auch die für das letztendliche Erscheinungsbild der Szene nötigen Berechnungen zur Beleuchtung, dem Shading, der Texturierung und der Texturfilterung durchgeführt, die Thema dieser Ausarbeitung sein sollen. 2 Beleuchtung 2.1 Grundlagen Um zu verstehen, wie die Beleuchtung einer Szene funktioniert, muss man zuerst die nötigen geometrischen Grundlagen schaffen. Hierzu gehören die Definitionen des Vertex, des Polygons und des Normalenvektors. Als Vertex bezeichnet man einen Punkt im dreidimensionalen Raum, der über je eine x-, y- und zkoordinate verfügt. Zusätzlich können für jeden Vertex Eigenschaften wie z.b. Farbwert oder auch Transparenz definiert werden. Werden mindestens drei Vertizes miteinander verbunden, so spricht man von einem Polygon bzw. von einem Dreieck, wenn es genau drei Vertizes sind. Diese Ausarbeitung geht davon aus, dass die Objekte in Form von Dreiecken vorliegen, da ein aus mehr als drei Vertizes bestehendes Polygon mittels verschiedener Algorithmen leicht in Dreiecke zerlegt werden kann. Als Normalenvektor bezeichnet man einen in der Computergrafik meist dreidimensionalen Vektor, der senkrecht zu einer gegebenen Oberfläche, also z.b. einem Polygon, steht. Damit gibt der Normalenvektor gewissermaßen die Ausrichtung der Oberfläche an, was in der Computergrafik von großer Bedeutung ist, wie später noch dargelegt werden soll. Die eigentliche Beleuchtung beruht auf einfachen physikalischen Modellen. Diese Modelle stellen deswegen eine Vereinfachung der Realität dar, weil diese als Ganzes sehr komplex ist. Man denke nur an den sogenannten Welle-Teilchen-Dualismus, der das Phänomen bezeichnet, dass Licht sowohl ein Teilchen als auch eine Welle sein kann [24]. Da es viel zu aufwändig und für den Zweck auch schlicht und ergreifend unnötig wäre, diesen Dualismus in der Computergrafik nachzubilden, vereinfacht man an dieser Stelle und zieht für die Berechnung der Beleuchtung oft nur die Teilcheneigenschaft des Lichts in Betracht. Ein weiteres Beispiel für diese Vereinfachung der physikalischen Realität ist der Verzicht auf Radiosity. Als Radiosity bezeichnet man das Rückleuchten von Objekten, d.h. dass Oberflächen von Objekten Licht nicht nur in die Szene hinein, sondern auch zu anderen Objekten hin reflektieren können (vgl. [23]). Wenn man dies konsequent verfolgt, so können sich die Objekte 3

innerhalb einer Szene quasi gegenseitig beleuchten. Die Abbildungen 1.1 und 1.2 sollen verdeutlichen, wie sehr Radiosity helfen kann, eine Szene realistischer erscheinen zu lassen: In Abb. 1.1 wurde lediglich direkte Beleuchtung verwendet, d.h. die Beleuchtung erfolgt nur durch das Licht selbst. Abb. 1.2 hingegen wurde mit Hilfe von Radiosity berechnet. Die Helligkeit stammt hier nicht nur vom Licht selbst, sondern auch von anderen Objekten in der Szene. So lässt sich z.b. an der weißen Säule das Abb. 1.1: ohne Radiosity Rückleuchten des roten Teppichs beobachten. Lange Zeit wurde die Berechnung von Radiosity als zu aufwändig angesehen, um in Echtzeit berechnet werden zu können, doch 2004 stellten Greg Coombe et al. eine Technik vor, die für eine Szene mit 10.000 Elementen weniger als eine Sekunde Rechenzeit benötigte [6]. Man kann sich also vorstellen, dass mit fortschreitender Entwicklung der Grafikkarten bei der Verwendung dieses Algorithmus die Anzahl der Elemente steigen und die zur Berechnung benötigte Zeit sinken wird. Abb. 1.2: mit Radiosity 2.2 Beleuchtung Grundsätzlich geht es bei der Berechnung der Beleuchtung darum festzustellen, wieviel Licht sich in der Szene befindet. In Analogie zur physikalischen Realität werden auch in der Computergrafik Lichtquellen als die Stellen im Raum definiert, die das Licht in die Szene einbringen. Diese sogenannten geometrischen Lichtquellen [15] existieren in dieser Form zwar nicht in der wirklichen Welt, stellen aber eine Annäherung dar, die für Echtzeitgrafik ausreichend ist. Hierbei lassen sich Lichtquellen grob in lokale und globale Lichtquellen unterteilen, die sich wie die Bezeichnung schon impliziert darin unterscheiden, auf welchen Teil der Szene sie wirken. Globale Lichtquellen befinden sich in unendlich großer Entfernung zur Szene und sind wenn man Verdeckung vernachlässigt in der Lage, die gesamte Szene zu beleuchten. Zu dieser Art von Lichtquellen zählen Lichtquellen, die gerichtetes Licht abstrahlen. Diese Lichtstrahlen sind parallel zueinander und haben alle die gleiche Richtung. Das beste Beispiel für eine solche Lichtquelle ist die Sonne. Lokale Lichtquellen befinden sich hingegen an einer eindeutigen Position innerhalb der Szene und wirken nur auf einen bestimmten Teil derselben. Hier gibt es insbesondere zwei Arten, Punktlichtquellen und Spotlights. Punktlichtquellen strahlen von ihrer Position aus Licht in alle Richtungen ab, wie z.b. eine Glühbirne in einem Zimmer. Im Gegensatz dazu strahlen Spotlights Licht nur in eine Richtung ab, und zwar in Form eines Lichtkegels, wie man ihn z.b. von einem Scheinwerferspot auf einer Konzertbühne her kennt. Bis zum Jahr 1999 wurden die Berechnungen zur Beleuchtung, also wieviel Licht von welcher Lichtquelle in der Szene bei den jeweiligen Objekten ankommt, auf der CPU ausgeführt. So mussten oft Kompromisse zu Lasten der Bildqualität eingegangen werden, da die Kapazität der CPU auch durch Systemdienste oder andere zur Anwendung gehörende Berechnungen belastet wird. 1999 stellte nvidia mit der GeForce 256 die erste Grafikkarte vor, die diese Berechnungen mithilfe integrierter Engines für Transformation und Beleuchtung auf der Graphics Processing Unit (GPU), also in Hardware, durchführte [1, 9]. Dieser Vorgang trägt den Namen Transform and Lighting. Diese Engines sind darauf spezialisiert, genau die mathematischen Funktionen zu berechnen, die für die Transformation bzw. Beleuchtung von Dreiecken nötig sind, und sind daher in der Lage, in der gleichen Zeit mehr Dreiecke und Lichtquellen zu bearbeiten als die CPU. Diese wird zudem durch das das Ausführen dieser Berechnungen auf der GPU entlastet, so dass mehr Kapazität der CPU für andere Aufgaben, wie z.b. Berechnungen zur künstlichen Intelligenz, zur Verfügung steht. 4

2.3 Shading Beleuchtung und Shading sind eng miteinander verwandt, dennoch werden die entsprechenden Berechnungen an unterschiedlichen Stellen in der Grafikpipeline durchgeführt. Ein Zitat von David Kirk, Mitglied der Forschungsabteilung bei nvidia, lässt den Unterschied vielleicht klarer erscheinen: Beleuchtung ist der Helligkeitswert, wohingegen es beim Shading um Reflektion und/ oder Lichtdurchlässigkeit geht. ([15], Übersetzung d. Verf.) Während die Beleuchtung sich damit beschäftigt, woher das Licht kommt und mit welcher Intensität es auf die Oberfläche trifft, geht es im Shading-Schritt darum, was passiert wenn das Licht auf die Oberfläche getroffen ist, wie das Material auf das Licht reagiert, wieviel Licht reflektiert wird und somit sichtbar ist. Da beim Shading unmittelbar mit dem Licht gerechnet wird ist es nur logisch, dass Shading erst nach der Beleuchtung passiert. Das Ausgabemedium ist dabei in der Höhe in sogenannte Scanlines aufgeteilt, wobei jede Scanline einem Pixel entspricht. Diese Scanlines werden der Reihe nach von oben nach unten durchlaufen. Der Rasterizer erhält pro Scanline die beiden Endpunkte eines Dreiecks und berechnet für diese beiden Punkte jeweils die Farbwerte. Die Farbwerte der Pixel zwischen diesen Endpunkten werden dann mithilfe verschiedener Algorithmen interpoliert. Die drei bekanntesten sollen im Folgenden vorgestellt werden. 2.3.1 Flat Shading Beim Flat Shading handelt es sich um die einfachste Shading-Methode. Der Algorithmus arbeitet auf den Dreiecken, wobei für jedes Dreieck nur eine einzige Farbe verwendet wird aufwändige Interpolationen finden hier also nicht statt. Als Farbe wird entweder der Mittelwert der Farben der drei Vertizes des jeweiligen Dreiecks gewählt oder wie im Fall von Direct3D es wird aus den Farben der drei Vertizes zufällig eine ausgewählt [15]. Diese Shading-Methode ist sehr einfach und leicht zu berechnen. Allerdings sehen derart geshadete Objekte sehr unrealistisch und blockartig aus; Glanzlichter werden nur dann dargestellt, wenn sie sich in der Fläche über das gesamte Dreieck hinweg erstrecken, d.h. wenn für jeden Vertex eine dem Glanzlicht entsprechende Farbe definiert ist. Aus dieser Einschränkung muss man jedoch folgern, dass Flat Shading Glanzlichter nicht zuverlässig reproduzieren kann. Dazu kommen noch die Auswirkungen des Mach-Band-Effektes, die beim Flat Shading besonders deutlich zu beobachten sind. Der Mach-Band-Effekt bezeichnet ein Phänomen der menschlichen Wahrnehmung [20]. Dieses Phänomen liegt in der Eigenschaft des menschlichen Auges begründet, Kanten besonders stark wahrzunehmen, und lässt sich vor allem bei benachbarten Farbflächen unterschiedlicher Farbe bzw. unterschiedlichen Farbtons beobachten, zwischen denen es keinen Übergang gibt. Da diese Übergänge beim Flat Shading nicht vorhanden sind und somit der Mach-Band-Effekt auftritt, tritt die blockartige Struktur besonders in den Vordergrund. 2.3.2 Gouraud Shading Die Methode des Gouraud Shading, 1971 von Henri Gouraud vorgestellt [8], wird oft im Zusammenhang mit dem Term Per-Vertex-Beleuchtung verwendet, was wie oben dargelegt nicht hundertprozentig korrekt ist, da eigentlich zwischen Shading und Beleuchtung unterschieden werden muss. Vielmehr handelt es sich um eine Beschreibung der Grundlage, auf welcher dieser Algorithmus die Farbwerte berechnet: Beim Gouraud Shading werden die Farbwerte herangezogen, die in den einzelnen Vertizes gespeichert sind. Zusätzlich werden die Normalen in diesen Punkten benötigt, die entweder direkt aus der umgebenden Oberfläche bestimmt oder durch die Oberflächennormalen der umliegenden 5

Dreiecke approximiert werden können. Wie in Abb. 2 dargestellt werden die Farbwerte der Vertizes nun in Laufrichtung der Scanlines, d.h. von oben nach unten, entlang der Kanten interpoliert. Anschließend werden in jeder Scanline auch die Farbwerte innerhalb des Dreiecks, d.h. von links nach rechts, interpoliert [10]. Gouraud Shading kann den Mach-BandEffekt deutlich verringern, wenn auch Abb. 2.: Interpolation beim Gouraud Shading nicht ganz verhindern. Durch die Interpolationen zwischen den Dreiecken erscheinen die Übergänge weicher, was den Eindruck einer glatteren Oberfläche und somit von mehr Realitätsnähe erweckt. Auf der anderen Seite bezahlt man dieses Weichzeichnen bei einer niedrigen Zahl von Dreiecken mit dem Verlust besonders hoher oder niedriger Intensitäten diese starken Kontraste können durch die Interpolation so stark abgeschwächt werden, dass sie als solche nicht mehr zu erkennen sind. Falls Glanzlichter verwendet werden, die nicht auf einen Vertex fallen von wo aus sie zwar über die Dreiecksfläche interpoliert werden würden, aber immerhin noch sichtbar wären sondern auf eine Position im Inneren des Dreiecks, so gehen diese Glanzlichter verloren. Dieses Problem ist allein der Berechnung der Dreiecksfarbe über die Farbwerte der Vertizes zu schulden im Inneren des Dreiecks werden schlicht und ergreifend keine Farbwerte berechnet. Auch eine Aufteilung des Dreiecks in mehrere kleinere kann hier nicht unbedingt Abhilfe schaffen, da auch bei einer höheren Anzahl an Dreiecken das Glanzlicht auf mindestens einen Vertex fallen müsste, um berücksichtigt zu werden. Ganz abgesehen davon, dass eine derart künstlich erhöhte Zahl von Dreiecken aus Gründen der Berechnungsgeschwindigkeit unbedingt vermieden werden sollte. Dennoch ist das Gouraud Shading dem Flat Shading vorzuziehen, da es im Vergleich die höhere Bildqualität bietet und dabei vergleichsweise annehmbaren Rechenaufwand erfordert. 2.3.3 Phong Shading Die dem Phong Shading zugrundeliegenden Methoden wurden von Phong Bui Tuong entwickelt, der diese erstmals in seiner Doktorarbeit 1973 präsentierte [14]. Beim Phong Shading werden nun nicht die Intensitäten der einzelnen Vertizes, sondern die Oberflächennormalen der Dreiecke interpoliert. Analog zum Gouraud Shading wird auch für diese Shading-Technik ein nicht ganz korrekter Begriff, nämlich der der Per-Pixel-Beleuchtung, synonym verwendet. Die Farbwerte werden hier für jedes Pixel anstatt für jeden Vertex berechnet, daher der Name PerPixel-Beleuchtung. Auch das Phong Shading erfordert, dass für jeden der drei Vertizes des Dreiecks die Oberflächennormale an dem entsprechenden Vertex definiert ist. Diese Normalen werden dann analog zu den Farbwerten beim Gouraud Shading entlang der Dreieckskanten von oben nach unten, also wieder in Laufrichtung der Scanlines, interpoliert, so dass für jeden Punkt auf diesen Kanten eine Oberflächennormale definiert ist. Anhand dieser Normalen wird anschließend unter Zuhilfenahme des Phong-Beleuchtungsmodells (oder eines beliebigen anderen Beleuchtungsmodells) der Farbwert des Pixels für jeden Farbkanal (Rot, Grün, Blau) einzeln bestimmt [8]. Phong Shading stellt eine Verbesserung des Gouraud Shading dar, allerdings ist mit dieser Verbesserung der Bildqualität auch ein wesentlich höheres Maß an Rechenaufwand verbunden, da die zu berechnende Gleichung um Reflektionsmodell eine Summe über die Anzahl der Lichtquellen ist und im Standardfall eines Farbbildes für jeden Farbkanal einzeln berechnet werden muss. Auch wenn Per-Pixel-Beleuchtung von den Grafikkartenherstellern sicherlich nicht ganz zu unrecht als der neue große Quantensprung in der 3D-Computergrafik gefeiert wird, so ist die Anzahl der Lichtquellen noch durch die zur Verfügung gestellte Hardware begrenzt. 6

Abb. 3 zeigt die drei Shadingmethoden im direkten Vergleich: Beim Flat Shading (links) wird das Glanzlicht nicht dargestellt, zudem bewirkt der Mach-Band-Effekt eine überdeutliche Wahrnehmung der Blockstruktur. Zwar kann das Glanzlicht durch das Gouraud Shading (Mitte) dargestellt werden, allerdings nur sehr verschwommen. Einzig das Phong Shading (rechts) kann das Glanzlicht richtig darstellen. Abb. 3: Shadingmethoden im Vergleich Flat Shading Gouraud Shading 3 Phong Shading Texturierung Die meisten Gegenstände, denen man im täglichen Leben begegnet, besitzen auf die eine oder andere Art ein Muster aus Farbe und/ oder eine Oberflächenstruktur, sei es eine tapezierte Wand, ein Stück Holz oder auch eine Backsteinmauer. Selbst mit der heutigen Hardware ist es illusorisch, eine Oberfläche in all ihren Details durch die Modellierung mit Polygonen oder Dreiecken darstellen zu wollen. Um dieses Problem zu umgehen wurden verschiedene Methoden entwickelt, um einer Oberfläche Struktur bzw. Muster und damit mehr Realitätsnähe zu verleihen. Viele dieser Methoden sind in Hinblick auf die benötigte Rechenzeit sehr günstig, was vor allem früher wegen der bereits angesprochenen nicht sehr leistungsstarken Hardware von großer Bedeutung war. Die wichtigsten dieser Methoden sollen nun im Folgenden vorgestellt werden. 3.1 Texture Mapping Texture Mapping wird dazu benutzt, um einer Oberfläche ein farbiges Muster, eine sogenannte Textur, zu verleihen. Eine Textur ist definiert als ein gewöhnliches zweidimensionales Bild, das meistens im Bildformat Bitmap abgelegt wird. Dieses Bild wird auch als Texture Map bezeichnet. Die einzelnen Pixel innerhalb dieser Textur werden Texel (kurz für Texture Pixel) genannt. Der Term Texture Mapping bezeichnet das Abbilden einer Textur auf ein Objekt. Dies kann im Wesentlichen auf zwei verschiedene Arten geschehen: Zweidimensional oder dreidimensional [25]. Zweidimensionales Texture Mapping bedeutet, dass die Textur auf eine Art und Weise auf das Objekt aufgebracht wird, die analog zum Bekleben des Objektes mit einem Aufkleber, gemustertem Papier oder ähnlichem ist. Hierbei hat man es mit zwei verschiedenen Koordinatensystemen zu tun: Dem zweidimensionalen Textur- und dem dreiminensionalen Objektkoordinatensystem. Bei der Abbildung der Textur auf das Objekt muss deswegen eine Umrechnung vorgenommen werden. Falls dies durch Projektion geschieht, spricht man von non-parametrischem Texture Mapping. Bei planarer Projektion wird eine der (x,y,z)-koordinaten des Objekts projeziert und die verbleibenden zwei Koordinaten werden dazu benutzt, die Farbe aus der mit (u,v) parametrisierten Texture Map zu berechnen. Es wären auch andere Formen der Projektion denkbar, wie z.b. zylindrische oder spärische Projektion, bei denen jeweils noch eine Umrechnung in die entsprechenden Koordinaten nötig wäre. Im Gegensatz 7

dazu steht das parametrische Texture Mapping, bei dem die Textur am Objekt verankert ist und die entsprechenden Farbinformationen mit Hilfe baryzentrischer Koordinaten berechnet werden. Abb. 4: Texture Mapping Parametrisches Texture Mapping Non-parametrisches Texture Mapping (hier: zylindrische Projektion) Um bei Objekten mit regelmäßigen, sich wiederholenden Mustern, wie z.b. einer Mauer, nicht eine große Texture Map für die gesamte Mauer speichern zu müssen, was potentiell negative Auswirkungen auf den Speicherverbrauch haben könnte, versucht man die Größe der Texture Map möglichst gering zu halten. Nun gibt es verschiedene Modi, die Texture Map an das wesentlich größere Objekt anzupassen: Wrap, Mirror, Clamp und Border [12]. Der Modus Wrap bedeutet lediglich eine Kachelung mit der entsprechenden Textur, wohingegen Mirror die Textur immer an der jeweiligen Kante spiegelt man erhält also eine viermal größere Textur mit dem Speicherbedarf der kleinen Textur. Clamp ist die Fortführung der Randfarben der kleinen Textur auf dem Objekt und Border ist z.b. ideal, um mittels Texture Mapping ein Etikett auf ein Objekt aufzubringen, da es lediglich die Textur abbildet und die umgebenden Pixel außer acht lässt. Dreidimensionales Texture Mapping lässt am ehesten mit der Fertigung eines Objektes aus einem Block des gewünschten Materials, z.b. Holz, vergleichen. Hierbei werden im Allgemeinen keine Farbinformationen in Form einer Textur gespeichert, stattdessen wird die Farbe des entsprechenden Pixels anhand der Koordinaten mit Hilfe einer gegebenen Prozedur berechnet. Deswegen werden diese Texturen auch als prozedurale Texturen bezeichnet. 3.2 Bump Mapping Die Technik des Bump Mapping ist grob gesagt eine Anwendung des Texture Mapping, wurde 1978 von James F. Blinn vorgestellt [3]. Hierbei geht es darum, vor der Berechnung der Beleuchtung die Reaktionseigenschaft der Oberfläche bezüglich des Lichteinfalls zu ändern. Realisiert wird diese Änderung durch die Verwendung einer sogenannten Heightmap, in der die Störung der Normalen, die einer Oberflächenstruktur zu schulden wäre, gespeichert ist. Für den Betrachter erscheinen die Punkte der Oberfläche dadurch leicht in der Höhe versetzt. Diese Heightmap wird als Graustufenbild im Speicher abgelegt, aus dem sich schon ablesen lässt, wie sich die Struktur gestaltet: Die Grauwerte zwischen 0 und 255 geben an, wie stark die Oberflächennormale verändert wird. Genau hier liegt allerdings auch das Problem des Bump Mapping: Da lediglich die Oberflächennormale verändert wird, bleibt die Geometrie unverändert und damit auch die Silhouette des betreffenden Objektes. Da es sich bei der Anwendung der Heightmap lediglich um eine Skalierung handelt, sind Änderungen nur in einem eingeschränkten Rahmen möglich. 8

Abb. 5: Bump Mapping Eine einfache Kugel ohne Bump Mapping Die Height Map, die auf die Kugel angewendet werden soll Die Kugel mit angewandter Bump Map 3.3 Normal Mapping Auch beim Normal Mapping kommt eine Heightmap zum Einsatz, die allerdings als Normal Map bezeichnet wird. Bei dieser Normal Map handelt es sich nicht mehr um ein Graustufen- sondern vielmehr um ein RGB-Bild, wobei jeder Farbkanal eine Koordinate der Normalen repräsentiert. Es existieren zwei verschiedene Varianten des Normal Mapping, deren Unterschied im jeweils verwendeten Koordinatensystem besteht, anhand desen die Normalen berechnet und gespeichert werden; dies kann im objekt- oder im tangentenbezogenen Koordinatensystem geschehen. Eine der interessantesten Anwendungen des Normal Mapping ist die Verwendung der Normal Map eines hoch aufgelösten Modells mit vielen Details in Zusammenhang mit einer deutlich niedriger aufgelösten Version desselben Modells [22]. Diese Technik erlaubt es, ein hohes Maß an Detailreichtum mit wesentlich geringerem Aufwand zu erreichen. Da Normal Mapping im Wesentlichen die gleiche Methodik anwendet wie Bump Mapping besteht auch der Nachteil dieser Technik in der Tatsache, dass lediglich die Reaktionseigenschaft auf Lichteinfall verändert wird und nicht die Geometrie selbst. Abb. 6: Normal Mapping Ursprüngliche, hochaufgelöste Version des Modells Niedriger aufgelöste Version des Modells Niedriger aufgelöste Version mit angewandter Normal Map der höher aufgelösten Version 3.4 Displacement Mapping Displacement Mapping wurde 1984 von Robert L. Cook vorgestellt, der die Technik als eine Erweiterung von Bump Maps bezeichnete [5]. Tatsächlich löst Displacement Mapping das 9

Problem, das bei Bump Mapping und Normal Mapping auftritt, nämlich die fehlende Übereinstimmung zwischen Oberflächenstruktur und Silhouette. Die Angleichung der Silhouette an die Oberflächenstruktur kann jedoch nur dadurch erfolgen, dass Änderungen an der Geometrie vorgenommen werden. Diesen Ansatz wählt das Displacement Mapping: Anstatt die Oberflächennormalen zu verändern oder zu ersetzen sind es hier die Punkte der Oberfläche, die ersetzt werden, was oftmals entlang der Oberflächennormalen geschieht. Dadurch sind hier auch solche Phänomene wie Verdeckung, Selbstverdeckung, Silhouetten und Selbstschattierung möglich. Bei Displacement Mapping handelt es sich um die in Bezug auf Rechenzeit teuerste MappingTechnik, da viel zusätzliche Geometrie berechnet werden muss. Abb. 7: Displacement Mapping Ursprüngliches Objekt Displacement Map Objekt mit angewandter Displacement Map 3.5 Parallax Mapping Parallax Mapping, auch Virtual Displacement Mapping genannt, wurde erst 2001 vorgestellt [11], und ist damit im Vergleich noch eine sehr junge Technik. Der Name leitet sich aus dem englischen Term motion parallax ab, der die scheinbare Änderung der Position eines Objektes bezeichnet, wenn der Beobachter seine Position verschiebt. Aktuelle Hardware kann die notwendigen Berechnungen sogar in Echtzeit ausführen. Der angesprochene motion parallax -Effekt wird dabei durch Texture Mapping einer dynamisch verzerrten Struktur realisiert, die verzerrt wurde um der anzupassenden Form zu entsprechen. Wichtig ist hierbei, dass nicht die ursprüngliche Textur verzerrt wird, stattdessen werden während des Texture Mapping-Prozesses Abb. 8: Parallax Mapping die Texturkoordinaten der Pixel verschoben. Dafür wird zusätzlich zur Texture Map eine Depth Map benötigt, die Informationen zur Tiefe der Struktur enthält. Abb. 8 veranschaulicht den Vorgang: Wenn ein beliebiger Punkt innerhalb eines Dreiecks gerendert werden soll, wird die Tiefeninformation aus der Depth Map gelesen und dazu benutzt, den Vektor, der die Blickrichtung angibt, zu skalieren. So erhält man einen neuen Punkt, dessen Koordinaten dazu verwendet werden, die Farbe aus der Texture Map zu berechnen [16]. Texturierte Objekte wie z.b. Steinmauern erhalten so scheinbar mehr Tiefe und wirken somit realistischer (vgl. Abb. 9). 4 Texturfilterung Um die Motivation für Texturfilterung erklären zu können, muss man sich zunächst klar Abb. 9: ohne Parallax Mapping (links) und mit Parallax Mapping (rechts) 10

machen, was im Texture Mapping-Schritt vor sich gegangen ist: Eine Textur wurde auf ein Objekt abgebildet. Womöglich wurden hierbei weniger Texel benötigt als eigentlich zur Verfügung stehen. Man spricht dann von Undersampling. Falls es sich um eine einfarbige oder zumindest sehr gleichförmige Textur gehandelt haben sollte, sind die Auswirkungen unter Umständen nicht wahrzunehmen, doch wenn eine sehr detail- und kontrastreiche, hochaufgelöste Textur verwendet wurde, so fehlen Farbinformationen aus der Textur, was zu unerwünschten Nebeneffekten oder Artefakten führen kann. Dieses Problem bezeichnet man als Aliasing. (vgl. Abb. 10: Die Vergrößerung zeigt, dass die feinen roten Linien nicht durchgehend erhalten geblieben sind.) Generell gibt es zwei Ansätze, um Aliasing zu verhindern: Supersamling und Prefiltering [25]. Supersamling bedeutet im Wortsinn das Abtasten des Punktes mit höherer Auflösung. So könnten z.b. die vier Eckpunkte des Pixels auf die Textur abgebildet werden, so dass die endgültige Farbe der Mittelwert aus diesen vier Werten ist. Dies muss nicht per se zu besseren Ergebnissen führen, auch wenn stochastische Abtastfunktionen in der Regel gute Ergebnisse liefern. Die Methode des Prefiltering geht etwas anders vor: Abb. 10: Aliasing als Konsequenz von Underanstatt der Eckpunkte wird die Fläche des Pixels in die sampling Textur abgebildet. Bei der Berechnung der endgültigen Farbe für das Pixel werden nun die Flächenanteile der einzelnen Texel berücksichtigt, sodass das Ergebnis eine gewichtete Durchschnittsfarbe ist. 4.1 Mipmaps Eine weit verbreitete Anwendung des Prefiltering sind die sogenannten Mipmaps. Bei Mipmaps handelt es sich um vorberechnete, kleinere Versionen der ursprünglichen Textur, deren Auflösung in x- und y-richtung immer halb so groß ist wie die der vorhergehenden Mipmapstufe [21]. Aus diesem Grund sollten Texturen möglichst quadratisch sein, mit einer Seitenlänge, die eine Potenz von zwei ist. So entsteht nach und nach eine Texturpyramide. Diese Verkleinerung kann weitergehen, bis eine Größe von 1x1 Pixeln erreicht ist; diese letztmögliche Mipmapstufe enthält dann die Durchschnittsfarbe der gesamten Textur. Zusätzlich erspart diese Vorberechnung von Texturen eine dynamische Skalierung und hilft somit, Zugriffs- und Rechenzeit zu verringern. Im Folgenden werden einige Verfahren vorgestellt, die teilweise basierend auf Mipmapping versuchen, möglichst viele Details einer Textur zu erhalten und gleichzeitig Aliasing entgegenzuwirken. 4.2 Nearest-Neighbor-Interpolation Diese Interpolationsmethode, auch Point Sampling genannt, stellt die einfachste, aber auch die schlechteste Methode für Texturfilterung dar [13]. Nach der Abbildung des Pixels in die Textur wird überprüft, zu welchem Texel der Abstand des Mittelpunkts des Pixels am geringsten ist. Die unter Umständen nötigen Skalierungen nimmt die Abbildungsfunktion vor. Die Farbe des ausgewählten Texels wird dann als Farbe des Pixels verwendet. Es ist auch möglich, diese Methode der Texturfilterung mit Mipmapping zu verbinden. Dabei wird zuerst die näheste Mipmapstufe gesucht und davon ausgehend dann das entsprechende Texel ausgewählt. Beide Methoden leiden allerdings unter dem einfachen Ansatz, der hier gewählt wird die 11

Konsequenzen sind Artefakte, wie sie aus der Bildbearbeitung bekannt sind: Eine gewisse Blockstruktur im Fall einer Vergrößerung, wohingegen diese Methode im Fall einer Verkleinerung schnell zu Aliasing führt, was zur Konsequenz hat, dass Muster innerhalb der Textur auf dem Bildschirm nicht mehr zu erkennen sind. Die Verwendung von Mipmapping verringert das Aliasing zwar recht deutlich, doch die deutlich Abb. 11: Nearest-Neighbor-Interpolation (links) und Nearestsichtbaren Blöcke im Fall einer Neighbor-Interpolation mit Mipmapping Vergrößerung bleiben. 4.3 Bilineares Filtern Bilineares Filtern ist gegenüber der Nearest-Neighbor-Interpolation ein deutlicher Fortschritt, was die Qualität des Ergebnisses angeht. Hierbei wird quasi standardmäßig Mipmapping verwendet. Beim bilinearen Filtern wird auf die Mipmapstufe zugegriffen, die von der Größe her der Größe des Objekts am nächsten kommt. Innerhalb dieser Textur wird dann über die vier angrenzenden Texel gemittelt, was im Vergleich zur Nearest-Neighbor-Interpolation eine wesentlich bessere Annäherung darstellt [2]. Der Nachteil ist dass das Ergebnis oft verschwommen wirkt. Falls die Oberfläche sich nahe beim Betrachter befindet, so kann dieser die Unschärfe deutlich wahrnehmen, die daher rührt, dass auch bei der niedrigsten Mipmapstufe über die angrenzenden Pixel gemittelt wird. Weiter hinten liegende Objekte verschwimmen noch stärker, da auch hier über die noch kleineren Mipmapstufen gemittelt wird. Zudem entstehen beim Wechsel zwischen den Mipmapstufen deutlich sichtbare, vertikale Linien, die sich immer im gleichen Abstand zum Abb. 12: Bilineares Filtern Betrachter befinden, sich also nicht mit Die roten Pfeile zeigen die Stellen an, an denen MIP banding auftritt der Szene mitbewegen, was sehr unrealistisch wirkt. Dies wird auch als MIP banding bezeichnet. 4.4 Trilineares Filtern Das Problem des MIP banding beseitigt trilineares Filtern, eine Erweiterung bzw. Verbesserung des bilinearen Filterns. Der wesentliche Unterschied besteht darin, dass bei trilinearem Filtern auch zwischen zwei aufeinanderfolgenden Mipmapstufen interpoliert wird. Innerhalb einer Mipmapstufe wird bilineares Filtern verwendet, für die Interpolation zwischen den Mipmap-stufen werden natürlich die zwei Mipmapstufen gewählt, die der geforderten Detailauflösung am nähesten kommen [2]. 12

Für den Fall, dass die Größe eines Pixels genau der Größe eines Texels entspricht, ergibt sich durch trilineares Filtern kein Vorteil gegenüber bilinearem Filtern vielmehr liefert trilineares Filtern hier das gleiche Ergebnis bei höherem Aufwand. Trilineares Filtern unterliegt desweiteren den gleichen Einschränkungen wie bilineares Filtern, dass es nämlich nicht angewendet werden kann, falls die Fläche des Pixels größer als die Fläche eines Texels in der Originaltextur ist. Diese Beschränkung kommt durch die Verwendung von Mipmapping, denn Mipmaps sind nur bis maximal zur Abb. 13: Trilineares Filtern Größe der Originaltextur definiert. 4.5 Anisotropes Filtern Sowohl bilineares als auch trilineares Filtern erwarten, dass die abzutastente Pixelfläche quadratisch ist. Diese Beschränkung führt zu Problemen bei Texturen, die in steilem Winkel zur Kamera stehen. Unter anderem können hierbei Details verloren gehen. Anisotropes Filtern wurde entwickelt, um dieses Problem zu beheben. Anisotropie bezeichnet ganz allgemein die Richtungsabhängigkeit einer Eigenschaft [18]. Im Zusammenhang mit Filterung bedeutet das, dass es sich um ein richtungsabhängiges Abtastmuster handelt ein Abtastmuster also, das entlang unterschiedlicher Achsen unterschiedliche Werte annimmt. Beim anisotropen Filtern ist das Abtastmuster nicht quadratisch, sondern normalerweise rechteckig, manchmal auch in der Form eines Parallelogramms oder eines Trapezes. Die Güte eines anisotropen Abtastmusters bemisst sich danach, wieviele Pixel in die Berechnung miteinbezogen werden je stärker die Textur zur Kamera geneigt ist, desto mehr Texel müssen gelesen werden, um den Schärfeeffekt gleichbleibend zu erhalten [2]. Oft wird anisotropes Filtern von den Grafikkarten durch Ripmapping realisiert [17]. Ripmaps funktionieren ähnlich wie Mipmaps, allerdings wird die Auflösung hier nicht in x- und yrichtung gleich stark reduziert (was Abb. 14: Anisotropes Filtern wieder isotropes Verhalten wäre), sondern stattdessen in x- und y-richtung unterschiedlich stark. Aus einer 128x128 großen Textur würden also Texturen der Größen 128x64, 128x32 oder auch 16x128 vorberechnet werden, auf die dann entsprechend zugegriffen werden kann. Besonders gut sind die Ergebnisse bei schräg zur Kamera verlaufenden Flächen, wie z.b. gekachelten Wänden oder Straßen mit Kopfsteinpflaster. 13

5 Zusammenfassung und Ausblick Erst wenn man bedenkt, dass viele der hier vorgestellten Algorithmen bis vor wenigen Jahren noch innerhalb der Anwendung implementiert wurden, und welche Fortschritte die 3D-Computergrafik gemacht hat, seit Beleuchtung und Texturierung auf der Grafikkarte berechnet werden können, wird man sich der Tatsache bewusst, wie stark die Entwicklung der Computergrafik mit der der Grafikkarten zusammenhängt. Mit das Spannendste an der Computergrafik ist die rasante Entwicklung, die vor allem die 3DComputergrafik seit ihren frühen Anfängen vollzogen hat. Heute sind Algorithmen und Methoden wie z.b. Phong Shading wenn auch noch unter gewissen Voraussetzungen in Echtzeit möglich, was früher niemand zu träumen gewagt hätte. Die Entwicklung der GPUs hat die der CPUs schon weit hinter sich gelassen. Genauso wie man sich in den 1970er Jahren nicht vorstellen konnte, dass eines Tages detailreiche, hochaufgelöste Grafik in Echtzeit möglich sein könnte, so ist für die 3DComputergrafik heute die letzte Grenze wohl nur noch die Realität. Es gibt noch viele Algorithmen, die Raum zur Optimierung lassen, aber wenn man die Entwicklung der Grafikkarten über die letzten zwanzig bis dreißig Jahre betrachtet, werden es in den nächsten Jahren mit Sicherheit immer weniger werden. Mit neuen, noch schnelleren Grafikkarten wird es immer mehr Möglichkeiten zur Realisierung geben und man darf gespannt sein, was in Zukunft auf uns zukommen wird. 14

Literatur [1] Hardware Transform and Lighting. nvidia Technical Brief, November 1999. [2] Grafik-Filter: Bilinear bis Anisotrop im Detail. Dezember 2001. http://alt.3dcenter.org/artikel/grafikfilter/ [3] Blinn, J. F. Simulation of Wrinkled Surfaces. Computer Graphics 12(3), August 1978, 286-292. [4] Brown, J., Cunningham, S. A History of ACM SIGGRAPH. Communications of the ACM 50(5), Mai 2007, 54-61. [5] Cook, R. L. Shade Trees. Computer Graphics 18(3), Juli 1984, 223-231. [6] Coombe, G., Harris, M. J., Lastra, A. Radiosity on Graphics Hardware. Proceedings of Graphics Interface 2004, Mai 2004. [7] Cross, J. Antialiasing and Anisotropic Filtering Explained. Mai 2007. http://www.extremetech.com/article2/0,1697,2136956,00.asp [8] Foley, J., van Dam, A., Feiner, S. und Hughes, J. Computer Graphics: Principles and Practice. 2nd ed. Addison-Wesley, 1995. [9] Huddy, R. Hardware Transform and Lighting. Beitrag zur Games Developer Convention 2000. [10] Ivanchev, M., Thörnquist, H. Software Rendering School, Part IV: Shading and Filling. Juni 2004. http://www.devmaster.net/articles/software-rendering/part4.php [11] Kaneko, T., Takahei, T., Inami, T., Kawakami, N., Yanagida, Y., Maeda, T. und Tachi, S. Detailed Shape Representation with Parallax Mapping. Proceedings of ICAT 2001, 205-208. [12] Keller, A. Grundlagen der Computergraphik. Vorlesungsskript, 2006. [13] Meko Ltd. Point Sampling. Eintrag im Displays Glossary. http://www.meko.co.uk/pointsamp.shtml [14] Phong, B. T. Illumination for Computer Generated Pictures. Communications of the ACM 18(6), Juni 1975, 311-317. [15] Salvator, D. ExtremeTech 3D Pipeline Tutorial. Juni 2001. http://www.extremetech.com/article2/0,1697,9722,00.asp [16] West, M. Parallax Mapped Bullet Holes. Januar 2007. http://cowboyprogramming.com/2007/01/05/parallax-mapped-bullet-holes/ [17] Wikipedia. Anisotropic Filtering. April 2008. http://en.wikipedia.org/wiki/anisotropic_filtering [18] Wikipedia. Anisotropy. Mai 2008. http://en.wikipedia.org/wiki/anisotropy 15

[19] Wikipedia. Grafikpipeline. Juni 2008. http://de.wikipedia.org/wiki/grafikpipeline [20] Wikipedia. Mach-Band-Effekt. Juni 2008. http://de.wikipedia.org/wiki/mach-band-effekt [21] Wikipedia. Mipmap. Juni 2008. http://en.wikipedia.org/wiki/mipmap [22] Wikipedia. Normal Mapping. Mai 2008. http://en.wikipedia.org/wiki/normal_mapping [23] Wikipedia. Radiosity (Computergrafik). Juni 2008. http://de.wikipedia.org/wiki/radiosity_%28computergrafik%29 [24] Wikipedia. Welle-Teilchen-Dualismus. Juni 2008. http://de.wikipedia.org/wiki/welle-teilchen-dualismus [25] Wolfe, R. Teaching Texture Mapping Visually. SIGGRAPH 1997 Education Slide Set. http://www.siggraph.org/education/materials/hypergraph/mapping/r_wolfe/r_wolfe_mapping_1.htm 16