07.10.2013 Aufrufe

0.1 Globale Beleuchtungsverfahren – Das Radiosity-Verfahren

0.1 Globale Beleuchtungsverfahren – Das Radiosity-Verfahren

0.1 Globale Beleuchtungsverfahren – Das Radiosity-Verfahren

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!