Beleuchtungsmodelle und Shading Andreas Spillner Computergrafik, WS 2018/2019
Ziel der Modellierung von Beleuchtung Baut auf dem Kapitel zu Licht und Farben auf. In die 3D-Szene werden Lichtquellen eingebracht. Die Ausbreitung des von diesen Lichtquellen abgestrahlten Lichts soll so modelliert werden, dass für den Betrachter der gerenderten Szene ein möglichst realistischer Eindruck entsteht. Letzlich müssen für die sichtbaren Punkte auf der Oberfläche der Objekte in der Szene Werte für Intensität und Farbe berechnet werden.
Einteilung der Beleuchtungsmodelle Lokale Beleuchtungsmodelle Nur die direkte Beleuchtung durch Lichquellen wird berücksichtigt. Indirekte Beleuchtung durch Reflexion an Objekten der Szene oder die Verdeckung von Lichtquellen durch Objekte wird nicht berücksichtigt. Beispiele: Modelle von Lambert und Phong Globale Beleuchtungsmodelle Auch indirekte Beleuchtung durch Reflexion an Objekten und Verdeckung wird mit berücksichtigt. Beispiele: Ray Tracing und Radiosity
Abgrenzung zwischen Beleuchtungsmodellen und Shading Beim Shading geht es darum, wie ein bestimmtes Beleuchtungsmodell beim Rendern einer 3D-Szene angewendet wird. Anders ausgedrückt: Beleuchtung erfolgt für die Punkte der 3D-Szene. Shading erfolgt für die Punkte im 2D-Bild der Szene.
Interaktion von Licht mit Objektoberflächen Die Beschaffenheit der Oberfläche eines Objekts in der 3D-Szene beeinflusst die weitere Ausbreitung des Lichts, das auf sie fällt. In der Realität findet eine Mischung aus: Reflexion Absorption Transmission statt. Wir konzentrieren uns im Folgenden auf die Reflexion.
Extremfall 1: ideal spiegelnde Oberflächen n θ l θ r O Im Winkel θ l gegenüber der Normale n einfallendes Licht wird an der Oberfläche O ausschließlich im Winkel reflektiert. θ r = θ l
Extremfall 2: vollkommen diffuse Reflexion n θ l O Im Winkel θ l gegenüber der Normale n einfallendes Licht wird gleichmäßig in alle Richtungen reflektiert. Dies entspricht extrem matten Oberflächen.
Zwischen den beiden Extremfällen n θ l O Im Winkel θ l gegenüber der Normale n einfallendes Licht wird gemäß einer oberflächenspezifischen Verteilung p(θ l, θ r ) in die verschiedenen Ausfallwinkel θ r reflektiert. Die Verteilung wird mit der bi-directional reflection distribution function (BRDF) beschrieben. Im 3D benötigt man für das ein- bzw- ausfallende Licht noch je einen weiteren Winkel ϕ l und ϕ r. Für reale Oberflächen bestimmt man die BRDF näherungsweise durch Messungen.
Modellierung von Lichtquellen Programmbibliotheken bieten in der Regel eine Reihe typischer Lichquellen an. Im Folgenden sind beispielhaft die Eigenschaften einiger solcher typischer Lichtquellen angegeben.
Ambientes Licht (Streulicht) Repräsentiert Licht, das in einer 3D Szene durch mehrfache Reflexion und/oder Transmission an verschiedenen Objekten nahezu überall vorhanden ist. Es kommt aus allen Richtungen mit der gleichen Intensität.
Punktförmige Lichtquellen Die Beschreibung erfolgt durch Angabe der Position p im Raum und der Farbe des ausgesendeten Lichts. Das Licht breitet sich von p aus in alle Richtungen aus. Die Intensität des Lichts nimmt mit zunehmender Entfernung d von p immer weiter ab (Dämpfung). Der Dämpfungsfaktor hat folgende Gestalt: ( ) 1 f = min c 1 + c 2 d + c 3 d 2, 1 Die Konstanten c 1, c 2, c 3 können vom Anwender vorgegeben werden.
Richtungslicht O Man kann es sich als eine unendlich weit entfernte punktförmige Lichtquelle vorstellen. Dadurch trifft das Licht jeden Punkt der Oberfläche eines Objekts O in der 3D-Szene aus der gleichen Richtung. Es muss daher keine Neuberechnung des Vektors des einfallenden Lichts für jeden Punkt erfolgen. Die Beschreibung erfolgt über die Richtung des Lichts sowie dessen Intensität und Farbe.
Das Beleuchtungsmodell von Lambert l n θ l O Es beschreibt den Effekt der diffusen Reflexion an Oberflächen. Lamberts Gesetz für die Intensität des diffus reflektierten Lichts I d = I l r d max(0, l, n ) Dabei sind: l und n Einheitsvektoren Il die Intensität des aus Richtung l einfallenden Lichts rd der diffuse Reflexionskoeffizient der Oberfläche
Das Beleuchtungsmodell von Phong n l r θ l α v Es beschreibt den Effekt der unvollkommen spiegelnden Reflexion an Oberflächen. Die Intensität des in Richtung v reflektierten Lichts hängt vom Winkel α ab. Es gilt die Formel: O I s = I l r s max(0, r, v ) γ Dabei sind: l, n, r und v Einheitsvektoren Il die Intensität des aus Richtung l einfallenden Lichts r s der spiegelnde Reflexionskoeffizient der Oberfläche
Gesamtintensität des reflektierten Lichts Für die Intensität des in Richtung v reflektierten Lichts haben wir bisher die Beiträge I d und I s. Aus der ambienten Beleuchtung kommt noch der Beitrag I a = r a I A, wobei I A die Intensität des ambienten Lichts ist und r a der ambiente Reflexionskoeffizient der Oberfläche. Falls die Oberfläche selbst Licht aussendet, kommt noch ein Beitrag I e hinzu. Insgesamt erhält man somit: I ges = I d + I s + I a + I e Im RGB-Modell wird auf diese Weise jeder Farbkanal separat betrachtet. Jeder Farbkanal hat dabei seine eigenen Reflexionskoeffizienten.
Ausblick: Radiosity-Modell Bisher wurde nur das Licht betrachtet, welches von Lichquellen direkt auf Oberflächen von Objekten fällt. Reflektiertes Licht wird lediglich als ambientes Licht konstanter Intensität berücksichtigt. Im folgenden Beispiel sollte auf der Wand w 2 ein schrittweiser Übergang von hell nach dunkel zu sehen sein. bisher: im Radiosity-Modell: w 1 w 2 w 1 w 2
Ausblick: Ray Tracing Das durch ein Pixel das Ausgaberasters zum Beobachtungspunkt p kommende Licht wird rekursiv durch die Szene zurückverfolgt. Dies ermöglicht die Berechnung realistisch wirkender 2D-Darstellungen der 3D-Szene mit Spiegelungen von Objekten in der Oberfläche anderer Objekte, Schatten usw. Das Verfahren ist sehr rechenaufwendig. p Ausgaberaster 3D-Szene
Was können wir bisher leisten? Zur Bestimmung von Farbe und Intensität eines Pixels bei der Rasterung sucht man zuerst den auf dieses Pixel projizierten Objektpunkt p und berechnet dann für p Farbe und Intensität mit einem der Beleuchtungsmodelle. Dieses Vorgehen hat aber folgende Nachteile: Das Rastern kommt in der Rendering-Pipeline ganz zum Schluss. Zu diesem Zeitpunkt sollte idealerweise schon feststehen, welche Intensität und Farbe der darzustellende Punkt haben muss. Es ist sehr rechenaufwendig. Im Folgenden werden zwei Heuristiken vorgestellt, die mit weniger Rechenaufwand auskommen.
Flat Shading Für jedes Dreieck D der 3D-Szene wird das Beleuchtungsmodell nur ein Mal an einem einzigen ausgewählten Punkt von D angewendet. Alle Punkte von D bekommen dann die so berechnete Farbe und Intensität zugewiesen. Vorteil: geringer Rechenaufwand Nachteil: Knicke an Übergängen zwischen Dreiecken, die eine glatte Oberfläche näherungsweise darstellen sollen glatte Oberfläche Näherung durch Dreiecke
Gouraud-Shading (1) Ziel: der Übergang von einem Dreieck zum nächsten soll geglättet werden. Dazu wird das Beleuchtungsmodell an den Ecken jedes Dreiecks unter Verwendung der Normalenvektoren n 1, n 2 und n 3 angewendet. Mit Hilfe baryzentrischer Koordinaten wird dann auf dem Dreieck ein Farbverlauf beschrieben. n 2 n 3 n 1 glatte Oberfläche Näherung durch Dreiecke
n 1 n 2 Gouraud-Shading (2) Falls kein Zugriff auf die Normalen der glatten Oberfläche möglich ist, behilft man sich mit dem Vektor n, der sich aus den Normalen der Dreiecke, die in einer Ecke zusammentreffen, gebildet wird. Bei Verwendung von Einheitsvektoren ergibt sich: n = n 1 + n 2 + n 3 + n 4 + n 5 n 1 + n 2 + n 3 + n 4 + n 5 n n 5 n 3 n 4
Gouraud-Shading (3) Vorteile des Verfahrens: fügt sich gut in die Rendering-Pipeline ein effizient hinreichende Glättung an den Übergängen der Dreiecke Nachteile des Verfahrens: letztlich eine Heuristik beispielsweise wird die Spiegelung von Lichtquellen in Objekten oft nicht korrekt dargestellt p