Beleuchtungsmodelle - Universität Ulm
Beleuchtungsmodelle - Universität Ulm
Beleuchtungsmodelle - Universität Ulm
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
EINLEITUNG<br />
Dieses Skriptum soll einen Überblick über die in der Computergrafik<br />
verwendeten <strong>Beleuchtungsmodelle</strong> geben. Dabei werden<br />
zuerst grundlegende physikalische Eigenschaften des Lichts behandelt.<br />
Im folgenden werden dann die wichtigsten lokalen <strong>Beleuchtungsmodelle</strong><br />
und die dort verwendeten Schattierungsmodelle<br />
vorgestellt. Anschließend werden die beiden globalen <strong>Beleuchtungsmodelle</strong><br />
Raytracing und Radiosity erläutert und die Vor- und<br />
Nachteile der beiden Verfahren miteinander abgewogen.<br />
1. PHYSIKALISCHE GRUNDLAGEN<br />
1.1 Licht – Teilchen oder Welle ?<br />
Licht kann mit verschiedenen Frequenzen vorkommen. Dabei<br />
kann nur ein kleiner Teil des in der Natur vorkommenden Lichts<br />
vom menschlichen Auge wahrgenommen werden. Dieser Bereich<br />
bewegt sich zwischen ca. 400 nm (ultraviolett) und 800 nm (infrarot).<br />
Des weiteren hat man bis heute noch kein einzelnes Modell<br />
gefunden, welches die Eigenschaften des Lichts erklären kann. Es<br />
gibt Versuche mit Licht, deren Ergebnis nur damit erklärt werden<br />
kann, dass Licht aus Teilchen besteht, welche eine Energie von<br />
W = h ⋅ f (1)<br />
haben.<br />
Dabei ist h = 6,625*10 -34 Js das Planksche Wirkungsquantum und<br />
f die Frequenz des Lichts. Aus der Formel (1.1) ist auch zu erkennen,<br />
dass die Energie des Lichtes mit zunehmender Frequenz<br />
größer wird.<br />
Zum anderen gibt es auch Versuche wie z.B. das Doppelspaltexperiment,<br />
welches nur mit dem Modell des Lichts als Welle erklärt<br />
werden kann. Dieses Phänomen ist in der Literatur als Welle-<br />
Teilchen-Dualismus bekannt. Die Ausbreitungsgeschwindigkeit<br />
des Lichts c beträgt 3*10 8 m/s. Die Wellenlänge λ kann mittel<br />
folgender Formel in die Frequenz f des Lichts umgerechnet werden:<br />
c<br />
f = (2)<br />
λ<br />
1.2 Raumwinkel<br />
In der Ebene wird der Bogenwinkel als Verhältnis des Bogens B<br />
zum Radius R definiert. Analog dazu definiert man den Raumwinkel<br />
als Verhältnis der durch A überdeckten Fläche zum Quadrat<br />
des Kugelradius. Der Raumwinkel wird statt wie in der Ebene<br />
nicht in Grad, sondern in sr = steradiant „stereo radiant“ gemessen.<br />
<strong>Beleuchtungsmodelle</strong><br />
Ulrich Weidenbacher<br />
Medieninformatik<br />
<strong>Universität</strong> <strong>Ulm</strong><br />
Abert-Einstein-Allee 11<br />
89069 <strong>Ulm</strong><br />
uw1@informatik.uni-ulm.de<br />
Abb. 1 [1]<br />
A 2<br />
=<br />
r<br />
[ sr]<br />
Ω (3)<br />
1.3 Lichttechnische Größen<br />
Die Lichttechnischen Größten lassen sich grob in 2 Klassen unterteilen.<br />
Die raumwinkelunabhängigen Größen und die raumwinkelabhängigen<br />
Größen.<br />
Tabelle 1: Raumwinkelunabhängige Größen [1]<br />
Bezeichnung Formel Einheit<br />
Strahlungsenergie Q Joule [J]<br />
Strahlungsleistung = [ W ]<br />
Beleuchtungsstärke<br />
dQ<br />
Φ Lumen [lm]<br />
dt<br />
dΦ<br />
E = Lux [lx]<br />
dA<br />
Tabelle 2: Raumwinkelabhängige Größen [1]<br />
Bezeichnung Formel Einheit<br />
Strahlstärke<br />
Strahldichte<br />
dΦ<br />
I = Candela [cd]<br />
dΩ<br />
dΦ<br />
L =<br />
dA⋅<br />
cos<br />
( α ) ⋅dΩ<br />
Candela/m2<br />
[cd/m 2 ]
Die Strahlungsenergie beschreibt die Menge an Lichtenergie, die<br />
von einer Lichtquelle abgegeben wird. Die Strahlungsleistung<br />
bezieht sich dabei zusätzlich auf die Zeit, in der diese Lichtenergie<br />
abgegeben wurde. Die Strahlungsleistung wird in Lumen gemessen.<br />
Die Beleuchtungsstärke beschreibt, wie viel Strahlungsleistung<br />
auf eine bestimmte Fläche trifft. Dabei ist zu beachten,<br />
dass die Beleuchtungsstärke mit dem Quadrat der Entfernung zur<br />
Strahlungsquelle abnimmt (photometrisches Entfernungsgesetzt).<br />
Die Raumwinkelabhängigen Größen haben dagegen die Eigen-<br />
schaft, dass sie nicht abhängig von der Entfernung zur Lichtquelle<br />
sind. Die Strahlstärke gibt an wieviel Lumen pro Steradiant abgestrahlt<br />
werden. Sie wird in Candela gemessen. Candela kommt aus<br />
dem lateinischen und bedeutet Kerze. Die Flamme einer Kerze<br />
strahlt genau ein Candela in alle Richtungen ab. Diese Größe ist<br />
nur sinnvoll für punktförmige Lichtquellen. Die Strahldichte gibt<br />
den Beitrag des Flächenelements dA einer Lichtquelle unter dem<br />
Winkel α zur Strahlungsstärke I an. Mit der Strahldichte kann<br />
man z.B. angeben wieviel Licht von einer leuchtenden Kugeloberfläche<br />
auf das Auge des Betrachters fällt. Diese Größe wird später<br />
beim Radiosityverfahren wichtig.<br />
Tabelle 3: Strahldichten [2]<br />
Straßenbeleuchtung 2 cd/m 2<br />
Weißes Papier (400 Lux) 100 cd/m 2<br />
Mond 2500 cd/m 2<br />
Leuchtstofflampe 8000 cd/m 2<br />
Glühfaden 7 Mio cd/m 2<br />
Sonne 1650 Mio cd/m 2<br />
1.4 BRDF: Bidirectional Reflectance<br />
distribution Function<br />
Die BRDF wurde 1977 amtlich definiert vom National Bureau of<br />
Standards (USA) zur Vereinheitlichung von Reflexionsdarstellungen<br />
und –berechnungen. Sie beschreibt das Verhältnis<br />
aus der differenziellen Strahlungsdichte dL1 in<br />
Betrachtungsrichtung und der differentiellen Bestrahlungsstärke<br />
dE2, die aus der Beleuchtungsrichtung auf die Oberfläche wirkt.<br />
dL1<br />
( Θ2<br />
, Φ 2;<br />
Θ1,<br />
Φ1)<br />
( Θ2<br />
, Φ 2;<br />
Θ1,<br />
Φ1)<br />
=<br />
dE ( Θ , Φ )<br />
ρ (4)<br />
2<br />
2<br />
2<br />
Abb. 2: Geometrie der BRDF [1]<br />
Aus der BRDF sind mehrere für das Verständnis der <strong>Beleuchtungsmodelle</strong><br />
wichtige Eigenschaften abzuleiten. Zum einen ändert<br />
sich f nicht, wenn man Einfallswinkel und Ausfallswinkel<br />
Vertauscht (Reziprozität). Diesen Effekt macht man sich vor allem<br />
beim Raytracing zunutze. Zum anderen stellt man fest, dass<br />
sich zwei Lichtstrahlen, die im selben Punkt auf ein Material treffen,<br />
nicht stören. Des weiteren kann man drei weitere Begriffe im<br />
Zusammenhang mit der BRDF einführen. Bei anisotropen Materialien<br />
ändert sich f auch, wenn man das Material um seine Normale<br />
rotiert. Bei isotropen Materialien ist dies nicht der Fall. Falls<br />
einfallendes Licht in jede Richtung gleich stark reflektiert wird,<br />
nennt man das Material einen Lambert-Reflektierer.<br />
1.5 Lichtquellen<br />
Man unterscheidet grob vier verschiedene Arten von Lichtquellen.<br />
Die Simulation solcher Lichtquellen in der Computergrafik ist<br />
unterschiedlich komplex. Folgende Aufzählung ist nach<br />
aufsteigender Komplexität geordnet:<br />
1.5.1 Umgebungslicht (ambient light)<br />
Umgebungslicht ist im Gegensatz zu den anderen hier<br />
beschriebenen Lichtquellen eine indirekte Lichtquelle. D.h. das<br />
Licht hat keine Richtung, sondern es kommt aus allen Richtungen.<br />
Dieses Licht entsteht durch Reflexion des Lichts einer anderen<br />
Lichtquelle an matten Oberflächen und bewirkt eine gewisse<br />
Grundhelligkeit in Bereichen, die nicht direkt von anderen<br />
Lichtquellen beleuchtet werden.<br />
1.5.2 Entfernte Lichtquellen (distant lights)<br />
Entfernte Lichtquellen sind auch Punktlichtquellen, welche sich<br />
aber so weit vom Objekt entfernt befinden, das ihre Lichtstrahlen<br />
quasi parallel beim Objekt eintreffen. Ein Beispiel hierfür wäre<br />
das Sonnenlicht, welches die Erde beleuchtet.<br />
1.5.3 Punktlichtquellen (point lights)<br />
Punktlichtquellen zeichnen sich dadurch aus, dass die Lichtquelle<br />
selber relativ klein im Vergleich zum Objekt ist. Ein Beispiel<br />
hierfür wäre eine Glühlampe ohne Begrenzung des Lichtkegels.<br />
1.5.4 Spotlichter (spot lights)<br />
Eine Spotlichtquelle emitiert Licht nur in einem begrenzten Kegel<br />
mit abnehmender Intensität im Verhältnis zu den Rändern hin.
2. LOKALE BELEUCHTUNGMODELLE<br />
2.1 Strategien<br />
Um die im letzten Abschnitt genannten Lichtquellen in der<br />
Computergrafik zu modellieren gibt es nun verschiedene Ansätze.<br />
Umgebungslicht ist eine relativ einfach nachzubildende<br />
Lichtquelle, da hier nur die innewohnende Farbe des Objektes für<br />
jeden Punkt mit der Stärke des Umgebungslichts multipliziert<br />
wird.<br />
Entfernte Lichtquellen sind ebenfalls noch relativ leicht<br />
umzusetzen, da ihr Licht ja parallel einfällt und somit der Winkel<br />
zwischen Objektnormale und einfallendem Lichtstrahl nur durch<br />
die Objektnormale bestimmt wird und nicht durch die Position<br />
des Objekts. Ist also für ein Objekt die Beleuchtung berechnet, so<br />
kann die Beleuchtung für gleiche Objekte, die sich an einem<br />
anderen Ort im Raum befinden übernommen werden. Um<br />
Schattenbildung zu vermeiden, wird die Lichtquelle in diesem<br />
Fall immer genau in den Blickpunkt gesetzt. Dies bezeichnet man<br />
als „head light“. Da die Beleuchtungsstärke quadratisch mit der<br />
Entfernung abnimmt, simuliert man dies durch eine<br />
Abschwächung der Intensität des Objektes. Dieses Verfahren wird<br />
als „depth cueing“ bezeichnet.<br />
Um Punktlichtquellen nachbilden zu können muss ein etwas<br />
komplexeres Modell entwickelt werden. Die im nächsten Kapitel<br />
besprochenen lokalen <strong>Beleuchtungsmodelle</strong> sind in der Lage, eine<br />
solche Lichtquelle nachzubilden.<br />
Spotlichter erfordern einen höheren Aufwand um mit lokalen<br />
<strong>Beleuchtungsmodelle</strong>n nachgebildet zu werden. Globale<br />
<strong>Beleuchtungsmodelle</strong> wie Raytracing und Radiosity sind<br />
letztendlich in der Lage jede erdenkliche Lichtquellenart<br />
nachzubilden.<br />
2.2 Eigenschaften<br />
Da eine exakte Nachbildung der Beleuchtung wie sie in der Natur<br />
vorkommt leider zu rechenaufwendig für die CPU ist, hat man<br />
verschiedene Modelle entwickelt, die zum einen ein relativ<br />
realistisches Ergebnis liefern und zum anderen wenig<br />
Rechenleistung in Anspruch nehmen. Die stärkste Einschränkung<br />
macht man dadurch, dass man nur den Einfluss emittierender<br />
Lichtquellen in die Szene mit einbezieht. Es werden also Objekte,<br />
die Licht reflektieren nicht als eigene Lichtquellen behandelt, was<br />
man bei genauer Einhaltung der physikalischen Gesetze eigentlich<br />
tun müsste. Bei den globalen <strong>Beleuchtungsmodelle</strong>n (Kapitel 3)<br />
hingegen wird dies jedoch durchaus berücksichtigt. Des weiteren<br />
werden auch keine Schatten berücksichtig, indem man ein „head<br />
light“ verwendet. Die lokalen <strong>Beleuchtungsmodelle</strong> sind darauf<br />
abgestimmt, das sie in Echtzeit berechnet werden können und<br />
finden hauptsächlich in 3D Computerspielen ihre Anwendung.<br />
2.3 Ambiente Beleuchtung<br />
Ambiente Beleuchtung ist das einfachste Beleuchtungsmodell, das<br />
man sich vorstellen kann, da hier nur von einer indirekten Lichtquelle<br />
ausgegangen wird. Indirektes Licht kommt aus allen Richtungen,<br />
d.h. man musst die Richtung des einfallenden Lichtes<br />
nicht berechnen, sondern nimmt an, dass das Licht an jedem<br />
Punkt eines Objektes mit gleicher Intensität eintrifft. Man bezeichnet<br />
die Intensität des ambienten Lichtes mit I a. Da jedes Objekt<br />
verschieden stark reflektieren kann, wird jedem Objekt eine<br />
Konstante k a zugewiesen. Jetzt können wir eine sog. Beleuch-<br />
tungsgleichung für das Modell der ambienten Beleuchtung aufstellen:<br />
I I ⋅<br />
= (5)<br />
a a k<br />
Abb. 3: ambiente Beleuchtung [3]<br />
In Abb. 3 ist zu sehen, dass dieses Beleuchtungsmodell noch kein<br />
besonders realistisches Ergebnis liefert. Deshalb erweitern wir<br />
nun das Modell um eine weitere Komponente.<br />
2.4 Diffuse Reflexion<br />
Das Modell der diffusen Reflexion setzt nun statt einer indirekten<br />
Lichtquelle eine Punktförmige Lichtquelle voraus. Somit<br />
verändert sich die Helligkeit jedes Punktes des Objekts je nach<br />
Entfernung und Richtung zur Lichtquelle. Da bei diesem Modell<br />
alle Flächen als diffuse Lambert-Reflektierer angenommen sind,<br />
werde die eintreffenden Lichtstrahlen in alle Richtung gleichstark<br />
reflektiert. Das bedeutet, dass die Reflexion unabhängig vom<br />
Beobachtungspunkt ist, jedoch abhängig vom Winkel θ zwischen<br />
der Flächennormal und dem einfallenden Lichtstrahl.<br />
Abb. 4: Lambert-Reflektor [5]
Da ein unter dem Winkel θ zur Normale einfallender Lichtstrahl<br />
eine um den Faktor 1/cosθ größere differenzielle Fläche trifft als<br />
ein parallel zur Normale einfallender Lichtstrahl, nimmt die<br />
Lichtintensität der beleuchteten Fläche entsprechend um dem<br />
Faktor cosθ ab (Siehe Abb.5).<br />
Abb. 5: Lambertsches Kosinus Gesetz [3]<br />
Die Beleuchtungsgleichung zu diesem Modell lautet:<br />
⋅ ⋅cosθ<br />
I I (6)<br />
= p d k<br />
I p ist dabei die Intensität der Punktförmigen Lichtquelle, k d ist der<br />
diffuse Reflexionskoeffizient. Er hängt vom Material ab und muss<br />
zwischen 0 und 1 liegen. Wenn man davon ausgeht, dass die<br />
Vektoren N und L (Siehe Abb.4) normalisiert sind, so lässt sich<br />
cosθ leicht als Skalarprodukt von N und L berechnen. Damit lässt<br />
sich Formel (6) umschreiben in<br />
I p d<br />
= I ⋅ k ⋅(<br />
N ⋅ L)<br />
(7)<br />
Wendet man dieses Beleuchtungsmodell an, so stellt man fest,<br />
dass Bereiche, die nur sehr schwach von Lichtstrahlen getroffen<br />
werden fast schwarz erscheinen. Da diese Bereiche aber in<br />
Wirklichkeit durch indirektes Licht immer eine gewisse<br />
Grundhelligkeit besitzen, kombiniert man die beiden Modelle<br />
miteinander, indem man den ambienten und den diffusen Anteil<br />
zusammenaddiert:<br />
I a a p d<br />
= I ⋅k<br />
+ I ⋅k<br />
⋅(<br />
N ⋅ L)<br />
(8)<br />
Um dem Modell noch mehr Tiefeneindruck zu verschaffen, fügt<br />
man noch eine weitere Funktion hinzu:<br />
I a a<br />
p d<br />
= I ⋅k<br />
+ f ( d)<br />
⋅ I ⋅k<br />
⋅(<br />
N ⋅ L)<br />
(8)<br />
Wie schon in Kapitel 1 besprochen nimmt die Intensität einer<br />
beleuchteten Fläche mit dem Abstand zur Lichtquelle quadratisch<br />
ab. Deshalb verwende man häufig folgende Funktion:<br />
1<br />
f ( d)<br />
= (9)<br />
2<br />
r<br />
Abb. 6: Diffuse Reflektion [3]<br />
2.5 Spiegelnde Reflexion<br />
Die meisten Materialien sind, wie beim diffusen Modell<br />
angenommen, keine perfekten Lambert-Reflektoren. Dieses<br />
bedeutet, dass Licht eben nicht gleichmäßig in alle Richtungen<br />
reflektiert wird. Es gibt bestimmte Einfallswinkel, bei denen das<br />
reflektierte Licht nicht mehr nach allen Richtungen gestreut wird,<br />
sondern nur noch in einem bestimmten Bereich reflektiert wird<br />
(Abb. 9). Im Extremfall wird das Licht nur noch in eine Richtung<br />
reflektiert. Dieser Effekt kann bei einem Spiegel beobachtet<br />
werden (Abb. 8).<br />
Abb. 7+8: Diffuse und optimal spiegelnde Reflexion [6]<br />
Abb. 9: nicht optimal spiegelnde Reflexion [6]<br />
Abb.10: Kombination aus diffuser und nicht optimal<br />
spiegelnder Reflexion [6]
Viele Materialien reflektieren Licht nicht nur direkt an der<br />
Oberfläche, sonder auch noch in einer zweiten Schicht darunter.<br />
Die oberste Schicht verhält sich bei glänzendem Material wie ein<br />
nichtoptimaler Spiegeln. Die Schicht darunter verhält sich wie ein<br />
Lambert-Reflektor. Es liegt also nahe, die Modelle diffuse<br />
Reflexion und spiegelnde Reflexion zu kombinieren (Abb. 10).<br />
Zuerst müssen wir aber noch eine Möglichkeit finden, die<br />
spiegelnde Reflexion mathematisch umzusetzen. Phong Bui-<br />
Tuong ging davon aus, dass die Reflektion maximal wird, falls der<br />
Einfallswinkel gleich dem Ausfallswinkel ist. Weicht der<br />
Ausfallswinkel θ um den Winkel ψ ab, so nimmt die Reflektion<br />
rapide ab. Der Term cos α ψ approximiert laut Phong dieses<br />
Verhalten sehr gut. Dabei bestimmt α die stärke der Abnahme bei<br />
steigendem ψ (siehe Abb 11 und 12).<br />
Abb. 11: [5]<br />
Abb. 12 [5]<br />
Des weiteren benötigt man noch eine weitere Funktion ω(θ,λ),<br />
welche als Spiegelreflexionskoeffizient bezeichnet wird. Diese<br />
Funktion hängt vom Material ab und bestimmt die Stärke der<br />
Spiegelung in Abhängigkeit vom Einfallswinkel θ und der<br />
Wellenlänge λ des Lichts. Somit lässt sich nun folgende Formel<br />
aufstellen:<br />
α<br />
I I ⋅ω(<br />
θ , λ)<br />
⋅cos<br />
( ψ ) (10)<br />
S<br />
= L<br />
Wenn wird nun nach unserer o.g. Überlegung diffuse Reflexion<br />
und spiegelnde Reflexion noch kombinieren kommen wir zu<br />
folgendem Ergebnis:<br />
α<br />
[ k cosθ<br />
k cos ψ ]<br />
I ka<br />
I a + f ( d)<br />
I L d + s<br />
= (11)<br />
Den Spiegelreflexionskoeffizient ω(θ,λ) nimmt man als konstant<br />
k s an und legt ihn experimentell so fest, dass ästhetisch<br />
ansprechende Resultate entstehen.<br />
2.6 Schattierungsmodelle<br />
Wir haben nun eine Formel, mit der wir die Beleuchtung an einem<br />
Punkt des Objektes relativ gut approximieren können. Leider ist<br />
es zu rechenaufwendig für echtzeitgenerierte Bilder, die Normale<br />
an jedem Punkt zu bestimmen und dort das Beleuchtungsmodell<br />
anzuwenden. Stattdessen verwendet man Polygongitter und<br />
interpoliert die Beleuchtung zwischen den einzelnen Eckpunkten<br />
entsprechend. Dabei gibt es mehrere Verfahren, die ich nun im<br />
folgenden darstellen werde.<br />
2.7 Konstante Schattierung<br />
Das einfachste und schnellste Schattierungsmodell ist die<br />
konstante Schattierung. Hier bestimmt man die Normale des<br />
jeweiligen Polygons einmal, berechnet damit das<br />
Beleuchtungsmodell und färbt dann das komplette Polygon in der<br />
berechneten Intensität ein. Wie man sich leicht vorstellen kann,<br />
hat diese Methode auch einen gravierenden Nachteil: zwischen<br />
den einzelnen Polygonkanten gibt es starke Intensitätssprünge,<br />
welche vor allem bei einer kleinen Zahl von Polygonen sehr<br />
störend auf den Betrachter wirken.<br />
Abb. 13: konstante Schattierung [4]<br />
2.8 Gouraud-Schattierung<br />
Die starken Sprünge an den Kanten versucht man nun zu<br />
eliminieren, indem man zuerst aus den Flächennormalen neue<br />
Normalen berechnet, die genau an den Kreuzungspunkten der<br />
Polygone sitzen. Dazu summiert man einfach die Normalen der an<br />
den Kreuzungspunkt angrenzenden Polygone auf und Teilt durch<br />
ihre Anzahl (vorrausgesetzt, dass die Normalen normiert sind).
Abb. 14: Mittelung der normalisierten Polygonnormalen [5]<br />
E<br />
n<br />
+ n<br />
+ n<br />
4<br />
+ n<br />
a b c d<br />
= (12)<br />
Im nächsten Schritt berechnet man das <strong>Beleuchtungsmodelle</strong> mit<br />
den so gewonnenen Normalen und interpoliert die Intensität<br />
zunächst entlang der Kanten und dann zwischen den Kanten<br />
entlang jeder Rasterzeile (Abb. 15). Mit diesem Modell lassen<br />
sich schon wesentlich realistischere Ergebnis erzielen als mit<br />
konstanter Schattierung.<br />
Abb. 15: Gouraud-Schattierung [4]<br />
2.9 Phong-Schattierung<br />
Das folgende Phong Schattierungsmodell darf nicht mit dem<br />
Phong Beleuchtungsmodell verwechselt werden, es handelt sich<br />
hierbei um zwei komplett verschiedene Modelle.<br />
Der Unterschied zur Gouraud-Schattierung besteht hauptsächlich<br />
darin, dass nicht die Intensität zwischen den Normalen interpoliert<br />
wird, sonder die Normalen selber werden interpoliert.<br />
Anschließend wird für jede interpolierte Normale das<br />
Beleuchtungsmodell separat berechnet. Dies erfordert natürlich<br />
einen wesentlich höheren Rechenaufwand, liefert dafür aber auch<br />
bessere Ergebnisse als Gouraud.<br />
Abb.16: Phong-Schattierung [4]<br />
2.10 Vergleich Gouraud und Phong<br />
Die Unterschiede zwischen Phong und Gouraud machen sich vor<br />
allem beim Glanzpunkt bemerkbar. Fällt ein Glanzpunkt direkt in<br />
die Mitte eines Polygons, so wird er vom Gouraud Modell unterdrückt,<br />
da an dieser Stelle ja nur eine Interpolation der Randintensitäten<br />
stattfindet (Abb. 17C). Fällt ein Glanzpunkt direkt auf ein<br />
Polygoneck, so kommt bei Gouraud durch Interpolation zu einem<br />
Verschmiereffekt (Abb. 17A).<br />
Abb. 17: Vergleich Gouraud vs. Phong Schattierung [3]<br />
A: Gouraud B: Phong C: Gouraud D: Phong<br />
3. GLOBALE BELEUCHTUNGSMODELLE<br />
3.1 Eigenschaften<br />
Globale <strong>Beleuchtungsmodelle</strong> wie Raytracing und Radiosity<br />
berücksichtigen nicht nur emittierende Lichtquellen, sonder<br />
beziehen auch reflektiertes und transmittiertes Licht mit in ihre<br />
Berechnungen ein. Dadurch lassen sich qualitativ wesentlich<br />
bessere Ergebnisse erzielen als mit lokalen<br />
<strong>Beleuchtungsmodelle</strong>n. Jedoch wie schon erwähnt steigt der<br />
Rechenaufwand dadurch auch beträchtlich an. Dies hat zur Folge,<br />
dass ein einzelnes Bild bei entsprechender Größe und<br />
Komplexität schon mehrere Stunden Rechnzeit benötigt.<br />
3.2 Raytracing<br />
Die Grundidee des Raytracing beruht darauf, einen Lichtstrahl<br />
von der Lichtquelle aus bis zur Kamera bzw. zum Auge zu<br />
verfolgen. Dabei kann er auf seinem weg reflektiert, gebrochen<br />
und transmittiert werden (Abb. 18). Für diffuse Reflektionen ist<br />
Raytracing daher nicht geeignet, da in diesem Fall ein<br />
eintreffender Lichtstrahl in alle (also unendlich viele) Richtungen<br />
reflektiert wird und es dann nicht mehr möglich ist die Strahlen<br />
weiterzuverfolgen. Raytracing basiert also nur auf idealer<br />
Spiegelung, Brechung und Transmission.<br />
Abb. 18: Weg eines Lichtstrahls<br />
Da ein sehr großer Teil des Lichtes gar nicht im Auge ankommt<br />
kann man den Rechenaufwand etwas einschränken. Dabei nutzt<br />
man die Reziprozität (Kapitel 1.4) des Lichtes aus, welche einem<br />
erlaubt, die Richtung des Lichtstrahls umzukehren. Man verfolgt
also nicht mehr das Licht von der Quelle bis zum Auge, sondern<br />
man sendet vom Auge aus Lichtstrahlen durch jeden Pixel des<br />
Bildschirms in die Szene und verfolgt sie so lange, bis sie entweder<br />
kein Objekt mehr schneiden, oder die zurückgelegte Strecke<br />
eine gewisse Grenze erreicht. Diese Maßnahme hat allerdings zur<br />
Folge, dass Raytracing ein blickpunktabhängiges Verfahren ist,<br />
was bedeutet, dass bei einem Wechsel des Blickpunktes eine<br />
komplette Neuberechnung der Szene notwendig wird. Zur Berechnung<br />
der Schatten werden sog. Schattenstrahlen jeweils vom<br />
Schnittpunkt des Objekt mit dem Lichtstrahl zur Lichtquelle geschickt.<br />
Schneiden diese Strahlen auf ihrem Weg ein Objekt, so<br />
liegt der Ausgangspunkt im Schatten. Falls der Punkt nicht im<br />
Schatten liegt, wird an dieser Stelle das lokale Beleuchtungsmodell<br />
nach Phong (siehe Formel 11) mit einer Erweiterung um den<br />
Transmissions- und den Reflexionsanteil (I t und I r) berechnet.<br />
I = k I + k I cos θ + k I + k I (13)<br />
a<br />
a<br />
d<br />
L<br />
Dann werden die Vektoren für Reflektion und Brechung ermittelt<br />
und es werden in diese Richtungen neue Lichtstrahlen ausgesendet.<br />
Falls diese Lichtstrahlen wieder Objekte schneiden, beginnt<br />
der Prozess von neuem. Ist die Verfolgung eines Lichtstrahls<br />
komplett abgeschlossen, werden die durch das lokale Beleuchtungsmodell<br />
berechneten Intensitäten entsprechend gewichtet<br />
addiert und ergeben so die Gesamtintensität des Bildpunktes.<br />
Abb. 20: Umkehrung der Strahlen<br />
Abb. 21: Abtastung des Bildschirms und Verlauf<br />
Schattenstrahlen (schwarze Pfeile)<br />
Lichtquelle<br />
Dieses Verfahren lässt sich elegant mit einem rekursiven<br />
Algorithmus umsetzen:<br />
t<br />
t<br />
r<br />
r<br />
Pseudocode eines Raytracing Programms<br />
Für jede Zeile des Bildes<br />
Für jeden Pixel der Zeile<br />
Bestimme Strahl vom Auge zum Pixel<br />
Pixelfarbe = Raytrace(Strahl)<br />
Raytrace(Strahl)<br />
Für alle Objekte der Szene<br />
Wenn Strahl Objekt schneidet und Schnittpunkt ist<br />
bisher am nächsten<br />
notiere Schnitt<br />
Wenn kein Schnitt dann Ergebnis := Hintergrundfarbe<br />
sonst<br />
Ergebnis := Raytrace(reflektierten Strahl) +<br />
Raytrace(gebrochenem Strahl)<br />
Für alle Lichtquellen<br />
Für alle Objekte der Szene<br />
Wenn Strahl zur Lichtquelle Objekt schneidet<br />
Schleifenabbruch, nächste Lichtquelle<br />
Wenn kein Schnitt gefunden<br />
Ergebnis += lokale Beleuchtung<br />
Der Algorithmus bricht ab, falls eine gewisse Rekursionstiefe<br />
erreicht ist oder falls der Strahl kein reflektierendes bzw.<br />
transmitierendes Objekt mehr schneidet (meistens der<br />
Hintergrund).<br />
Abb. 22: Mit Raytracing erstellte Szene [3]<br />
3.3 Radiosity<br />
3.3.1 Grundidee<br />
Die Grundidee des Radiosity Modells beruht auf der Erhaltung<br />
der Lichtenergie in einer geschlossenen Szene. Dazu wird die
Szene in viele kleine Flächen zerlegt. Jede dieser Flächen kann<br />
nun Licht emittieren und Licht reflektieren.[3] Wenn wir nun jede<br />
dieser Flächen als opaken, diffusen Lambertschen Strahler betrachten,<br />
gilt für die Fläche i<br />
B = E +<br />
i<br />
i<br />
A<br />
n<br />
j<br />
i∑<br />
B j Fji<br />
j= 1 Ai<br />
ρ . (14)<br />
Bi bzw. Bj bezeichnen dabei die Strahlung der Flächenelemente i<br />
und j. Ei ist die Rate, mit der Fläche i Licht abstrahlt, ρi ist der<br />
Reflexionskoeffizient der Fläche i. Der Formfaktor Fji bezieht sich<br />
auf die gegenseitige Orientierung der beiden Flächen im Raum<br />
und berücksichtigt dabei auch eventuelle vorhandene<br />
Blockierungen durch andere Objekte.<br />
Da diese Gleichung für alle Flächenelemente gelöst werden muss,<br />
führt sie uns auf ein LGS, welches mittels dem Gauß-Seidel-<br />
Verfahren gelöst werden muss. Die Lösung gibt dann die<br />
Strahlungsintensität oder Radiosity jeder Fläche an, bei der ein<br />
Energiegleichgewicht in der Szene herrscht. Um eine glatte<br />
Schattierung der Flächen zu erreichen kann man aus den<br />
Intensitäten der Flächen Intensitäten für die Knoten berechnen<br />
und dann dazwischen ähnlich dem Schattierungsmodell von<br />
Gouraud interpolieren.<br />
Abb. 23: Aufteilung der Szene in Flächen [4]<br />
3.3.2 Berechnung der Formfaktoren<br />
Wie schon angesprochen beschreibt der Formfaktor die<br />
gegenseitige Orientierung zweier Flächenelemente zueinander.<br />
Auf die theoretische Herleitung möchte ich in diesem Kontext<br />
verzichten, sie kann in [3] nachgeschlagen werden. Nusselt<br />
entwickelte ein Verfahren zur Bestimmung der Formfaktoren,<br />
welche die gleichen Ergebnisse liefert wie das theoretische<br />
Modell, jedoch unter der Annahme, dass der Mittelpunkt eines<br />
Flächenelements die anderen Punkte charakterisiert.<br />
Abb. 23: Formfaktorbestimmung analytisch und numerisch<br />
K<br />
P<br />
Dazu projiziert man Aj auf eine Halbkugel mit Radius eins um den<br />
Mittelpunkt von Ai. Anschließend projiziert man diese Fläche<br />
orthogonal auf die Kreisfläche K. Der Formfaktor ergibt sich dann<br />
aus dem Quotienten von P und der Grundfläche K, welche in<br />
diesem Fall π wäre.<br />
Ein numerisches Verfahren zur Bestimmung des Formfaktors<br />
liefern Coen und Greenberg, indem sie statt der Halbkugel einen<br />
Halbwürfel „Hemicube“ um die Grundfläche Ai legen. Aj wird<br />
dann auf den Halbwürfel projiziert, welcher in einzelne Quadrate<br />
aufgeteilt ist. Die Anzahl der geschnittenen Quadrate im<br />
Verhältnis zur Anzahl der Quadrate auf der Grundfläche bestimmt<br />
dann den Formfaktor.<br />
Das Radiosity Verfahren hat einen entscheidenden Vorteil<br />
gegenüber dem Raytracing Verfahren: es ist<br />
blickpunktunabhängig, was bedeutet, dass eine Szene, die einmal<br />
mit Radiosity berechnet wurde ohne großen Aufwand aus<br />
verschiedenen Blickwinkeln dargestellt werden kann. Jedoch hat<br />
Radiosity den Nachteil, dass nur diffuse Reflexionen<br />
berücksichtigt werden und somit der spiegelnde Anteil fehlt. Eine<br />
Kombination aus Raytracing und Radiosity vereinigt die Vorteile<br />
beider Verfahren zu einem optimalen Ergebnis.<br />
3.3.3 Schrittweise Verfeinerung<br />
Das bisher besprochene Verfahren zur Berechnung des<br />
Energiegleichgewichts einer Szene hat jedoch noch einen<br />
weiteren praktischen Nachteil: es ist nicht möglich inkrementelle<br />
Zwischenlösungen zu berechnen, sonder man muss am Anfang<br />
zuerst alle Formfaktoren bestimmen, und anschließend das LGS<br />
per Gauß-Seidel lösen, welches sich aus Formel 14 ergibt.<br />
Wünschenswert wären jedoch Zwischenergebnisse, welche man<br />
sukzessive verbessern kann. Dazu gibt es folgende Idee: statt wie<br />
beim herkömmlichen Weg von einer Fläche die Summe des<br />
abgestrahlten Lichtes der anderen Flächen „einzusammeln“ kehrt<br />
man die Richtung um und „verteilt“ sozusagen das Licht von<br />
einer Fläche aus an alle anderen Flächen. Zusätzlich wird das<br />
Licht noch in kleine Pakete ∆B unterteilt, welche dann<br />
„häppchenweise“ an die umliegenden Flächen verteilt werden.<br />
Dies hat den Vorteil, dass im ersten Schritt nur die Lichtquelle<br />
selber Licht austeilt und somit nur die Formfaktoren für einen<br />
Halbwürfel berechnet werden müssen. Das Vorgehen lässt sich<br />
durch folgenden Algorithmus beschreiben:<br />
Programm 2:Pseudecode des inkrementellen Radiosity<br />
Verfahrens [3]<br />
Berechne Fij für jedes Flächenelement j<br />
Für (jedes Flächenelement j)<br />
∆Bi=0;<br />
∆Radiosity=ρi ∆BiFijAi/Aj;<br />
∆Bj= ∆Bj +∆Radiosity;<br />
Bj= Bj+ ∆Radiosity;
Im ersten Schritt leuchten in einer Szene also nur die Lichtquellen<br />
und der Rest ist schwarz. Nach den ersten Iterationen wird die<br />
Szene in Bereichen, wo das Licht nicht direkt eintrifft immer noch<br />
sehr dunkel bleiben, deshalb setzt man am Anfang einen<br />
zusätzlichen ambienten Term ein, welcher die dunklen Regionen<br />
etwas aufhellt, damit die Bilder realistischer werden. Mit<br />
steigender Zahl der Iterationen wird der ambiente Term kleiner<br />
und verschwindet schließlich ganz [3].<br />
Abb. 24: Schrittweise Verfeinerung mit Radiosity [3]<br />
4. ZUSAMMENFASSUNG<br />
Wir haben nun einige <strong>Beleuchtungsmodelle</strong> kennen gelernt, welche<br />
schrittweise zu immer komplexeren Berechnungen geführt<br />
haben. Welches Modell nun im einzelnen zum Einsatz kommt ist<br />
von Fall zu Fall abzuwägen. Bei sich verändernder Szenerie<br />
kommen zumindest mit herkömmlichen Rechnern momentan nur<br />
lokale <strong>Beleuchtungsmodelle</strong> in Betracht. Dort gibt es noch einige<br />
Erweiterungen, welche im Text nicht angesprochen wurden, wie<br />
z.B. Transparenzeffekte, echte Spiegelungen und Schatten. Diese<br />
Erweiterungen machen es möglich auch mit lokalen <strong>Beleuchtungsmodelle</strong>n<br />
sehr nahe an eine photorealistische Darstellung<br />
einer bewegten Szene heranzukommen. Anwendungsschwerpunkte<br />
sind hier sicherlich Computerspiele. Globale <strong>Beleuchtungsmodelle</strong><br />
finden ihre Anwendung eher in CAD Anwendungen und in<br />
der Architektur, da dort nur einzelne unbewegte Bilder generiert<br />
werden. Mit der Radiosity Methode wäre sogar ein virtueller Flug<br />
durch ein Gebäude realisierbar.<br />
5. REFERENCES<br />
[1] Foley James D., Grundlagen der Computergrafik<br />
[2] Domik G., <strong>Universität</strong> Paderborn, Skript Computergrafik<br />
[3] Godbersen, TFH Berlin, Skript Lokale <strong>Beleuchtungsmodelle</strong><br />
[4] Rothermel A., Skript Fernsehtechnik WS 2001/2002, <strong>Universität</strong><br />
<strong>Ulm</strong>, Abteilung Elektrotechnik und Mikroelektronik<br />
[5] Brill, M., FH Kl, <strong>Beleuchtungsmodelle</strong><br />
[6] S. Schäffner, D. Fellner, TU Braunschweig, Radiosity<br />
[7] http://www.gris.uni-tuebigen.de/gris/grdev/java/doc/ht<br />
ml/etc/AppletIndex.html<br />
[8] http://olli.informatik.uni-oldenburg.de/ilight/theorie.html<br />
[9] http://fuzzyphoton.tripod.com/whatisrt.htm<br />
[10] http://www.uni-giessen.de/~gc1087/schoenh/raytraci/fr<br />
ame1.html<br />
[11] http://www.irtc.org/<br />
[12] http://www.cs.wpi.edu/~matt/courses/cs563/talks/radio<br />
sity.html<br />
[13] http://www.siggraph.org/