0.1 Globale Beleuchtungsverfahren – Das Radiosity-Verfahren
0.1 Globale Beleuchtungsverfahren – Das Radiosity-Verfahren
0.1 Globale Beleuchtungsverfahren – Das Radiosity-Verfahren
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1<br />
<strong>0.1</strong> <strong>Globale</strong> <strong>Beleuchtungsverfahren</strong> <strong>–</strong> <strong>Das</strong><br />
<strong>Radiosity</strong>-<strong>Verfahren</strong><br />
<strong>0.1</strong>.1 Einführung und Grundlagen<br />
• realitätsnahe Darstellungen in der Computergrafik erfordern nicht nur die möglichst exakte<br />
Wiedergabe der Geometrie von Objekten bzw. Szenen, sondern auch eine möglichst<br />
realitätsnahe Wiedergabe der Beleuchtung der Objekte<br />
• man unterscheidet im Wesentlichen:<br />
1. lokale Beleuchtungsmodelle:<br />
<strong>–</strong> die Modelle beschreiben die in einem Punkt der Objektoberfläche wahrnehmbare<br />
Leuchtdichte<br />
<strong>–</strong> lokale Beleuchtungsmodelle berechnen aufgrund der Oberflächeneigenschaften<br />
(Reflektionseigenschaften, u. a.) und der Eigenschaften des einfallenden<br />
Lichts (Farbe, Richtung, usw.) die aktuelle Farbe eines Pixels<br />
<strong>–</strong> der Austausch von Licht zwischen Objektoberflächen bleibt unberücksichtigt<br />
<strong>–</strong> ein Ziel der lokalem Beleuchtungsmodelle ist, den Berechnugsaufwand möglichst<br />
klein zu halten ⇒ einige physikalische Gesetzmäßigkeiten werden nicht<br />
berücksichtigt<br />
<strong>–</strong> einige natürliche Effekte können nicht oder nur unzureichend realisiert werden<br />
(Schatten, Brechung, Spiegelung)<br />
<strong>–</strong> viele gängige Computergrafiksysteme verwenden lokale Beleuchtungsmodelle<br />
(insbesondere die OpenGL)<br />
2. globale Beleuchtungsmodelle:<br />
<strong>–</strong> das Ziel der globalen Beleuchtungsmodelle ist eine möglichst realitätsnahe<br />
Ausleuchtung der Szene ⇒ möglichst exakte Einhaltung der physikalischen<br />
Grundlagen ist zwingend erforderlich<br />
<strong>–</strong> zwei relativ gegensätzliche <strong>Verfahren</strong> haben sich als besonders geeignet erwiesen,<br />
Raytracing und das <strong>Radiosity</strong>-<strong>Verfahren</strong><br />
<strong>–</strong> beim Raytracing verfolgt man die Lichtstrahlen vom Auge des Betrachters<br />
bis zur Lichtquelle bzw. bis der Strahl die Szene verlässt oder eine gewisse<br />
Intensität unterschreitet<br />
<strong>–</strong> das Raytracing ist besonders für Szenen geeignet, die viele transparente Objekte<br />
oder Objekte mir spiegelnder Oberfläche enthalten<br />
<strong>–</strong> für diffus reflektierende Oberflächen ist das Raytracing weniger geeignet<br />
<strong>–</strong> ein weiterer Nachteil des Raytracings ist, dass die Szene für einen bestimmten<br />
Standpunkt des Betrachters berechnet wird, d. h. aandert der Betrachter seine<br />
Position in der Szene muss die Szene neu berechnet werden
0.2 Grundlagen des <strong>Verfahren</strong>s 2<br />
<strong>–</strong> das <strong>Radiosity</strong>-<strong>Verfahren</strong> hingegen ist nur für diffuse Reflektion geeignet und<br />
kann spiegelnde und transparente Oberflächen nur schwer oder gar nicht darstellen<br />
<strong>–</strong> diese Einschränkung ist aber in der Praxis keine große Einschränkung, das<br />
in unserer natürlichen Umgebung üüberwiegend diffus reflektierende Oberflächen<br />
vorkommen, besonders für die Beleuchtungssimulation von Innenräumen<br />
(indirekte Beleuchtung) ist das <strong>Radiosity</strong>-<strong>Verfahren</strong> besonders geeignet<br />
<strong>–</strong> ein wesentlicher Vorteil ist die betrachterunabhängige Berechnung der Szene,<br />
d. h. beim Durchwandern der Szene muss diese nicht neu berechnet werden<br />
<strong>–</strong> der Nachteil des <strong>Radiosity</strong>-<strong>Verfahren</strong>s ist der wesentlich höhere Rechenaufwand<br />
und der hohe Speicherbedarf<br />
• <strong>Radiosity</strong>-<strong>Verfahren</strong> wurde 1983 von Cindy M. Goral und Donald P. Greenberg vorgestellt<br />
• das Modell beruht auf der Energieerhaltung, d. h. es besteht ein Gleichgewicht zwischen<br />
ausgestrahltem und absorbierten Licht<br />
• dieses Gleichgewicht führt zu einer zeitunabhängigen Ausleuchtung der Szene, die,<br />
bedingt durch die Beschränkung auf ideal diffuse Reflektion (einfallendes Licht wird<br />
gleichmäßig in alle Richtungen reflektiert) vom Standpunkt des Betrachters unabhängig<br />
ist<br />
0.2 Grundlagen des <strong>Verfahren</strong>s<br />
• die Oberflächen der Szene werden in insgesamt n Flächenstücke mit Flächeninhalt A i , i =<br />
1,...,n zerlegt<br />
• für jedes Flächenstück gilt:<br />
1. die Lichtemission ist konstant, jeder Punkt des Flächenstückes sendet gleichviel<br />
Licht aus<br />
2. die Lichtreflektion ist konstant<br />
3. der <strong>Radiosity</strong>-Wert B i (in W · m −2 ) ist konstant<br />
• für jedes Flächenelement sind folgende Werte vorgegeben:<br />
1. die Lichtemission (E i ) pro Einheitsfläche (in W · m −2 ) (Designentscheidung)<br />
2. der diffuse Reflektionskoeffizient ρ i (in [/]) (Designentscheidung)<br />
• die beiden vorgenannten Größen variieren für verschiedene Wellenlängen (Farben) des<br />
Lichts, deshalb wird das sichtbare Spektrum des Lichts diskretisiert und Gleichungssystem<br />
(0.2) wird für jeden Wellenlängenbereich berechnet
3<br />
• Wir betrachten ein einzelnes Flächenstück i. <strong>Das</strong> Licht (genauer die Strahlungsleistung<br />
Φ i = B i A i (in [W])), welches von diesem Flächenstück ausgeht setzt sich wie folgt<br />
zusammen:<br />
1. Eigenemission, E i · A i (in [W]) („Lichtquelle oder nicht“),<br />
2. dem reflektierten Anteil, des von anderen Flächenstücken einfallenden Lichts:<br />
a) ρ i (ist vorgegeben) bestimmt, wieviel Licht einer Wellenlänge reflektiert wird<br />
b) die Strahlungsenergie die von Flächenelement j ausgeht ist B j A j , davon trifft<br />
der Anteil F ji direkt auf das Flächenelement i auf, F ji heißt Formfaktor<br />
Insgesamt beträgt die Strahlungsleistung des Flächenstückes i also:<br />
Φ i = B i A i = E i · A i + ρ i ·<br />
n<br />
∑ FjiB jA j<br />
j=1<br />
• mit der Symmetrie-Bedingung (bzw. reziproken Relation, wird später noch begründet)<br />
A j F ji = A i F i j und Division durch A i erhält man die <strong>Radiosity</strong>-Gleichung:<br />
B i = E i + ρ i ·<br />
n<br />
∑ Fi jB j<br />
j=1<br />
(<strong>0.1</strong>)<br />
• stellt man Gleichung (<strong>0.1</strong>) für alle Flächenelemente auf, erhält man ein lineares Gleichungssystem<br />
mit n Gleichungen:<br />
⎛<br />
⎞<br />
1 − ρ1F11 −ρ1F12 ··· −ρ1F1n ⎜<br />
⎟<br />
⎜ −ρ<br />
⎜ 2F21 1 − ρ2F22 . ⎟<br />
⎝<br />
. ⎟<br />
.<br />
.. −ρn−1F ⎠<br />
n−1n<br />
·<br />
⎛<br />
⎜<br />
⎝<br />
−ρnF n1 ··· −ρnF n−1n 1 − ρnFnn<br />
• Herleitung Gleichungssystem: Stelle Gleichung (<strong>0.1</strong>) für i auf<br />
B i = E i + ρ i F i1 B 1 + ρ i F i2 B 2 + ... + ρ i F ii B i + ... + ρ i F in Bn<br />
E i = B i − ρ i F i1 B 1 − ρ i F i2 B 2 − ... − ρ i F ii B i − ... − ρ i F in Bn<br />
E i = −ρ i F i1 B 1 − ρ i F i2 B 2 − ... + B i − ρ i F ii B i − ... − ρ i F in Bn<br />
Ei = −ρiFi1B1 − ρiFi2B2 − ... + (1 − ρiFii )Bi − ... − ρiFinBn Ei = ⎛ ⎞<br />
B1 ⎜<br />
B ⎟<br />
2 ⎟<br />
⎜ ⎟<br />
⎜ . ⎟<br />
−ρiFi1 −ρiFi2 ... (1 − ρiFii ) ... −ρiFin · ⎜ ⎟<br />
⎜ B<br />
⎜ i ⎟<br />
⎝ . ⎠<br />
B 1<br />
B 2<br />
.<br />
Bn<br />
Bn<br />
⎞<br />
⎛<br />
⎟<br />
⎠ =<br />
⎜<br />
⎝<br />
E 1<br />
E 2<br />
.<br />
En<br />
⎞<br />
⎟<br />
⎠ (0.2)<br />
| − (ρ i F ik B k ) 1 ≤ k ≤ n
0.2 Grundlagen des <strong>Verfahren</strong>s 4<br />
• Um dieses Gleichungssystem lösen zu können, müssen noch die Formafaktoren berechnet<br />
werden.<br />
• Im folgenden Abschnitt wird der Raumwinkel benötigt.<br />
Definition <strong>0.1</strong> (Raumwinkel)<br />
Der Raumwinkel Ω (in Steradiant m 2 · m −2 = sr ) ist der Quotient aus dem Flächeninhalt<br />
eines Teilstücks der Kugeloberfläche und dem Quadrat des Radius der Kugel.<br />
Beispiel <strong>0.1</strong><br />
Die Oberfläche einer Kugel mit Radius r ist 4πr 2 , entsprechend ist der volle Raumwinkel<br />
4πr 2<br />
r 2 = 4π.<br />
• Wir betrachten ein Flächenstück j, das Licht an ein Flächenstück i sendet.<br />
• Die Strahlungsleistung, oder Strahlstärke (in Watt [W]) des Flächenstückes j in den<br />
Raumwinkel Ω ist wie folgt definiert:<br />
Φ j (Ω) = I(φ j ) · Ω (0.3)<br />
<strong>–</strong> φ j ist der Winkel zwischen der Flächennormale von A j und der Stahlrichtung<br />
<strong>–</strong> I(φ j ) ist die Lichtstärke oder Strahlstärke von A j in Strahlrichtung<br />
<strong>–</strong> das <strong>Radiosity</strong>-<strong>Verfahren</strong> berücksichtigt nur Oberflächen mit konstanter, richtungsunabhängiger<br />
Leuchtdichte L (in W · m −2 · sr −1 ), für diese Flächen gilt das<br />
LAMBERTSCHE Kosinus-Gesetz:<br />
A j<br />
φ j<br />
A i<br />
Aj cos φ j<br />
<strong>–</strong> Die Strahlstärke die A j in Richtung φ j sendet ergibt sich aus:<br />
<br />
I(φ j ) = L · A j · cos φ j . (0.4)
5<br />
• Die Strahlungsleistung des Flächenelementes j in den Raumwinkel Ω hat damit die<br />
folgende Form (mit (0.3) und (0.4)):<br />
<br />
Φ j (Ω) = I(φ j ) · Ω = L · A j · cos φ j · Ω. (0.5)<br />
• Uns interessiert aber die Strahlleistung, die von Flächenelement j auf Flächenelement i<br />
fällt. Dazu betrachten wir den Raumwinkel Ω ji :<br />
1. lege eine Einheitshalbkugel über A j deren Mittelpunkt mit dem Mittelpunkt von<br />
A j übereinstimmt<br />
2. der Abstand der Mittelpunkte von A j und A i sei r<br />
3. φ i ist der Winkel zwischen der Normalen von A i und der Verbindungsgeraden der<br />
Mittelpunkte von A j und A i (Projektionsrichtung)<br />
4. nach dem LAMBERTSCHEN Kosinus-Gesetz ist die „wirksame“ Fläche von Ai in<br />
Projektionsrichtung: Ai · cos <br />
φi Damit ergibt sich Ω ji wie folgt:<br />
Ω ji = Ai · cos <br />
φi r2 (0.6)<br />
• Mit (0.3), (0.4) und (0.6) habe wir alle Bestandteile des Grundgesetzes der Strahlungsübertragung<br />
von A j nach A i :<br />
Φ j (Ω ji ) = L j ·<br />
cos <br />
φi · cos φ j<br />
r2 · Ai · A j (0.7)<br />
• Bisher sind wir immer vom Mittelpunkt von A j ausgegangen und haben φ i und φ j als<br />
Winkel zwischen der jeweiligen Normale und der Verbindungsgerade der Mittelpunkte<br />
von A i und A j angenommen. Im allgemeinen Fall muss man aber alle Punkte, mit<br />
entsprechend unterschiedlichen Winkeln zwischen Normale und Projektionsrichtung,<br />
berücksichtigen (nicht nur die Mittelpunkte). Daher Übergang zu differentiellen Flächenelementen<br />
dA i und dA j (mit „unendlich kleinem Flächeninhalt“).<br />
• Mit den differentiellen Flächenelementen ergibt sich die Gesamtstrahlung von A j in den<br />
Halbraum über A j durch Integration von Gleichung (0.5):<br />
da:<br />
<br />
Φ j (Ω) = L j · dA j ·<br />
Ω<br />
<br />
cos φ j dΩ = L j · dA j · πdΩ, (0.8)<br />
dΩ = sin(φ)dθdφ (Def.)
0.2 Grundlagen des <strong>Verfahren</strong>s 6<br />
wobei φ j der Winkel zwischen der Normale von A j und der Projektionsrichtung ist und<br />
θ der Winkel zwischen der positiven x-Achse und der Projektionsrichtung, damit ergibt<br />
sich:<br />
<br />
Ω<br />
<br />
cos φ j dΩ =<br />
2π<br />
π<br />
2<br />
θ=0 φ j =0<br />
= π<br />
<br />
cos φ j sin φ j dφ jdθ • Der Anteil der Gesamtstrahlung der von dA j auf dAi fällt ergibt sich aus dem Quotient<br />
von Gleichung (0.7) und (0.8):<br />
FdA jdA =<br />
i Φ j (Ω ji )<br />
Φ j (Ω) = L j · cos(φi)·cos(φ j)<br />
r2 · dAi · dA cos<br />
j<br />
=<br />
L j · dA j · πdΩ<br />
<br />
φi · cos φ j · dAi r2 (0.9)<br />
· π<br />
• integriert man (0.9) über Ai erhält man die Gesamtstrahlung, die von Flächenelement<br />
dA j auf Flächenelement Ai fällt:<br />
cos <br />
φi · cos φ j<br />
r2 · dAi (<strong>0.1</strong>0)<br />
· π<br />
A i<br />
• Durch Mittelwertbildung über A j erhält man den Anteil der Gesamtstrahlung der vom<br />
gesamten Flächenelement A j auf A i fällt, dieser Anteil ist gerade der gesuchte Formfak-<br />
tor F ji :<br />
F ji = 1<br />
<br />
<br />
A j<br />
A j Ai cos <br />
φi · cos φ j<br />
r2 dAidA j<br />
· π<br />
(<strong>0.1</strong>1)<br />
Bemerkung <strong>0.1</strong><br />
1. Die Berechnung der Formfaktoren ist der rechenaufwendigste Schritt des <strong>Radiosity</strong>-<br />
<strong>Verfahren</strong>s, ca. 90% der Rechenzeit wird für die Formfaktoren verbraucht ⇒ Methoden<br />
zur Beschleunigung des <strong>Radiosity</strong>-<strong>Verfahren</strong>s werden sich auf diesen Schritt<br />
konzentrieren.<br />
2. Ziel ist es, die Anzahl der zu berechnenden Formfaktoren zu verringern und/oder<br />
die Berechnung der Formfaktoren durch “geeignete„ Maßnahmen zu vereinfachen<br />
3. Um die teilweise oder vollständige Verdeckung von dAi und dA j zu berücksichtigen<br />
fügt man in Gleichung (<strong>0.1</strong>1) eine wie folgt definierte binäre Funktion ein:<br />
<br />
0, falls dAi von dA j aus nicht sichtbar ist<br />
H(dAi ,dA j ) =<br />
(<strong>0.1</strong>2)<br />
1, sonst<br />
Wir werden diese Funktion aber der Einfachheit halber vernachlässigen.
7<br />
4. stellt man Gleichung (<strong>0.1</strong>1) für beide Flächenelemente A i und A j auf, so kann man<br />
die Richtigkeit der anfangs verwendeten Symmetrie-Bedingung sofort erkennen:<br />
<br />
Fji · A j =<br />
A j Ai <br />
Fi j · Ai =<br />
Ai A j<br />
F ji · A j = F i j · A i<br />
cos <br />
φi · cos φ j<br />
r2 dA jdAi · π<br />
<br />
cos φ j · cos <br />
φi r2 dAidA j<br />
· π<br />
(<strong>0.1</strong>3)<br />
5. Die Formfaktoren sind ausschließlich von der Geometrie der Szene abhängig, insbesondere<br />
sind die Formfaktoren unabhängig von der Wellenlänge des Lichts, und<br />
müssen deshalb nur einmal berechnet werden (das Gleichungssystem (0.2) muss<br />
für jede Wellenlänge berechnet werden).<br />
• Es sind jetzt alle Größen bekannt, die zur Lösung des Gleichungssystems (0.2) benötigt<br />
werden. Zur Lösung bieten sich iterative <strong>Verfahren</strong> an (Gaus-Seidel-<strong>Verfahren</strong>) die<br />
bereits nach wenigen Iterationen eine Konvergenz der <strong>Radiosity</strong>-Werte liefern.<br />
0.2.1 Berechnung der Formfaktoren<br />
• eine analytische Lösung des Doppelintegrals (<strong>0.1</strong>1) ist nur für einige Spezialfälle möglich,<br />
auch eine numerische Lösung ist sehr aufwändig<br />
1. Vereinfachung des Integrals:<br />
• ist der Abstand zwischen den Flächen A i und A j groß im Vergleich zur Ausdehnung<br />
der Fläche A j , so verändern sich die Winkel φ i und φ j und der Abstand r nur<br />
unwesentlich während der Integration über A j
0.2 Grundlagen des <strong>Verfahren</strong>s 8<br />
• damit kann das Integral wie folgt geschrieben werden:<br />
Fji = 1<br />
cos<br />
A j<br />
A j Ai <br />
φi · cos φ j<br />
r2 dA jdAi · π<br />
= 1<br />
cos<br />
A j<br />
Ai <br />
φi · cos φ j<br />
r2 <br />
1dA jdAi · π<br />
A j<br />
= 1<br />
cos<br />
A j<br />
Ai <br />
φi · cos φ j<br />
r2 · A jdAi · π<br />
cos<br />
FdA j ,A =<br />
i <br />
φi · cos φ j<br />
r2 dAi · π<br />
A i<br />
(<strong>0.1</strong>4)<br />
Die Gleichung (<strong>0.1</strong>4) beschreibt den Formfaktor zwischen dem differentiellen Flächenelement<br />
dA j und dem endlichen Flächenelement A i .<br />
• Dies Vereinfachung wird sehr häufig verwendet, und die Voraussetzungen lassen<br />
sich durch Unterteilung der Fläche A j immer erfüllen. Mehr dazu im nächsten<br />
Abschnitt.<br />
2. Vereinfachung der geometrischen Grundlagen:<br />
a) Halbkugel-<strong>Verfahren</strong><br />
b) Halbwürfel-<strong>Verfahren</strong><br />
0.2.1.1 Halbkugel-<strong>Verfahren</strong><br />
• Durch die Vereinfachung in Gleichung (<strong>0.1</strong>4) wird A j auf seinen Mittelpunkt reduziert<br />
(die Winkel und der Abstand r wurden als konstant angenommen).<br />
• Wieder Vorstellung der Einheitshalbkugel über A j mit Mittelpunkt im Mittelpunkt von<br />
A j . A j strahlt Energie (Licht) in den gesamten Halbraum. (Folie)<br />
• Die Strahlung die A i von A j erhält ist proportional zur Fläche die durch Projektion von A i<br />
auf die Oberfläche der Einheitshalbkugel um A j mit Projektionszentrum im Mittelpunkt<br />
von A j entsteht.<br />
• Ist A ji die Fläche der Projektion, dann gilt für den Formfaktor:<br />
FA jA =<br />
i A ji<br />
. (<strong>0.1</strong>5)<br />
π<br />
Die Herleitung dieser Beziehung findet man unter anderem in [ESK2]. Die Herleitung<br />
ist für uns im Moment uninteressant.
9<br />
• Die aufwändige Berechnung von A ji umgeht man, indem man die Oberfläche der Einheitshalbkugel<br />
in diskrete Bereiche gleicher Raumwinkel unterteilt.<br />
• Um den Formfaktor zu bestimmen zähle die durch die Projektion überdeckten Bereiche<br />
(einfache Berechnung des Schnittpunktes einer Geraden mit einer Kugel).<br />
• Die Idee dieses <strong>Verfahren</strong>s ist sehr gut, aber es lässt sich nur schwer umsetzen ⇒ keine<br />
praktische Relevanz.<br />
• Ersetze die Halbkugel durch einen Halbwürfel<br />
0.2.1.2 Halbwürfel-<strong>Verfahren</strong><br />
(Folie)<br />
• lege einen Halbwürfel (Hemi-Cube) mit Kantenlänge 2 über A j (Mittelpunkt des Würfels<br />
gleich Mittelpunkt von A i )<br />
• teile die Oberflächen des Würfels in quadratische Teilbereiche, sog. Pixel ein (meist<br />
50 × 50 oder 100 × 100) ⇒ „Diskretisierung“<br />
• der Formfaktor F ji wird nun aus der Projektion von A i auf den diskretisierten Halbwürfel<br />
bestimmt<br />
• verwende Hilfsgröße Delta-Formfaktor, ΔFq die angibt, welchen Beitrag das Pixel q<br />
zum Formfaktor F ji beiträgt<br />
Bemerkung 0.2 (zum Delta-Formfaktor)<br />
1. Überdecken die Projektionen mehrerer Flächenstücke der Szene das gleiche Pixel,<br />
so liefert das Pixel nur zu dem Formfaktor des nächstgelegenen Flächenstückes<br />
einen Beitrag. (Alle anderen Flächenstücke sind verdeckt, wenn man von A j durch<br />
dieses Pixel blickt)<br />
2. In Abhängigkeit von ihrer Lage auf dem Halbwürfel überdecken die Pixel verschiedene<br />
Raumwinkel ⇒ die Delta-Formfaktoren müssen für jedes Pixel berechnet<br />
und gespeichert werden (nur einmal, da die Deltaformfaktoren für alle Halbwürfel<br />
gleich sind).<br />
• Ist R die Anzahl der durch die Projektion von A i überdeckten Pixel dann gilt für den<br />
Formfaktor:<br />
F ji =<br />
R<br />
∑ ΔFq<br />
q=1<br />
falls kein A k existiert, das ebenfalls eines der Pixel überdeckt und näher an A j liegt.<br />
(<strong>0.1</strong>6)
Bestimmung der Delta-Formfaktoren<br />
0.2 Grundlagen des <strong>Verfahren</strong>s 10<br />
• verwende rechtshändiges Koordinatensystem dessen Ursprung im Mittelpunkt des Würfels<br />
(und damit im Mittelpunkt von A j ) liegt<br />
• betrachte ein Pixel q auf der Deckfläche des Halbwürfels (Folie):<br />
<strong>–</strong> r sei der Abstand des Mittelpunkts von q zum Ursprung (Koordinaten des Mittelpunkts:<br />
(xq,yq,1))<br />
r 2 = 1 + x 2 q + y 2 q<br />
• es gilt: φ j = φq, da die Normalen von A j und q parallel sind, damit ist:<br />
cos 1<br />
φi = cos φq =<br />
r =<br />
1<br />
<br />
1 + x 2 q + y 2 q<br />
(<strong>0.1</strong>7)<br />
(<strong>0.1</strong>8)<br />
• ist Δq (man kann Δq als differentielles Flächenelement interpretieren) der Flächeninhalt<br />
von Pixel q, erhält man mit Gleichung (0.9) und (<strong>0.1</strong>8):<br />
=r −1<br />
=r −1<br />
<br />
cos<br />
ΔFq =<br />
<br />
φi · cos <br />
φq ·Δq<br />
r2 · π<br />
= Δq<br />
r4 · π<br />
Δq<br />
=<br />
π · 1 + x2 q + y2 2 q<br />
• für Pixel p auf der rechten bzw. linken Seitenfläche erhält man:<br />
Δp<br />
ΔFp =<br />
π · 1 + y2 p + z2 p<br />
• für Pixel r auf der vorderen bzw. hinteren Seitenfläche erhält man:<br />
2<br />
Δr<br />
ΔFr =<br />
π · (1 + x2 r + z2 r) 2<br />
(<strong>0.1</strong>9)<br />
(0.20)<br />
(0.21)<br />
(0.22)<br />
(0.23)<br />
• Mit diesen Formeln kann man für jedes Pixel den Delta-Formfaktor berechnen und in<br />
einer Tabelle speichern.<br />
• Bei der Berechnung der Formfaktoren mit Gleichung (<strong>0.1</strong>6) kann man auf diese Tabelle<br />
zugreifen.
11<br />
0.3 Möglichkeiten zur Optimierung des<br />
<strong>Radiosity</strong>-<strong>Verfahren</strong>s<br />
0.3.1 Methode der schrittweisen Verfeinerung<br />
• das bisher vorgestellte <strong>Radiosity</strong>-<strong>Verfahren</strong> hat zwei Nachteile:<br />
1. eine Darstellung der Szene ist erst nach vollständig abgeschlossener Berechnung<br />
möglich, d. h. ein interaktives Design ist schwer möglich, da der Designer nach<br />
jeder Änderung warten muss, bis die Szene komplett neu berechnet ist<br />
2. bei insgesamt n Flächenelementen muss jedes Flächenstück O(n) Formfaktoren<br />
speichern ⇒ der Speicherbedarf des <strong>Verfahren</strong>s wächst quadratisch mit der Anzahl<br />
der Flächenstücke<br />
• Abhilfe: Methode der schrittweisen Verfeinerung<br />
• wie bereits erwähnt wird das Gleichungssystem (0.2) mittels Gaus-Seidel-<strong>Verfahren</strong> gelöst<br />
• Gaus-Seidel gehört zu den iterativen <strong>Verfahren</strong> zur Lösung von Gleichungssystemen<br />
und berechnet in jedem Iterationsschritt eine verbesserte Näherungslösung aus einer<br />
bereits vorhandenen Näherung<br />
• betrachtet man die Auswertung einer Zeile i von (0.2) so entspricht dies der Berechnung<br />
einer Näherungslösung für B i auf der Grundlage der Näherungslösungen B j , i = j, j =<br />
1,...,n<br />
B i = E i + ρ i ·<br />
n<br />
∑ Fi jB j<br />
j=1<br />
(0.24)<br />
• <strong>Das</strong> Aufsummieren der Terme ρ i F i j B i ist mit einem Aufsammeln der Strahlungsanteile<br />
aller anderen Flächenelemente bei Flächenelement i vergleichbar.<br />
• umgekehrt kann man den Anteil des Flächenelementes i bestimmen, den es zur Strahlung<br />
aller anderen Flächenelemente j, i = j beiträgt, er beträgt:<br />
ρ j F ji B i<br />
• mit der reziproken Relation A j F ji = A i F i j erhält man:<br />
ρ j B i F i j<br />
Ai A j<br />
(0.25)<br />
(0.26)<br />
• in diesem Term werden die Formfaktoren F i j verwendet, die man erhält, wenn man<br />
z. B. das Halbwürfelverfahren für das Flächenelement i ausführt
0.3 Möglichkeiten zur Optimierung des <strong>Radiosity</strong>-<strong>Verfahren</strong>s 12<br />
• mit diesen Formfaktoren berechnet man den Anteil den i zur Strahlung den übrigen<br />
Flächenelemente j beiträgt und verteilt die Anteile an diese Flächenelemente<br />
<strong>–</strong> speichert man die Formfaktoren F i j , kann die Berechnung im nächsten Iterationsschritt<br />
entfallen (erhöhter Speicherplatzbedarf)<br />
<strong>–</strong> verwirft man die Formfaktoren des Flächenelementes i, kann man den Speicherbedarf<br />
linear zur Anzahl der Flächenelemente halten<br />
• die anderen Flächenelemente werden bereits einen gewissen Anteil der Strahlung von<br />
i aus den vorherigen Iterationen beinhalten, deshalb wird bei Flächenelement j in der<br />
Iteration (k + 1) nur die Differenz ΔBi = B (k+1) − B<br />
i<br />
(k) berücksichtigt<br />
i<br />
• das beschriebene <strong>Verfahren</strong> wird für jedes Flächenelement ausgeführt, dies stellt einen<br />
Iterationsschritt des <strong>Verfahren</strong>s dar<br />
• nach jedem Iterationsschritt ist eine Darstellung der Szene möglich<br />
<strong>–</strong> verwendet man als Startwert für ein Element dessen Eigenemissionswert, so werden<br />
anfangs nur die Lichtquellen zu sehen sein<br />
<strong>–</strong> mit fortschreitender Iteration wird sich das Licht weiter in der Szene ausbreiten,<br />
was einer Aufhellung der Szene entspricht<br />
• bearbeitet man in jeden Iterationsschritt zuerst die Flächenstücke, die das meiste Licht<br />
aussenden, wird man eine relativ schnelle Konvergenz erhalten<br />
0.3.2 <strong>Das</strong> hierarchische <strong>Radiosity</strong>-<strong>Verfahren</strong><br />
• Die Strahlungsübertragung nach Gleichung (0.7) zwischen zwei Flächenelementen A i<br />
und A j ist unter anderem vom Abstand der beiden Flächenelemente abhängig. Je weiter<br />
die beiden Flächen voneinander entfernt sind desto geringer ist die übertragene Strahlung.<br />
• Diese Tatsache nutzt man aus, indem man die Berechnungen von Φ j (Ω ji ) für dicht<br />
beieinander liegenden Flächenelemente genauer ausführt, als für weit voneinander entfernte<br />
Flächenelemente, da diese nur einen geringen Anteil zur Gesamtstrahlung eines<br />
Flächenelementes beitragen.<br />
• Als Eingabemenge erhält der Algorithmus k Dreiecke oder Vierecke die die Oberflächen<br />
der Objekte der Szene bilden.<br />
• Diese Zerlegung stellt aber nicht die endgültige (feinste) Zerlegung der Oberflächen dar.<br />
• die Eingabepolygone werden durch den Algorithmus bei Bedarf schrittweise rekursiv<br />
unterteilt und die Teilstücke werden in einem Baum (Quadtree bei viermaliger Unterteilung)<br />
gespeichert
13<br />
• die Wurzel eines solchen Baumes ist eines der Eingabepolygone, und die Blätter dieses<br />
Baumes repräsentieren die feinste Zerlegung des Polygons<br />
• durch die Verwendung eines Baumes existieren für ein Eingabepolygon mehrere verschieden<br />
feine Unterteilungen<br />
• beim Aufbau des Baumes wird für jeden Knoten eine Interaktionsliste angelegt, in der<br />
Verweise auf alle Polygone (Eingabepolygone oder eine der Unterteilungen) gehalten<br />
werden, mit denen dieses Polygon Energie (Licht) austauscht<br />
• dicht benachbarte Flächenstücke werden auf Blattebene Licht austauschen, da die Formfaktoren<br />
sehr groß waren, und die Unterteilung solange fortgesetzt wurde, bis die Flächen<br />
zu klein waren<br />
• weit entfernte Flächenelemente werden evtl. in der Höhe der Wurzel Energie austauschen,<br />
da der Formfaktor durch den großen Abstand von Anfang an sehr klein war<br />
• zwischen diesen beiden Extremen werden eine Reihe von Flächenstücken Energie auf<br />
der Höhe irgend eines inneren Knotens austauschen<br />
• wie weit (fein) ein Eingabepolygon unterteilt wird und welche Knoten anderer Quadtrees<br />
in die Interaktionsliste eines Knotens eingetragen werden ist von den Formfaktoren abhängig<br />
• man führt Schranken F ε und A ε ein, die angeben, wann ein Polygon zu unterteilen ist<br />
• Algorithmus zum Aufbau der Quadtrees und zur Erstellung der Links:<br />
void refine(patch P, patch Q){<br />
berechne F PQ und F QP
0.3 Möglichkeiten zur Optimierung des <strong>Radiosity</strong>-<strong>Verfahren</strong>s 14<br />
<br />
if FPQ < Fε && FQP < Fε {<br />
link(P,Q)<br />
}<br />
else{ <br />
<br />
if FPQ > FQP &&(AP > Aε) {<br />
unterteile P in P0 , P1 , P2 , P3 , falls P ein Blatt ist<br />
for (i = 0;i < 4;i + +) {<br />
refine(Pi ,Q)<br />
}<br />
}<br />
else{ <br />
if AQ > Aε {<br />
unterteile Q in Q0 , Q1 , Q2 , Q3 , falls Q ein Blatt ist<br />
for (i = 0;i < 4;i + +) {<br />
refine(P,Qi )<br />
}<br />
}<br />
else{<br />
link(P,Q)<br />
}<br />
}<br />
}<br />
}<br />
• am Anfang des <strong>Verfahren</strong>s wird der refine-Algorithmus für alle Paare von Eingabepolynomen<br />
aufgerufen<br />
• die Formfaktoren werden nicht exakt nach Gleichung (<strong>0.1</strong>1) berechnet sondern man<br />
berechnet für mehrere Punkte ai auf P den Wert:<br />
FaiQ =<br />
cos <br />
φa · cos φ i Q · πR2 πr2 + πR2 (0.27)<br />
wobei πR 2 der Flächeninhalt eines Kreises ist der Q überdeckt (diese Abschätzung leitet<br />
sich aus der Integration von Gleichung (<strong>0.1</strong>0) ab unter der Annahme, das Q ein exakter<br />
Kreis ist)<br />
• den näherungsweisen Formfaktor F PQ erhält man durch Mittelwertbildung über die F ai Q :<br />
FPQ ≈ 1 n cos<br />
n ∑<br />
i=0<br />
<br />
φa · cos φ i Q · πR2 πr2 + πR2 (0.28)<br />
• ist die Rekursive Unterteilung der Eingabepolygone abgeschlossen werden die <strong>Radiosity</strong>-<br />
Werte aller Blätter aller Quadtrees berechnet
15<br />
• zur Berechnung des <strong>Radiosity</strong>-Wertes eines Blattes P werden nicht wie im vorhergehenden<br />
Abschnitt angegeben (Gleichung (<strong>0.1</strong>)) die Strahlungswerte aller sichtbaren Flächenelemente<br />
berücksichtigt sondern nur die <strong>Radiosity</strong>-Werte der Flächenstücke die in<br />
der Interaktionsliste von P sind<br />
Bemerkung 0.3<br />
<strong>–</strong> die Interaktionsliste enthält alle sichtbaren Flächenstücke allerdings nicht immer<br />
in der feinsten Unterteilung<br />
<strong>–</strong> d. h. es werden auch <strong>Radiosity</strong>-Werte für innere Knoten des Quadtrees berechnet<br />
• die neuen <strong>Radiosity</strong>-Werte der Knoten werden wie folgt berechnet:<br />
1. in einem Top-Down-Durchlauf des Quadtrees werden Zwischenwerte der <strong>Radiosity</strong>-<br />
Werte eines Knotens P wie folgt berechnet:<br />
B neu<br />
⎧<br />
ρP · ∑ FPQ · B, falls P Wurzel ist<br />
⎪⎨<br />
Q∈I(P)<br />
P = ρP · ∑ FPQ · B + B<br />
Q∈I(P)<br />
⎪⎩<br />
(l) , falls P innerer Knoten ist<br />
vater(P)<br />
ρP · ∑ FPQ · B + B (l)<br />
vater(P) + E (0.29)<br />
P , falls P Blatt ist<br />
Q∈I(P)<br />
dabei ist B (l) der <strong>Radiosity</strong>-Wert des Flächenelementes Q aus der vorhergehenden<br />
Q<br />
Iteration (als Initialisierung kann wieder der Wert EQ dienen),<br />
2. die inneren Knoten müssen die Werte der Eltern-Knoten aufsammeln (durch die<br />
Addition), da es sein kann, dass die Eltern-Knoten Strahlung mit anderen Flächenelementen<br />
austauschen<br />
3. die Blätter erhalten gleich den neuen <strong>Radiosity</strong>-Wert B (l+1)<br />
P<br />
4. die inneren Knoten erhalten den nächsten Iterationswert durch Mittelung über die<br />
Werte der Kinder, in einem Bottom-up Lauf über den Quadtree berechnet man die<br />
<strong>Radiosity</strong>-Werte der inneren Knoten wie folgt:<br />
⎧<br />
B (l+1)<br />
P<br />
⎨<br />
=<br />
⎩<br />
Bneu P<br />
1<br />
4 ∑<br />
Q∈kind(P)<br />
, falls P ein Blatt ist<br />
B (l+1) , falls P innerer Knoten ist (0.30)<br />
Q
Literaturverzeichnis<br />
[ESK1] J. Encarnação, W. Straßer, R. Klein. Graphische Datenverarbeitung I. R. Oldenbourg<br />
Verlag 1996.<br />
[ESK2] J. Encarnação, W. Straßer, R. Klein. Graphische Datenverarbeitung II. R. Oldenbourg<br />
Verlag 1997.<br />
[RauRue] T. Rauber, G. Rünger. Parallele und verteilte Programmierung . Springer 2000.<br />
[BBP] R. Barth, E. Beier, B. Pahnke. Grafikprogrammierung mit OpenGL. Addison-<br />
Wesley 1996.<br />
[RAU] T. Rauber. Algorithmen der Computergraphik. B. G. Teubner 1993.<br />
[SSC] M. Slater, A. Steed, Y. Chrysantou. Computer Graphics and Virtual Environments.<br />
Addison-Wesley 2002