Licht und Schatten - Institut für Visualisierung und Interaktive Systeme
Transcription
Licht und Schatten - Institut für Visualisierung und Interaktive Systeme
Seminar Algorithmen für Computerspiele“ ” Licht und Schatten Oleg Martin 30. Juli 2010 Institut für Visualisierung und Interaktive Systeme Universität Stuttgart Inhaltsverzeichnis 1 Einführung 1.1 Über Licht und Schatten . . . . . . . . . . . . . . . . . . 1.2 Geschichtliche Entwicklung in Computerspielen . . . . . 1.3 Beleuchtungsmodelle im Überblick . . . . . . . . . . . . 1.4 Schattenmodelle im Überblick . . . . . . . . . . . . . . . 1.5 Licht- und Schattengenerierung im Bildsyntheseprozess . . . . . . 2 2 3 5 7 8 2 Physikalische Erklärung von Licht 2.1 Was ist Licht? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Was ist geometrische Optik? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Lichtquellentypen in Computerspielen . . . . . . . . . . . . . . . . . . . . . . 11 11 11 13 3 Beleuchtungsmodelle 3.1 Lokale Beleuchtungsmodelle . . . . . . . . . . . . 3.1.1 Allgemeine Beschreibung lokaler Modelle 3.1.2 Lambert-Modell . . . . . . . . . . . . . . 3.1.3 Phong- und Blinn-Phong-Modell . . . . . 3.1.4 Schlick-Modell . . . . . . . . . . . . . . . 3.2 Interpolationsverfahren . . . . . . . . . . . . . . . 3.2.1 Vertex-Lighting . . . . . . . . . . . . . . . 3.2.2 Per-Pixel-Lighting . . . . . . . . . . . . . 3.3 Globale Beleuchtungsmodelle . . . . . . . . . . . 3.3.1 Allgemeine Beschreibung globaler Modelle 3.3.2 Ray Tracing . . . . . . . . . . . . . . . . . 3.3.3 Radiosity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 17 18 22 23 23 24 26 26 28 29 4 Schattenmodelle 4.1 Lokale Schattenmodelle . . 4.1.1 Projektive Schatten 4.1.2 Schattenvolumen . . 4.1.3 Shadow Maps . . . . 4.2 Globale Schattenmodelle . . 4.2.1 Ray Tracing . . . . . 4.2.2 Radiosity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 32 34 36 36 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Zusammenfassung 38 Literatur 38 1 Einführung 1.1 Über Licht und Schatten Wo viel Licht ist, ist auch viel Schatten. Diesen Satz hatte einst Johann Wolfgang von Goethe gesagt. In seiner Zweideutigkeit besagt dieser, dass es zu vielen guten Dingen ebenso viele schlechte gibt oder dass in der Tat immer ein Schatten existiert, wenn Licht auf ein Objekt fällt. Durch dieses betrachtungsabhängige Beispiel wird deutlich, dass Licht und Schatten seit je her eine große Rolle in der Kunst gespielt haben und immer noch spielen. Der gezielte Schattenwurf ist daher ein wichtiges Stilmittel der Kunst. Dieses Stilmittel wird häufig verwendet, um Atmosphäre, räumliche Wahrnehmung und intuitive Orientierung im Bild oder der Szene zu erzeugen. Erst der Schatten ermöglicht dem Betrachter Bildabstände und -entfernungen richtig wahrzunehmen und sogar Material und Aussehen von Objekten zu erahnen. Da sich Computerspiele seit den frühen 80er Jahren neben den bekannten Kunstformen wie Literatur, Musik und Film als die Kunstform des 21. Jahrhunderts etablieren, finden auch hier die Stilmittel Licht und Schatten eine massive Verwendung. Abbildung 1.1: Berufung des Matthäus - Michelangelo Merisi da Caravaggio [6]. 1.2 Geschichtliche Entwicklung in Computerspielen 3 Abbildung 1.2: Beleuchtetes Glas - Fotografie Abbildung 1.3: Splinter Cell - Conviction [18]. 1.2 Geschichtliche Entwicklung in Computerspielen Die Licht- und Schattendarstellung hat seit Entstehung der Computergrafik in den 50er Jahren des 20. Jahrhunderts einen fortlaufenden Entwicklungsprozess hinter sich. Seit die benötigte Hardware in den 1970er Jahren erschwinglich geworden war, konnten die ersten kommerziellen Computerspiele entwickelt werden. So spielen in den 1980er Jahren die Beleuchtung und der Schattenwurf aufgrund von leistungsschwacher Hardware eine sehr geringe bis gar keine Rolle in Computerspielen. Im unteren Bild sieht man dann deutlich, dass Beleuchtung und Schattenwurf zur Zeit der 2D Computerspiele scheinbar keinen Platz hatten. 4 Einführung Abbildung 1.4: Computerspiele in den 1980er Jahren [11], [2], [10], [8]. In den 1990er Jahren nimmt die Notwendigkeit von korrekter Beleuchtung und der daraus resultierenden Beschattung aufgrund steigendem Realismus in Computerspielen zu. Da die Spiele zunehmend in 3D entwickelt werden und es eine Atmosphäre zu schaffen gilt, werden Licht und Schatten immer wichtiger für den eigentlichen Designprozess eines Computerspiels. Abbildung 1.5: Computerspiele in den 1990er Jahren [13], [12], [19], [15]. 1.3 Beleuchtungsmodelle im Überblick 5 In den 2000er Jahren ist hardwareseitig der Leistungsbereich moderner Grafikkarten enorm gestiegen. Nun wurde es möglich auch komplizierte Effekte in Computerspielen in Echtzeit zu verwirklichen. So sind Licht und Schatten zentraler Bestandteil im Spieledesign geworden und werden massiv in jedem high-end Computerspiel zur Realismussteigerung eingesetzt. Abbildung 1.6: Computerspiele in den 2000er Jahren [17], [1], [4], [5]. 1.3 Beleuchtungsmodelle im Überblick Beleuchtungsmodelle lassen sich im Groben in zwei Klassen unterteilen. Einmal in die Klasse der lokalen Beleuchtungsmodelle, welche lokale Reflexionseigenschaften von Materialien beschreiben. Sowie in die Klasse der globalen Beleuchtungsmodelle, welche die globale Ausbreitung von Licht in einer Szene beschreiben. Es folgt ein zeitlich geordneter Überblick der am häufigsten eingesetzten Beleuchtungsmodelle. Damit wird es möglich die im weiteren Verlauf näher vorgestellten Beleuchtungsmodelle in den Entwicklungsprozess einzuordnen. • Lokale Beleuchtungsmodelle – Lambert-Modell (1760): Das Lambert Modell ist ein relativ einfaches Beleuchtungsmodell und stellt die Grundlage fast aller anderen lokalen Beleuchtungsmodelle dar. Es beschreibt im Groben Oberflächen, die auftreffendes Licht diffus, also in alle Richtungen gleich stark, reflektieren. – Phong- und Blinn-Phong-Modell (1975/77): Das Phong- und Blinn-Phong-Modell ist das bekannteste und auch heute noch 6 Einführung häufig verwendete Beleuchtungsmodell der Computergrafik. Es baut auf dem Lambert-Modell auf und beschreibt vorwiegend matt-glänzende Oberflächen, die Licht auch spekular, also punktuell, reflektieren. – Cook-Torrance-Modell (1982): Das Cook-Torrance-Modell ist das heute am häufigsten in high-end Computerspielen eingesetzte Beleuchtungmodell. Es basiert teilweise auf physikalisch korrekten Modellen und ist daher eine Mischung aus theoretischen und empirischen, an die Physik angenäherten, Beleuchtungsmodellen. Das Modell beschreibt Materialoberflächen grob durch viele winzige Facetten, welche das einfallende Licht jeweils anders reflektieren. So eignet es sich in der Praxis sehr gut zur Beschreibung von Metallen und Plastik mit verschiedener Rauheit. – He-Torrance-Modell (1991): Das He-Torrance-Modell ist eines der umfassendsten lokalen Beleuchtungsmodelle in der Computergrafik. So berücksichtigt es zum Beispiel Lichtstreuung unterhalb der Oberfläche, das sog. “subsurface scattering“. Folgendermaßen ist es sehr rechenintensiv und aufwendig zu berechnen. Es eignet sich gut für die Modellierung der verschiedensten Materialarten. – Schlick-Modell (1994): Das Schlick-Modell ist ein weiteres physikalisch motiviertes und effizientes Beleuchtungsmodell. Es baut auf dem Cook-Torrance-Modell auf und ist wie dieses ein Mittel zwischen empirischem und theoretischem Modell, welches die Möglichkeit bietet, Reflexionen möglichst physikalisch korrekt durch wenige Parameter zu beschreiben. • Globale Beleuchtungsmodelle – Ray Tracing (1968): Das Ray Tracing ist ein globales Beleuchtungsmodell zur Verdeckungs- und Lichtverteilungsberechnung in einer 3D-Szene. Durch Aussenden von Strahlen, die den Weg von Lichtstrahlen in einer Szene simulieren, wird eine physikalisch korrekte und real wirkende Beleuchtung der Szene erzeugt. Ray Tracing ist eines der wichtigsten globalen Beleuchtungsmodelle in der Computergrafik. – Path Tracing (1986): Das Path Tracing, als Erweiterung des ursprünglichen Ray Tracing Modells, löst die sogenannte Rendering Gleichung, welche mathematisch eine globale Beleuchtung beschreibt, annähernd durch Anwendung der Monte-Carlo-Simulation aus der mathematischen Statistik. Solche, den Zufall benützenden, Modelle heißen auch Monte-Carlo-Ray Tracing-Modelle. – Photon Mapping (1995): Das Photon Mapping ist eines der aktuellsten und heute oft in Software Rendering Systemen eingesetztes Verfahren zur Berechnung globaler Beleuchtung in 3DSzenen. Das Photon Mapping, als Erweiterung des Ray Tracing Modells, simuliert Licht durch Photonen und nicht durch Lichtstrahlen. Es zählt zu den ParticleTracing-Methoden. – Radiosity (1984): Das Radiosity Modell ist nach Ray Tracing eins der bekanntesten globalen Be- 1.4 Schattenmodelle im Überblick 7 leuchtungsmodelle. Das Modell löst die Rendering Gleichung unter Einhaltung des Energieerhaltungssatzes für Strahlung. Anders als beim Ray Tracing wird keine Lichtausbreitung durch Lichtstrahlen simuliert, sondern es wird angenommen, dass alle Oberflächen ideal diffuse Reflektoren und alle Lichtquellen ideal diffuse Strahler sind. Dadurch wird es möglich eine hochrealistische globale Beleuchtung zu erzeugen. 1.4 Schattenmodelle im Überblick Wie auch die Beleuchtungsmodelle lassen sich die Schattenmodelle in zwei Klassen unterteilen. Die erste Klasse besteht aus den lokalen Schattenmodellen, welche sich in der 3D-Szene auf isolierte Oberflächenpunkte beziehen. Die globalen Modelle der zweiten Klasse dagegen beziehen alle Oberflächenpunkte der Szene in die Schattenberechnung mit ein. Es folgt ein zeitlich geordneter Überblick der bekanntesten Beleuchtungsmodelle. Damit wird es möglich die im weiteren Verlauf näher vorgestellten Schattenmodelle in den Entwicklungsprozess einzuordnen. • Lokale Schattenmodelle – Projektive, bzw. Planare Schatten (1978): Projektive Schatten sind ein einfaches und effizientes Schattenmodell. Die Modellgrundlage ist die Transformation eines Objekts, das die Schattenquelle darstellt, zum eigentlichen Schatten. So erzeugt diese Transformation ein planes Objekt und projiziert dieses auf eine Ebene. – Schattenvolumen (1977): Die Schattenvolumen (engl. Shadow Volumes) sind eines der am häufigsten verwendeten Schattenmodelle in aktuellen Spielen. Das Prinzip ist relativ einfach und lässt sich effektiv implementieren. All diejenigen Bereiche liegen im Schatten, die sich im Schatten-Volumen der Schattenquelle befinden. Zur Ermittlung dieses Schattenvolumens werden im Groben die Silhoutten-Kanten der Schattenquelle zum Schattenvolumen extrudiert. – Shadow-Maps (1978): Die Shadow-Maps sind neben den Schattenvolumen ein weit verbreitetes Schattenmodell in aktuellen high-end Computerspielen. Es ist ein texturbasiertes Schattenmodell, das in einer separaten Textur, der sogenannten “Shadow Map“, alle Schatten-Informationen der 3D-Szene speichert. – Lightmaps: Lightmaps sind Texturen, welche statische Schatten speichern. Da hier die Schatten einer nicht dynamischen Szene vorberechnet werden und dann mit der Szene zusammengefügt werden, ist es aufwendig eine Echtzeit-Berechnung für real wirkende Szenen zu erreichen. Lightmaps wurden Mitte der 1990er Jahre sehr häufig in Computerspielen eingesetzt. • Globale Schattenmodelle – Ray Tracing (1968): Ray Tracing ist nicht nur eines der meistverwendeten globalen Beleuchtungsmodelle, sondern auch ein viel verbreitetes globales Schattenmodell. Da es die 8 Einführung Verdeckungs- und Lichtverteilungsberechnung in einer 3D-Szene durchführt, liegt es nahe, dass eine globale Schattenberechnung ebenfalls möglich ist. Da Lichtstrahlen nicht nur vom Betrachter, sondern von jedem beliebigen Punkt in der Szene, ausgesendet werden können, wird die Simulation von Schatten möglich. – Diffuses Raytracing (1984): Das Diffuse Raytracing ist eine Erweiterung des ursprünglilchen Ray Tracing Modells. Durch Aussenden von mehreren zufälligen Strahlen wird aus den Farben der jeweiligen Auftreffpunkte der Mittelwert gebildet. Dies führt zur möglichen Darstellung von weichen Schatten. – Radiosity (1984): Das Radiosity Schattenmodell simuliert Schatten durch die globale Wechselwirkung jeder, in der 3D-Szene vorhandenen, Oberfläche mit jeder anderen. Werden Oberflächen verdeckt, ergibt sich eine geringerer Austausch von Strahlung und es entsteht Schatten. Das Radiosity-Verfahren ist sehr rechenintensiv und eignet sich daher kaum für Echtzeitanwendungen. 1.5 Licht- und Schattengenerierung im Bildsyntheseprozess Wo wird die Beleuchtung und Schattengenerierung im Bildsyntheseprozess eingeordnet? Um diese Frage richtig beantworten zu können, müssen zuerst die Bildsynthese und dessen Realisierung auf der Grafikkarte, bzw. der CPU näher betrachtet werden. Die Bildsynthese (engl. Rendering) wird in zwei Bereiche unterteilt. Einmal dem Echtzeitrendering und dem photorealistischem Rendering. • Echtzeitrendering: Das Echtzeitrendering orientiert sich an der Grafikkartenhardware und damit direkt am Grafik-Pipeline-Ansatz von OpenGL. Die Grafikpipeline beschreibt hierbei den Weg von einer 3D-Szene bis zum fertigen Bild. Da unter diesem Ansatz keine komplexen mathematischen Beschreibungen von Beleuchtung und Schattenwurf effizient berechnet werden können, genügt das Echtzeitrendering dem Grundsatz, dass das Ergebnis stimmen muss. Dieser Grundsatz bedeutet nichts anderes als das traditionell kein Photorealismus möglich ist und dadurch Verfahren gebraucht werden, die die physikalischen Eigenschaften von Licht und Schatten simulieren ohne jedoch physikalisch korrekt zu sein. Die Beleuchtung an sich findet während der Geometrieverarbeitung und den ProFragment Operationen in der Grafikpipeline statt (siehe Abb. 1.7). Abbildung 1.7: Echtzeitrendering - Grafikpipeline. 1.5 Licht- und Schattengenerierung im Bildsyntheseprozess 9 Abbildung 1.8: Echtzeitrendering - Beispiel [5]. • Photorealistisches Rendering: Das photorealistische Rendering basiert auf der physikalischen Simulation von Geometrien, Animationen und Beleuchtung. Daher ist das Grafikpipeline-Modell einer GPU auf Modelle wie Ray Tracing und Radiosity nicht direkt anwendbar. Photorealistisches Echtzeitrendern auf der GPU, unter Anwendung der Grafikpipeline, ist nur mit “Tricks“ möglich, welche vorwiegend über Shaderprogrammierung realisiert werden. Folglich wird das realistische Rendering größtenteils auf der CPU von Software-Rendering-Systemen, wie z.B. Mental Ray, ausgeführt. Hierbei ist das große Ziel einen möglichst physikalisch korrekten Photorealismus zu erreichen. c Beispiel. Abbildung 1.9: Photorealistisches Rendering - Mental Ray 10 Einführung Wie man sieht haben beide Teilbereiche Vor- und Nachteile bezüglich ihrer Umsetzung auf der Grafikkarte oder der CPU. Zum einen lassen sich relativ realistische Licht- und Schatteneffekte hoch-parallelisiert auf moderner Grafikhardware in Echtzeit berechnen. Was nicht auf der CPU in der Form möglich wäre. Und zum anderen werden photorealistische Licht- und Schatteneffekte mit Hilfe komplexen mathematischen Modellen auf der CPU berechnet. Was wiederum nicht, bzw. nicht im vollen Umfang, in Echtzeit auf der GPU möglich wäre. 2 Physikalische Erklärung von Licht 2.1 Was ist Licht? Licht, als sichtbarer Bereich der elektromagnetischen Strahlung, besitzt Wellen- sowie Teilcheneigenschaften. Die Welleneigenschaften von Licht wurden aufbauend auf Christiaan Huygens begründeter Wellenoptik 1802 im Doppelspaltexperiment von Thomas Young gezeigt. Die Teilcheneigenschaften von Licht wurden Anfang des 20. Jahrhunderts von Arthur Compton in Experimenten zu Beobachtungen des Compton-Effekts gezeigt. Der daraus hervorgegangene Welle-Teilchen-Dualismus wurde durch die, von Albert Einstein begründete, Quantenphysik aufgeklärt in dem Sinne, dass Licht sowohl Wellen- als auch Teilcheneigenschaften besitzt [23]. So bringt der Welle-Teilchen-Dualismus die oben erwähnte Wellenoptik, Quantenoptik und Strahlenoptik (auch geometrische Optik genannt) zusammen. • Wellenoptik: Die Wellenoptik beschreibt die Beugung, Interferenz, Farbe sowie die Polarisation von Licht. • Quantenoptik: Die Quantenoptik dagegen beschreibt Licht als Lichtteilchen, das sogenannte “Photon“, welches ein lokalisiertes Wellenpaket ist. • Strahlenoptik: Die Strahlenoptik (geom. Optik) beschreibt Licht idealisiert als eine Zusammensetzung von Lichtstrahlen und ist in heutiger Computergrafik das Standardmodell zur Lichtbeschreibung. 2.2 Was ist geometrische Optik? Die geometrische Optik ist eine Näherung der Optik, in der die Welleneigenschaften des Lichtes vernachlässigt werden. In der geometrischen Optik setzt sich Licht aus Lichtstrahlen zusammen. Demnach senden Lichtquellen oder reflektierende Objekte Lichtstrahlen aus, welche reflektiert, gebrochen oder aufgespaltet werden (siehe Abb. 2.1 bis 2.3). Diese Eigenschaften bilden unter anderem die Grundlage für Ray Tracing. 12 Physikalische Erklärung von Licht In Abb. 2.1 sieht man die spekulare Reflexion eines Lichtstrahls, wobei Einfallswinkel α gleich dem Reflexionswinkel β, in Abhängigkeit zur Normalen, ist. Abbildung 2.1: Spekulare Reflexion [28]. In Abb. 2.2 sieht man das Snelliussches Brechungsgesetz, welches besagt in welche Richtung eine Welle, hier das Licht, abgelenkt wird, wenn es von einem transparenten Medium auf eine anderes Medium mit unterschiedlichen Materialeigenschaften trifft. Abbildung 2.2: Snelliussches Brechungsgesetz [27]. In Abb. 2.3 sieht man die Lichtspaltung durch ein Prisma. Hierbei wird das Licht in seine verschiedenen Bestandteile, den Spektralfarben, zerlegt. Da sich rotes Licht im Prisma schneller ausbreitet als blaues Licht wird es weniger gebrochen. Diese Tatsache wird durch das oben erwähnte Snelliussche Brechungsgesetz beschrieben. Abbildung 2.3: Lichtspaltung [24]. 2.3 Lichtquellentypen in Computerspielen 13 2.3 Lichtquellentypen in Computerspielen In Computerspielen gibt es unterschiedliche Lichtquellentypen. Um die reale Beleuchtung einer Szene simulieren zu können, braucht man mehrere und verschiedene Lichtquellen. Nachfolgend werden einige Typen näher betrachtet (siehe dazu Abb. 2.4). a) Diffuse Flächenlichtquelle: Diffuse Flächenlichtquellen strahlen ein “weiches“ Licht aus. Die beleuchtete Szene wirkt daher kontrast- und schattenarm. Da es sich um eine gleichmäßige Beleuchtung handelt, gibt es keine spekularen Reflexionen auf den Oberflächen. Diffuse Flächenlichtquellen lassen sich z.B. mit einem bedeckten Himmel vergleichen. b) Punktlichtquelle: Punktlichtquellen senden Lichtstrahlen sternförmig von einem bestimmten Punkt aus und haben dadurch eine geringe räumliche Ausdehnung. Dies führt dazu, dass die Intensität mit der Entfernung abnimmt. Das Licht einer Punktlichtquelle kann man mit dem einer Glühbirne vergleichen. c) Richtungslichtquelle: Eine Richtungslichtquelle sendet parallele Lichtstrahlen in eine bestimmte Richtung und beleuchtet so eine Szene großflächig. Es entsteht dadurch eine Beschattung der Objekte in der Szene. Sonnenlicht ist z.B. annähernd ein Richtungslicht. d) Strahler (Spot-Light): Ein Strahler oder auch Spot-Light erzeugt einen gerichteten Lichtkegel mit einer Abstrahlungscharakteristik cosn θ. Dieser Lichtkegel beleuchtet einen bestimmten Bereich einer Szene. Hierbei wird punktuell ein Objektschatten erzeugt. Eine Schreibtischlampe wäre z.B. ein Spot-Light. Abbildung 2.4: Lichtquellentypen. 3 Beleuchtungsmodelle 3.1 Lokale Beleuchtungsmodelle 3.1.1 Allgemeine Beschreibung lokaler Modelle Im Allgemeinen entsteht ein Bild durch die Simulation der Wechselwirkung von Licht und Materie. Dabei gibt es zwei Kategorien von Wechselwirkungen. Einmal die Wechselwirkung im Volumen (siehe Abb. 3.1), welche im Volume Rendering eine Rolle spielt. Und zum anderen die Wechselwirkung an Oberflächen (siehe Abb. 3.1), bei der Reflexionen und Refraktionen entstehen. Da bei Oberflächengrafik, die vorwiegend im Echtzeit-Rendering eingesetzt wird, zwischen den einzelnen Oberflächen ein Vakuum ohne Wechselwirkungen existiert, entsteht nur an den Oberflächen und nicht im Objektvolumen eine Streuung von Licht. Abbildung 3.1: Zwei Kategorien von Wechselwirkungen. Die in der Szene vorhandene Geometrie benötigt daher eine Oberflächenbeschreibung in Form von Reflexionseigenschaften. Solche Reflexionseigenschaften von Oberflächen können durch eine sogenannte Bidirektionale Reflektanzverteilungsfunktion (engl. BRDF) beschrieben werden. Um genauer auf die Funktionsweise der BRDF eingehen zu können, müssen noch einige in der BRDF vorkommenden Größen und Bezeichnungen erklärt werden. Raumwinkel Analog zum Bogenwinkel in der Ebene wird der Raumwinkel ω im Raum definiert. Er beschreibt das Verhältnis einer Kugelfläche A zum Quadrat des Radius dieser Kugel: ω= A [sr] r2 3.1 Lokale Beleuchtungsmodelle 15 Seine Einheit wird in sr = steradiant angegeben. Der volle Raumwinkel ist die Fläche der Einheitskugel und hat also die Größe 4π sr. Weil es nicht wirklich Sinn macht, anzugeben, wieviel Licht von einer genauen Richtung kommt, da es als eine Art Fluss durch den Raum gemessen wird, verwendet man den differentialen Raumwinkel, der angibt, wieviel Licht aus einer kleinen Menge von Richtungen kommt. Wenn nun eine Richtung in sphärischen Koordinaten (θ, φ) gegeben ist, und eine kleine Winkelabweichung dθ, dφ, dann ist der differentiale Raumwinkel dω. Abb. 3.2 verdeutlicht dies. [20, 29] A r2 dω = (heigth)(width) dω = dω = (dθ)(sin θdφ) dω = sin θdθdφ Abbildung 3.2: Der differentielle Raumwinkel ist die fett umrahmte Fläche auf der Einheitskugel. Bidirektionale Reflektanzverteilungsfunktion (BRDF) Eine bidirektionale Reflektanzverteilungsfunktion (engl. Bidirectional Reflectance Distribution Function, kurz BRDF) beschreibt die lokalen Reflexionseigenschaften von Materialien unter beliebigem Einfallswinkel vom Licht. Die BRDF kann je nach gewählter Genauigkeit dieser Reflexionseigenschaften sehr komplex werden. Es existieren ferner zwei Ansätze zur Repräsentation der BRDF-Werte. Zum Einen wären dies explizite Messwerte von Reflexionen auf verschiedenen Materialen oder jeweilige Simulationsergebnisse basierend auf vorhergehenden Messungen. Und zum Anderen die Approximierung der Werte durch analytische Funktionen, also durch theoretische Modelle, wie den lokalen Beleuchtungsmodellen. Außerdem existieren zwei Klassen von BRDFs. Zum Einen BRDFs für isotrope Oberflächenstrukturen, wo sich die Lichtintensität des reflektierten Lichtes bei Drehung der Oberfläche 16 Beleuchtungsmodelle nicht ändert. Und zum Zweiten BRDFs für anisotrope Oberflächenstrukturen, wo sich die Lichtintensität des reflektierten Lichtes bei der Drehung der Oberfläche ändert, z.B. wie bei gebürstetem Aluminium. Die BRDF setzt sich aus folgenden Teilen zusammen... • x = betroffener Oberflächenpunkt: Ist der Oberflächenpunkt auf den das Licht in einem bestimmten Winkel trifft und wieder reflektiert wird. • L = Strahlungsdichte (Radiance): Die Strahlungsdichte gibt die ankommende und gesendete Lichtenergie bei Punkt x an und ist im wesentlichen vom Raumwinkel abhängig. • E = Bestrahlungsstärke (Irradiance): Die Bestrahlungsstärke gibt an wieviel Strahlungsleistung auf Punkt x auftrifft. Diese Größe ist ebenfalls vom Raumwinkel abhängig. • ω = Raumwinkel: Der Raumwinkel definiert die Lichteinfalls- und Reflexionsrichtung. • dω = differentielle Raumwinkel: Der differentielle Raumwinkel gibt eine Fläche auf der Einheitskugel an. Unter diesem differentiellen Raumwinkel trifft die Lichtstrahlung auf. • cos θi = Verminderungsfaktor: Der Verminderungsfaktor der Leuchtintensität durch Einfallswinkel des Lichtes. ...und lautet im vollen Umfang: BRDF = fr (ωi, x, ωo) = dLr (x,ωi ) dEi (x,ωi ) = dLr (x,ωo ) Li (x,ωi ) cos θi dωi In Abb. 3.3 sieht man die Darstellung aller BRDF-Parameter im groben Zusammenspiel. Abbildung 3.3: Links die Radiance, Irradiance sowie der Ein- und Ausfallswinkel. Rechts die definierten Raumwinkel der Lichteinfalls- und Reflexionsrichtung. 3.1 Lokale Beleuchtungsmodelle 17 Wie man anhand der BRDF-Formel sieht, beschreibt diese die Reflexivität eines Materials als Verhältnis von ausgehender Strahlungsdichte zu eingehender Bestrahlungsstärke und liefert so für jeden auftreffenden Lichtstrahl die Reflexivität des austretenden Lichtstrahls. Damit bidirektionale Reflektanzverteilungsfunktionen physikalisch korrekt sind, müssen diese zwei grundlegende Eigenschaften erfüllen: 1.) Der BRDF-Wert darf sich nicht ändern, wenn Einfalls- und Ausfallswinkel vertauscht werden. Diese Eigenschaft wird auch als Helmholz-Reziprozität bezeichnet. 2.) Die BRDF muss den Energieerhaltungssatz erfüllen. D.h. die Summe des reflektierten Lichtes muss gleich der Menge des einstrahlenden Lichtes sein. Mit der Erfüllung oder Nichterfüllung dieser Eigenschaften entscheidet sich, ob die BRDF und damit das lokale Beleuchtungsmodell empirischer oder theoretischer Natur ist. Empirische Beleuchtungsmodelle sind zwar nicht physikalisch korrekt, aber schnell zu berechnen, während sich dies bei theoretischen Modellen genau andersherum verhält: Es zahlt sich meist nicht aus, sie in Renderern einzusetzen, wenn sie zu komplex und rechenaufwendig sind. Der wichtigste Punkt hierbei aber ist: Sie sind meist unnötig präzise im Vergleich zu anderen Vorgängen in einer Renderingpipeline. Daher liegt es nahe, solche Modelle durch einfachere zu ersetzen [9]. 3.1.2 Lambert-Modell Das Lambert Modell ist ein empirisches Beleuchtungsmodell, das die BRDF eines bestimmten Materials approximiert. Es stellt die Grundlage fast aller anderen lokalen Beleuchtungsmodelle dar und beschreibt im Groben Oberflächen, die auftreffendes Licht diffus, also in alle Richtungen gleich stark, reflektieren. D.h. die Strahlungsdichte, bzw. -intensität ist in alle Richtungen konstant und nur vom Einfallswinkel θ des Lichtes abhängig. Die Parameter des Lambert-Modells lauten: • Idif f us = Strahlungsdichte/-intensität der ideal diffusen Reflexion. • kd = Diffuser Reflexionskoeffizient gibt den Anteil des diffus gestreuten Lichtes an. • IL = Strahlungsdichte/-intensität des einstrahlenden Lichtes. • cos θ = Verminderungsfaktor der Leuchtintensität durch Einfallswinkel des Lichtes. Die Lambert-Modell-Funktion lautet im Ganzen: Idif f us = ILkd cos(θ) = ILkd(hN , Li) Je größer der Einfallswinkel des Lichtes ist, desto geringer wird die Strahlungsintensität der ideal diffusen Reflexion, da sich die bestrahlte Fläche mit zunehmendem Einfallswinkel vergrößert (siehe Abb. 3.4). A⊥ = A cos(θ) , mit A⊥ = Lichtstrahlbreite 18 Beleuchtungsmodelle Abbildung 3.4: Links die Abhängigkeit von A vom Einfallswinkel θ. Rechts die als Halbkreis abgebildeten Funktionswerte der Intensität der Reflexion bei verschiedenen Einfallswinkeln. Abbildung 3.5: Beispiel einer perfekt diffusen Kugel nach dem Lambert-Modell. 3.1.3 Phong- und Blinn-Phong-Modell Das Phong- und Blinn-Phong-Modell ist das bekannteste und oft benutzte Beleuchtungsmodell der Computergrafik. Es ist ein einfaches, nicht rechenintensives lokales Beleuchtungsmodell, dass eine Erweiterung des Lambert-Modells ist. Es beschreibt vorwiegend matt-glänzende Materialien, welche das Licht spekular reflektieren. Da die Parameter des Phong- und Blinn-Phong-Modells keinerlei physikalischer Grundlage unterliegen, wird das Energieerhaltungsgesetz nicht eingehalten. D.h. es kann passieren, dass mehr Licht von einem Objekt reflektiert wird, als auf das Objekt eingestrahlt wurde. Das reflektierte Licht wird als Kombination aus ambienter, ideal diffuser und ideal spiegelnder Reflexion beschrieben. 3.1 Lokale Beleuchtungsmodelle 19 Phong-Modell Die Bestandteile der Phong-Reflexion sind folgende: • Ambiente Komponente des reflektierten Lichtes: – Iambient = Ia kambient , mit Ia = Intensität des Umgebungslichtes. kambient = Materialkonstante. • Diffuse Komponente des reflektierten Lichtes: – Idif f us = IL kdif f us cos(θ) = IL kdif f us (hN , Li) , mit IL = Intensität des einfallenden Punktlichtstrahls. kdif f us = empirischer Reflexionsfaktor für die diffuse Komponente. • Spekulare Komponente des reflektierten Lichtes: – Ispekular = IL kspekular cosn (α) = IL kspekular (hR, V i)n , mit IL = Intensität des einfallenden Punktlichtstrahls. kspekular = empirischer Reflexionsfaktor für spiegelnde Komponente. n = konstanter Faktor zur Beschreibung der Oberflächenbeschaffenheit. Hierbei wäre rau n < 32, glatt n > 32 und n = ∞ ein perfekter Spiegel. Die Phong-Modell-Funktion, welche die Strahlungsdichte/-intensität der Phong Reflexion angibt, lautet dann im Ganzen (siehe Abb. 3.6): Iphong = Iambient + Idif f us + Ispekular Abbildung 3.6: Zusammensetzung der obigen Komponenten zum Phong-Modell [25]. Um die Auswirkungen der oben vorgestellten Parameter zu veranschaulichen, wird in Abb. 3.7 gezeigt, wie sich der empirische Reflexionsfaktor der spiegelnden Komponente und der konstante Faktor zur Beschreibung der Oberflächenbeschaffenheit auf das mit dem PhongModell gerenderte Bild auswirkt. 20 Beleuchtungsmodelle Abbildung 3.7: Phong-Modell - Auswirkung der Parameter. Man sieht, dass links unten die gerenderte Kugel nur eine diffuse Reflexion und ein relativ mattes Material aufweist. Wohingegen die Kugel oben rechts spekulare Reflexionen aufgrund des sehr glatten, bis hin zum spiegelnden, Materials aufweist. So werden der spekulare Reflexionsanteil über den Parameter ks und die “Glattheit“ der Oberfläche über den Parameter n gesteuert. Blinn-Phong-Modell Was ist nun der Unterschied vom Phong-Modell zum Blinn-Phong-Modell? Nun der einzige Unterschied besteht in der spekularen Komponente. Im Phong-Modell wurden der Reflexionsvektor R und der Betrachtungsvektor V benötigt, um den spekularen Anteil der Reflexion Ispekular bestimmen zu können (siehe Abb. 3.8). Ispekular = IL kspekular cosn (α) = IL kspekular (hR, V i)n Abbildung 3.8: Phong-Modell - Berechnung der spekularen Komponente. 3.1 Lokale Beleuchtungsmodelle 21 Da das Skalarprodukt beider Vektoren und damit der Winkel α umständlicher zu berechnen ist, wird anstelle des tatsächlichen Reflexionsvektors R die Winkelhalbierende H der Vektoren V und L genommen. Mit diesem Vektor H und dem Normalenvektor am betreffenden Punkt, wird durch ein Skalarprodukt der Winkel β, welcher annähernd dem Winkel α entspricht, berechnet (siehe Abb. 3.9) [7]. Damit enfällt die aufwendige und langsame Berechnung des Reflexionsvektors, was das Blinn-Phong-Modell schneller bei gleichem Ergebnis macht (siehe Abb. 3.10). Ispekular = IL kspekular cosn (β) = IL kspekular (hH, N i)n , mit H= L+V kL+V k = Half way − V ektor Abbildung 3.9: Blinn-Phong-Modell - Berechnung der spekularen Komponente. Abbildung 3.10: Vergleich von Blinn-Phong-Modell und Phong-Modell [21]. 22 Beleuchtungsmodelle 3.1.4 Schlick-Modell Das Schlick-Modell ist ein weiteres physikalisch motiviertes, effizient berechenbares Beleuchtungsmodell. Es ist wie das Cook-Torrance-Modell ein Mittel zwischen empirischem und theoretischem Modell und eine effiziente Zusammenführung des Phong-Modells und des Cook-Torrance-Modells. Beim Schlick-Modell werden Reflexionen physikalisch plausibel unter Einhaltung des Energieerhaltungssatzes beschrieben. Außerdem wird der sogenannte Fresnel-Effekt, welcher den Reflexionsgrad von Licht, sowie die Verteilung des einfallenden Lichtes auf den reflektierten und den transmittierten Strahl beschreibt, durch eine einfachere Approximation ersetzt. Im Unterschied zu nahezu allen anderen lokalen Beleuchtungsmodellen verwendet das Schlick-Modell keine Aufspaltung des Reflexionslichtes in ambiente, diffuse und spekulare Komponente. Stattdessen wird von einem Schichtmodell ausgegangen. So wird zwischen Oberflächen mit homogenen, und solchen mit heterogenen optischen Eigenschaften unterschieden. Hierbei bestehen heterogene Materialien aus zwei Schichten, wobei die obere Schicht etwas transparent ist. Ein solches Material wäre z.B. lackiertes Holz. Homogene Materialien bestehen dagegen nur aus einer Schicht. Ferner benötigt das Schlick-Modell drei weitere Parameter zur Oberflächenbeschreibung. So beschreiben der Reflexions-, Rauheits- und Isotropie-Faktor die wichtigsten optischen Materialeigenschaften. In der Abb. 3.11 sieht man jeweils das classic Phong-Modell und das Cook-TorranceModell. Wobei die gerenderten Bilder jeweils abhängig von ihren Reflexionen unecht und “plastikhaft“ aussehen. Das mit dem Schlick-Modell gerenderte Bild in Abb. 3.12 dagegen vereinigt die optischen Vorzüge beider oben erwähnten Modelle und sieht dementsprechend realistischer aus. Abbildung 3.11: Classic Phong-Modell und Cook-Torrance-Modell zusammengeführt... 3.2 Interpolationsverfahren 23 Abbildung 3.12: ...ergeben das effiziente Schlick-Modell. 3.2 Interpolationsverfahren Wie werden eigentlich Polygone gefüllt? Diese einfache Frage lässt sich mit den Schattierungsalgorithmen, den sogenannten Shading-Verfahren, beantworten. Es gibt zwei Klassen von Schattierungsalgorithmen: das vertexbasierte Vertex-Lighting und das pixelbasierte PerPixel-Lighting. 3.2.1 Vertex-Lighting Beim Vertex-Lighting wird für jeden Vertex der Geometrie entsprechend einem Beleuchtungsmodell ein Farbwert berechnet. Anschließend wird ein neuer Farbwert zwischen den zwei Vertex-Farbwerten interpoliert und jedes Pixel zwischen den Vertices erhält den interpolierten Farbwert. Bekannte Vertex-Lighting Algorithmen sind das Flat- und Gouraud-Shading. Flat-Shading Das Flat-Shading ist ein sehr einfacher und schneller Schattierungsalgorithmus. Hierbei bekommt jedes Pixel eines Polygons anhand der Flächennormale den gleichen Farbwert, bzw. den gleichen Lichtwert zugewiesen. Aufgrund dieser Vorgehensweise entsteht der größte Nachteil des Flat-Shadings. Bei gekrümmten Oberflächen sieht die Beleuchtung aufgrund von Facettenbildung unrealistisch aus. Da dieser Nachteil nur durch sehr viele kleine Polygone, einhergehend mit hohem Rechenaufwand, beseitigt werden kann, eignet sich das Flat-Shading nur bedingt für eine effiziente und realistische Darstellung. 24 Beleuchtungsmodelle Abbildung 3.13: Flat-Shading. Gouraud-Shading Das Gouraud-Shading berechnet durch Mittelung aller anliegenden Flächennormalen den Richtungsvektor eines jeden Vertices. Anschließend wird entsprechend einem Beleuchtungsmodell der Vertex-Farbwert berechnet. Danach werden aus diesen Vertex-Farbwerten über eine Scanline-Interpolation die Farbwerte der Pixel auf den Polygonkanten berechnet. In einer zweiten Scanline-Interpolation werden aus den Farbwerten auf den Polygonkanten die Pixel-Farbwerte auf der Scanline selber berechnet. Nach beiden Scanline-Interpolationen wurde für jedes Pixel im Polygon ein neuer Farbwert bestimmt. Die facettierte Oberfläche eines schattierten Objekts erscheint durch die Interpolation der Flächennormalen weich. Das Gouraud-Shading braucht weniger Polygone bei einem viel besseren Ergebnis als das Flat-Shading. Abbildung 3.14: Gouraud-Shading. 3.2.2 Per-Pixel-Lighting Das Per-Pixel-Lighting ist eine pixelbasierte Beleuchtung, bei der ein Farbwert entsprechend einem Beleuchtungsmodell nicht für jeden Vertex berechnet und dann interpoliert wird, sondern für jeden einzelnen Pixel separat berechnet wird. Das Per-Pixel-Lighting wird von Hardware-Shadern unterstützt und ermöglicht die realistische Darstellung von bliebig großen Licht- und Reflexionseffekten. Das Phong-Shading ist hier ein bekannter Per-Pixel-Lighting Algorithmus. Die meisten high-end Game-Engines, wie die CryEngine3, Doom3-Engine, Source Engine, Dunia Engine und viele weitere unterstützen das Per-Pixel-Lighting. 3.2 Interpolationsverfahren 25 Abbildung 3.15: Per-Pixel-Lighting - Beipiel [16]. Phong-Shading Das Phong-Shading interpoliert aus den Vertex-Normalen Normalen für jeden Pixel im Polygon und berechnet für diesen anhand einem entsprechenden Beleuchtungsmodell den Farbwert aus der Pixel-Normale (siehe Abb. 3.16). Qualitativ ist das Phong-Shading besser als das Gouraud-Shading (siehe Abb. 3.17). Im Vergleich ist es aber um einiges rechenaufwendiger. Abbildung 3.16: Interpolation der Normale für jeden Pixel im Polygon. 26 Beleuchtungsmodelle Abbildung 3.17: Flat-Shading vs. Phong-Shading. 3.3 Globale Beleuchtungsmodelle 3.3.1 Allgemeine Beschreibung globaler Modelle Um eine globale Beleuchtung physikalisch korrekt beschreiben zu können, benötigt man richtige theoretische Modelle. Da das erklärte Ziel ist ein photorealistisches Bild zu rendern, muss die globale Wechselwirkung von Licht und Materie physikalisch korrekt beschrieben werden. Dazu wird die in Kapitel 2 beschriebene geometrische Optik als Basis des globalen Beleuchtungsmodells gewählt und die sogennante Rendering Gleichung näherungsweise gelöst. Es gibt drei verschiedene Ansätze globaler Beleuchtungsmodelle [22]: 1.) Inversion: • In der Praxis nicht angewendet. 2.) Expansion: • Schussartiger Ansatz: Ray Tracing, Light Ray Tracing. • Sammlungsartiger Ansatz: Path Tracing. • Bidirektionaler Ansatz: Photon Mapping und Diffuses Ray Tracing. 3.) Iteration: • Radiosity-Verfahren. Rendering Gleichung Bei der Rendering Gleichung handelt es sich um eine Integralgleichung, die die Energieerhaltung bei der Ausbreitung von Lichtstrahlen beschreibt und somit die mathematische Basis für alle Algorithmen zur globalen Beleuchtung bildet. Jim Kajiya zeigte 1986, dass alle bis 3.3 Globale Beleuchtungsmodelle 27 dato verbreiteten Rendertechniken direkt aus der Rendering Gleichung hergeleitet werden können. Damit gab es erstmals einen gemeinsamen mathematischen Unterbau, auf dem die globalen Beleuchtungsmodelle verglichen werden konnten [26]. Die Rendering Gleichung lautet: L(x, ωr ) = Le(x, ωr ) + R Ω+ fr (ωi, x, ωr )Li(x, ωi) cos θidωi Die einzelnen Teile haben im wesentlichen die unten erklärten Bedeutungen und sind Richtungsabhängig: • L(x, ωr ) = Der Energiefluss: Gibt an wieviel Licht von Punkt x aus in Richtung ωr abgestrahlt wird. Ist die Radiance oder auch Strahldichte. • Le (x, ωr ) = Der Emissionsterm: Gibt an wieviel Licht von x aus in Richtung ωr ausgestrahlt wird, falls der Punkt selbst eine Lichtquelle darstellt. • fr (ωi , x, ωr ) = Der Streuungsterm: Ist eine BRDF mit Einfallswinkel ωi und Reflexionswinkel ωr in Abhängigkeit von Punkt x. • Li (x, ωi ) = Einfallende Radiance: Beschreibt, wieviel Licht aus Richtung ωi den Punkt x erreicht. • Ω+ = positiven Hemisphäre: Ist die Gesamtheit aller Winkel der positiven Hemisphäre über der Oberfläche. • cos θi = Einfallsrichtung des Lichtes. Abbildung 3.18: Rendering Gleichung - Grobes Prinzip. 28 Beleuchtungsmodelle Die Lösungsansätze für die Werte innerhalb des Integrals sind einmal die Monte-CarloTechniken. Hier lassen sich die Werte z.B. durch Ray Tracing, also durch das Aussenden eines Lichtstrahls in Richtung ωi , berechnen. Und zum Anderen die Finite-Elemente-Techniken. Hier lassen sich die Werte z.B. durch Radiosity, also dem globalen Lichtaustauch von Oberflächenpatches und dem Lösen von Gleichungssystemen, berechnen. 3.3.2 Ray Tracing Das Ray Tracing ist eines der wichtigsten globalen Beleuchtungsmodelle zur Verdeckungsund Lichtverteilungsberechnung in einer 3D-Szene. Durch Aussenden von Strahlen, die den Weg von Lichtstrahlen in einer Szene simulieren, wird das Mehrfachintegral der Rendering Gleichung annähernd bestimmt. Somit wird eine physikalisch korrekte und real wirkende Beleuchtung der Szene erzeugt. In Abb. 3.19 wird schematisch von der Betrachterposition, die den Start darstellt, der rekursive Rückwärts-“Licht“-Transport verdeutlicht. So wird der Pfad eines ausgesendeten Lichtstrahls, welcher beim Betrachter ankommt, rekursiv nachverfolgt bis ein letztes Objekt “getroffen“ wird. Anschließend werden alle, durch entsprechende lokale Beleuchtungsmodelle berechneten, Farbwerte an den betroffenen Trefferpunkten auf dem “Lichtpfad“ rekursiv aufaddiert und im Pixel der Bildebene ausgegeben (siehe Abb. 3.20). Abbildung 3.19: Ray Tracing - Rekursives Zurückverfolgen des Lichtstrahls. 3.3 Globale Beleuchtungsmodelle 29 Abbildung 3.20: Ray Tracing - Bildaufbau durch Algorithmus. Abbildung 3.21: Ray Tracing - Rendering Beispiel. 3.3.3 Radiosity Das Radiosity Modell ist nach Ray Tracing eins der bekanntesten globalen Beleuchtungsmodelle. Das Modell löst annähernd die Rendering Gleichung unter Einhaltung des Energieerhaltungssatzes für Strahlung. Anders als beim Ray Tracing wird keine Lichtausbreitung durch Lichtstrahlen simuliert, sondern es wird angenommen, dass alle Oberflächen ideal diffuse Reflektoren und alle Lichtquellen ideal diffuse Strahler sind. Dadurch ist die globale Beleuchtung der Szene Blickpunktunabhängig, bzw. unabhängig von der Kameraposition. Aber auch sehr rechenintensiv durch hohen Zeit- und Speicherbedarf. Das grobe Funktionsprinzip des Algorithmus: Die Geometrie der 3D-Szene wird in bestimmte Patches unterteilt (siehe Abb. 3.22). Die Patches beeinflussen den Radiosity-Wert eines anderen Patches und umgekehrt. D.h. einzelne Patches tauschen untereinander Strahlung aus. Dieser Austausch wird durch die Berechnung der sogenannten Formfaktoren beschrieben. Anschließend werden die Radiosity-Werte der einzelnen Patches durch das iterative Lösen eines linearen Gleichungssystems berechnet. Da die iterative Lösung des LGS gegen die exakte Lösung der Rendering Gleichung konvergiert 30 Beleuchtungsmodelle und damit gegen ein photorealistisches Bild, kann nach einer genügend exakten Lösung mit den vorhandenen Radiosity-Werten z.B. Gouraud-Shading auf die Polygone angewendet werden (siehe Abb. 3.22), um das fertige Bild zu erzeugen. Die Blickpunktabhängige Verdeckungsberechnung erfolgt in einem unabhängigem Schritt. Abbildung 3.22: Radiosity - Grobes Prinzip. 4 Schattenmodelle 4.1 Lokale Schattenmodelle 4.1.1 Projektive Schatten Projektive Schatten sind ein einfaches und effizientes Schattenmodell das am besten für Schatten auf Ebenen geeignet ist. Das Prinzip zur Erzeugung von projektiven Schatten ist denkbar einfach. Das Objekt, welches die Schattenquelle darstellt, wird zum eigentlichen Schatten transformiert. Diese Transformation erzeugt eine planes Objekt von der Schattenquelle, welches dann als Schatten auf die Ebene projiziert wird. Anschließend werden das Objekt und der Schatten gezeichnet (siehe Abb. 4.1). Bei dem Erzeugen der projektiven Schatten treten aber auch Probleme auf. So ist die Schattenprojektion weitgehend “starr“. D.h. die Schatten sind nur für planare Empfängerflächen geeignet und sehen auf gekrümmten Oberflächen nicht korrekt aus. Ein weiterer Nachteil besteht in der Projektion auf die Oberflächenebene. Hierbei kann das sogenannte Z-Buffer-Fighting auftreten. Dabei haben die Ebene und der projizierte Schatten den gleichen Tiefenwert und die Grafikpipeline weiß nicht welcher Pixel mit seinem Z-Buffer-Wert als erstes gezeichnet werden soll. In der Folge entstehen zerfranste, halb überlagerte Texturen. Einer der größten Nachteile der projektiven Schatten ist die nicht vorhandene Selbstbeschattung (siehe Abb. 4.2). Abbildung 4.1: Schattenwerfendes Objekt auf die Ebene projiziert. 32 Schattenmodelle Abbildung 4.2: Links gibt es keine Selbstbeschattung. Rechts ragt der Schattens aus der Oberflächenebene heraus. 4.1.2 Schattenvolumen Die Schattenvolumen (engl. Shadow Volumes) sind eines der am häufigsten verwendeten Schattenmodelle in aktuellen Spielen. Das Prinzip ist relativ einfach und lässt sich effektiv implementieren. Das Verfahren ist ein Objektraum-Verfahren und bietet korrekt geworfene Schatten auf allen Oberflächenstrukturen und eine Selbstbeschattung. Außerdem sind die Schattenvolumen unabhängig von der Betrachterposition. Das grobe Prinzip wird im weiteren näher eläutert. Zuerst wird das schattenwerfende Objekt, welches die Schattenquelle darstellt bestimmt. Anschließend werden von der Lichtquelle aus die Silhouetten-Kanten der Schattenquelle zum Schattenvolumen ins “unendliche“ extrudiert. All diejenigen Bereiche liegen im Schatten, die sich nun im Schatten-Volumen der Schattenquelle befinden. Daraufhin erfolgt ein Clipping der erzeugten Volumen am Viewing-Frustum (siehe Abb. 4.3 und Abb. 4.4). Abbildung 4.3: Schattenwerfendes Objekt erzeugt Schattenvolumen. 4.1 Lokale Schattenmodelle 33 Abbildung 4.4: Schattenvolumen - Beispiel NVIDIA-Demo. Wie wird aber festgestellt, ob ein Punkt im Schattenvolumen liegt? Die grobe Lösung dieser Frage ist eine Strahlverfolgung vom Betrachter zum Oberflächenpunkt mit ergänzenden Stencil-Buffer Operationen (siehe Abb. 4.5). Schneidet der ausgesendete Strahl die Seite des Schattenvolumens, welche zum Betrachter zeigt, wird der Stencil-Buffer um eins erhöht. Schneidet der ausgesendete Strahl die Rückseite des Schattenvolumens wird der Stencil-Buffer um eins erniedrigt. Anschließend ist der Oberflächenpunkt im Schatten, wenn der StencilBuffer größer 0 ist. Abbildung 4.5: Wann liegt ein Punkt im Schatten? - Das Prinzip. 34 Schattenmodelle Das verfahren der Schattenvolumen hat aber auch Nachteile zu bieten. So ist die Füllrate bei vielen Schattenquellen sehr hoch, da viele Volumen gezeichnet werden müssen. Das Verfahren eignet sich gut für harte Schatten, weiche Schatten dagegen lassen sich nur mit “Tricks“ erzeugen [3]. So werden mehrere Volumen gezeichnet und dann das Ergebnis zu einem weichen Schatten gemittelt. Außerdem hat das klassische Verfahren der Schattenvolumen ein Problem, wenn die Kameraposition innerhalb des Schattenvolumens liegt. Die Lösung hier ist die sogenannte Depth-fail-Methode, auch Carmack’s Reverse-Methode genannt, zur modifizierten Berechnung des Stencil-Buffers. Abbildung 4.6: Schattenvolumen - Bekanntestes Beispiel Doom 3 [14]. 4.1.3 Shadow Maps Die Shadow-Maps sind neben den Schattenvolumen ein weit verbreitetes Schattenmodell in aktuellen high-end Computerspielen. Es ist ein texturbasiertes Schattenmodell, das in einer separaten Textur, der sogenannten “Shadow Map“, alle Schatten-Informationen der 3D-Szene speichert. Diese Shadow-Map wird perspektivisch auf die 3D-Szene Projiziert. Das Shadow-Map Verfahren ermöglicht weiche Schatten, sowie Selbstbeschattung. Es ist recht effizient bei großen Geometrien und damit schneller als das Schattenvolumen-Verfahren. Das grobe Prinzip (siehe Abb. 4.7): Die Schattenberchnung erfolgt in einem 2-Pass-Rendering (siehe Abb. 4.8). Die Szene wird zunächst aus Sicht der Lichtquelle gerendert. Hierbei wird der Z-Buffer ausgelesen und in die Shadow Map gespeichert. Im zweiten Pass wird die Szene aus der Kameraposition gerendert. Hierbei wird jedes sichtbare Fragment in das Lichtquellensystem transformiert. Ein anschließender Vergleich des Tiefenwertes von jedem Fragment mit dem gespeicherten Tiefenwert aus der Shadow Map zeigt, ob das Fragment im Schatten liegt oder nicht. 4.1 Lokale Schattenmodelle 35 Abbildung 4.7: Shadow Maps - Grobes Prinzip. Abbildung 4.8: Shadow Maps - Veranschaulichung des 2-Pass-Rendering. Wie die vorhergehenden Schattenmodelle bieten auch die Shadow Maps Nachteile. So sind die Resultate, also die Schattendarstellung, weniger genau wie bei den Schattenvolumen. Bei Dynamischen Szenen muss die Shadow Map immer wieder neu berechnet werden, was Performance kostet. Die Schattenqualität hängt stark von der Auflösung der Shadow Map ab, da eine gleichförmige Verteilung des Texturraumes vorliegt. D.h. dass die Schattentextur 36 Schattenmodelle bei einer weiten Ausdehnung des Schattens in Richtung der Kamera immer grobaufgelöster wird (siehe Abb. 4.9 links). Zusätzlich kann auch sogenannte Surface Acne entstehen, wenn Ungenauigkeiten bei dem Z-Test erfolgen (siehe Abb. 4.9 rechts). Abbildung 4.9: Shadow Maps Probleme - Rechts die geringe Auflösung der Schattentextur. Links das Surface Acne. 4.2 Globale Schattenmodelle 4.2.1 Ray Tracing Das Ray Tracing ist nicht nur eines der meistverwendeten globalen Beleuchtungsmodelle, sondern auch ein viel verbreitetes globales Schattenmodell. Da es die Verdeckungs- und Lichtverteilungsberechnung in einer 3D-Szene durchführt, liegt es nahe, dass eine globale Schattenberchnung ebenfalls möglich ist. Die Idee der Schattenberechnung mit Ray Tracing ist folgende. Lichtstrahlen können nicht nur vom Betrachter, sondern von jedem beliebigen Punkt in der Szene, ausgesendet werden. Damit wird die Schattensimulation möglich. So befindet sich ein Oberflächenpunkt im Schatten, wenn sich zwischen ihm und der Lichtquelle ein anderes, schattenwerfendes, Objekt befindet. Um dies herauszufinden sendet der Oberflächenpunkt einen Schattenstrahl in Richtung Lichtquelle aus. Gibt es einen Schnittpunkt mit einem anderen Objekt, so liegt der Oberflächenpunkt im Schatten des geschnittenen Objekts und der Helligkeitswert an diesem Punkt nimmt den Wert 0 an (siehe Abb. 4.10). 4.2 Globale Schattenmodelle 37 Abbildung 4.10: Ray Tracing - Schattenberechnung. 4.2.2 Radiosity Das Radiosity Schattenmodell simuliert Schatten durch die globale Wechselwirkung jeder, in der 3D-Szene vorhandenen, Oberfläche mit jeder anderen. Die Oberfläche wird in Patches unterteilt. Diese Patches nehmen Strahlung auf und tauschen diese gegenseitig aus. Sind nun bestimmte Patches verdeckt von anderen, nehmen und senden diese weniger Licht an andere Patches. In Folge dessen haben die verdeckten Patches einen kleineren Radiosity-Wert und werden dadurch dunkler gezeichnet, bzw. gerendert. So entsteht bei verdeckten Oberflächen der Szene ein Schatten. Im Ganzen wird dann eine globale Schattensimulation möglich. Abbildung 4.11: Radiosity - Beispiel für Schattenberechnung. 5 Zusammenfassung Es wurden drei lokale Beleuchtungsmodelle vorgestellt. Mit Ray Tracing und Radiosity zwei globale Beleuchtungsmodelle und dazu die in der Computergrafik gebräulichen Interpolations-Verfahren. Da zur korrekten Beleuchtung auch eine physikalisch korrekte Beschattung gehört, wurden die drei am häufigsten verwendeten lokalen Schattenmodelle vorgestellt und erklärt. Abschließend wurde noch kurz auf die globalen Schattenmodelle eingegangen. Auffallend ist, dass real wirkende Beleuchtung und Beschattung bei heutiger Komplexität nicht mehr per Hand zu modellieren sind. Solch ein Unterfangen wäre zu zeitaufwendig oder sogar unmöglich. Um dies aber trotzdem realisieren zu können, werden aufwendige Texturen mit Hilfe von Beleuchtungs- und Schattenmodellen prozedural erzeugt. Erst dadurch wurde es Ende der 1990er Jahre möglich Licht und Schatten als Designmittel in Computerspielen einzusetzen. Im Bereich der Schattenmodelle werden immer mehr “Feinheiten“ entwickelt und so werden z.B. Soft Shadow-Methoden immer besser. Im Bereich Beleuchtung wird versucht indirekte globale Beleuchtung durch lokale Mittel im echtzeit Rendering nachzuahmen. Hierzu macht das Unternehmen Crytek mit dem Light Propagation Volumes Verfahren die ersten Schritte in die richtige Richtung. Im Allgemeinen bewegt sich daher die gesamte Entwicklung der Computergrafik in Richtung photorealistisches Rendering in Echtzeit. Literaturverzeichnis [1] 2K. Bioshock. Screenshot, 2007. [2] Atari. Paperboy. Screenshot, 1984. [3] D. Cohen-Or and P. Slavik. High-Quality Adaptive Soft Shadow Mapping. EUROGRAPHICS 2007, Volume 26 (2007), Number 3, 2007. [4] Crytek. Crysis. Screenshot, 2007. [5] Crytek. Crysis 2. Screenshot, 2010. [6] Michelangelo Merisi da Caravaggio. Bildtitel: Berufung des Matthäus. http:// de.wikipedia.org/wiki/Datei:Caravaggio_-_La_vocazione_di_San_Matteo.jpg, 1599. (online, 5.05.2010). [7] Wolfgang Engel and Jack Hoxley. D3dbook. http://wiki.gamedev.net/index.php/ D3DBook:Book_Cover, 2004. [8] LucasFilms Games. The Eidolon. Screenshot, 1984. [9] Nikolaus Gebhardt. Einige BRDF Modelle. http://www.irrlicht3d.org/papers/ BrdfModelle.pdf. [10] LucasArts. Maniac Mansion. Screenshot, 1987. [11] Nintendo. Super Mario Bros. Screenshot, 1985. [12] Nintendo. Super Mario 64. Screenshot, 1996. [13] Id Software. Doom. Screenshot, 1993. [14] Id Software. Doom 3. Screenshot, 2004. [15] Looking Glass Studios. System Shock 2. Screenshot, 1999. [16] Ubisoft. Dunia Engine - Far Cry 2. http://www.pcgameshardware.de/screenshots/ original/2008/01/Far_Cry_2_new_screenshots_02.jpg, 2008. [17] Ubisoft. Assassin’s Creed 2. Screenshot, 2009. [18] Ubisoft. Splinter Cell - Conviction. Screenshot, 2010. [19] Valve. Halflife. Screenshot, 1998. [20] Ulrich Weidenbacher. Beleuchtungsmodelle. Technical report. Universität Ulm, 2002. 40 Literaturverzeichnis [21] Wikipedia. Blinn-Beleuchtungsmodell. http://de.wikipedia.org/w/index.php? title=Datei:Blinn_phong_comparison.png&filetimestamp=20091031225822. (online, 20.05.2010). [22] Wikipedia. Globale Beleuchtung. Beleuchtung. (online, 7.11.2009). http://de.wikipedia.org/wiki/Globale_ [23] Wikipedia. Licht. http://de.wikipedia.org/wiki/Licht. (online, 8.07.2010). [24] Wikipedia. Lichtspaltung. http://de.wikipedia.org/wiki/Brechungsgesetz. (online, 9.06.2010). [25] Wikipedia. Phong-Beleuchtungsmodell. http://de.wikipedia.org/w/index.php? title=Datei:Phong_components_version_4.png&filetimestamp=20060807180513. (online, 20.05.2010). [26] Wikipedia. Rendergleichung. http://de.wikipedia.org/wiki/Rendergleichung. (online, 14.02.2010). [27] Wikipedia. Snelliussches Brechungsgesetz. http://de.wikipedia.org/wiki/ Snelliussches_Brechungsgesetz. (online, 9.06.2010). [28] Wikipedia. Spekulare Reflexion. (Physik). (online, 15.07.2010). http://de.wikipedia.org/wiki/Reflexion_ [29] Chris Wynn. An Introduction to BRDFBased Lighting. Technical report. NVIDIA Corporation, 2000. Erklärung Ich versichere, dass ich die Arbeit ohne fremde Hilfe und ohne Benutzung anderer als der angegebenen Quellen angefertigt habe, und dass die Arbeit in gleicher oder ähnlicher Form noch keiner anderen Prüfungsbehörde vorgelegen hat und von dieser als Teil einer Prüfungsleistung angenommen wurde. Alle Ausführungen, die wörtlich oder sinngemäß übernommen wurden, sind als solche gekennzeichnet. Stuttgart, den 30. Juli 2010 (Oleg Martin)