Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf ·...

29
Bild-basierte Beleuchtung virtueller Objekte in Echtzeit mit Hilfe von Wavelets Tobias Eble 18. M¨ arz 2005

Transcript of Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf ·...

Page 1: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Bild-basierte Beleuchtung virtueller Objekte in

Echtzeit mit Hilfe von Wavelets

Tobias Eble

18. Marz 2005

Page 2: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Inhaltsverzeichnis

1 Einleitung 2

2 Wavelets 3

2.1 anschaulich . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 mathematisch . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.3 Normalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.4 Wavelets in 2D . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.5 Komprimierung . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Image-Based Lighting 11

3.1 Umgebungslicht . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2 Reprasentation der Umgebung . . . . . . . . . . . . . . . . . . 12

3.3 Beleuchtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Implementierung 15

4.1 Vorverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.2 Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.3 Programmbeschreibung . . . . . . . . . . . . . . . . . . . . . . 19

4.4 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5 Vergelich zu Spherical Harmonics 22

6 Resume und Ausblick 24

1

Page 3: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

1 Einleitung

Ziel dieser Ausarbeitung ist es, Bild-basierte Beleuchtung mit Hilfe von wa-

velets zu beschleunigen. Wavelets sind ein mathematisches Werkzeug, mit

dem Bilder effizient komprimiert werden konnen. Durch die Komprimierung

wird der Datensatz auf einen Prozentanteil der ursprunglichen Werte redu-

ziert und somit der Rechenaufwand erheblich verringert. In Kapitel 2 werden

dir Grundlagen der wavelet Theorie erklart. Kapitel 3 beschreibt die Image-

Based Lighting(IBL) Technik. Die Beschreibung des eigentlichen Program-

mes und Details der Umsetzung finden sich in Kapitel 4. Kapitel 5 widmet

sich dem Vergleich zu Spherical Harmonics. Abschließend werden in Kapitel

6 die Ergebnisse zusammengefasst und weitere Moglichkeiten dieser Methode

diskutiert.

2

Page 4: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

2 Wavelets

2.1 anschaulich

Dieser Abschnitt soll die Funktionsweise von Wavelets erklaren ohne wei-

ter auf mathematische Details einzugehen [1]. Betrachtet wird zunachst eine

eindimensionales Grauwert-Bild

[ 9 7 3 5]

Durch paarweise Mittelung erhalt man eine Naherung.

[8 4]

Hierbei sind Informationen verloren gegangen. Um das ursprungliche Bild

wieder herzustellen, werden die verlorenen Details gespeichert. Skaliert man

zunachst die Naherung auf die Große des Originalbildes, ergibt sich [8 8 4 4].

Die Differenz zum Original ist [1 -1 -1 1]. Wegen der Symmetrie des arithme-

tischen Mittels, brauchen wir nur einen Koeffizient pro Zahlenpaar. Hierfur

wird definiert, das der Detailkoeffizienten auf den linken Wert addiert und

vom rechten subtrahiert wird. Unsere Detailkoeffizienten sind somit [1 -1],

oder Naherung und Details zusammengefasst.

[ 8 4 | 1 -1 ]

Die verbleibende Naherung [8 4] kann wieder in eine Naherung und Detail-

koeffizienten aufgeteilt werden.

[6 | 2 1 -1]

Diese neue Reprasentation lasst sich ohne Verlust in das Originalbild zuruck-

verwandeln.

2.2 mathematisch

Im Folgenden betrachten wir unser eindimensionales Bild als Funktion uber

dem halboffenen Intervall [0 1). Die Anzahl der Pixel muss eine Zweierpotenz

sein. Zunachst zerlegen wir das Originalbild in einzelne Funktionen. Jedes

3

Page 5: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Pixel bekommt seine eigene Basisfunktion, die sich aus der verschobenen

und skalierten “Box“-Funktion ergibt (Abb. 1).

φ(x) =

1 0 ≤ x < 1

0 sonst

φji (x) = φ(2jx− i)

Die Basisfunktion lassen sich zu einem Vektorraum V j zusammenfassen. Es

gilt V 1 ⊂ V 2 ⊂ V 3 . . . . Ein weiterer Vektrorraum W j wird so gewahlt, dass

er V j zu V j+1 erganzt. Die Basisfunktionen ψ von W j werden als wavelets

bezeichnet. Fur diese Funktionen soll noch eine besondere Bedingung erfullt

sein. Jedes ψ aus W j soll zu jedem φ aus V j orthogonal sein. Orthogonalitat

bezieht sich auf ein inneres Produkt.

< f | g >=

∫ 1

0

f(x)g(x)dx

mit f, g beliebige Elemente aus V j+1 Die zur Box-Funktionen gehorenden

orthogonalen Funktionen sind die Haar wavelets(Abb. 2).

ψ(x) =

1 0 ≤ x < 1/2

−1 1/2 ≤ x < 1

0 sonst

ψji (x) = ψ(2jx− i)

Zuruck zu unserem Beispiel. Das Originalbild lasst sich als Linearkombi-

Abbildung 1: Box-Funktionen von V 2

nation der Basen von V 2 darstellen.

4

Page 6: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 2: Haar wavelets von W 1

I(x) = c20φ20 + c21φ

21 + c22φ

22 + c23φ

23

Oder in einer graphischen Version, mit Intensitatswerten des Originalbildes

als Koeffizienten c2i .

Mit den Funktionen aus V 1 und W 1ergibt

Und nun mit den Bases aus V 0, W 0 und W 1

2.3 Normalisierung

Bisher hatten wir fur die Basen Orthogonalitat vorausgesetzt. Diese Forde-

rung werden wir noch verstarken. Eine Basis heist orthonormal, wenn deren

5

Page 7: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Basen zusatzlich normalisiert sind. Mit der L2 Norm ist eine Basis normali-

siert wenn gilt√

< u|u > = 1

Oder anders formuliert: Eine Basis ist orthonormal, wenn fur alle ui, uj

< ui|uj >= δij (1)

das Kronecker-Delta δij = 1 fur i = j, und ansonsten 0, ist. Diese Schreib-

weise wird spater bei der Komprimierung verwendet. Fur die Haar wavelets

werden die bisherigen Definitionen um den Normalisierungsfaktor 2j/2 erwei-

tert.

φji (x) = 2j/2φ(2jx− i)

ψji (x) = 2j/2ψ(2jx− i)

Fur unser Beispiel bedeutet dies, die j-ten Koeffizienten mit dem inversen

Normalisierungsfaktor 2−j/2 zu multiplizieren.

[6 | 2 1√2

−1√2

]

2.4 Wavelets in 2D

Um ein zweidimensionales Bild zu komprimieren gibt es zwei Ansatze. Die

standard decomposition und die non-standard decomposition. Beim Ersteren

6

Page 8: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

wird, ahnlich wie bei der 2D Fourier Transformation, zuerst auf alle Bildzei-

len, die eindimensionale wavelet Transformation angewandt. Danach werden

alle Bildspalten umgewandelt.

Bei der non-standard decomposition werden, statt zuerst vollstandig alle Zei-

len und danach alle Spalten zu transformieren, die einzelnen Schritte der

Transformation abwechselnd auf Zeilen und Spalten angewandt. Dies wird

durch Abb. 3 und Abb. 4 verdeutlicht. Beide Versionen erzeugen unterschied-

liche Detailkoeffizienten. Fur die Implementation wurde die non-standard

Version bevorzugt, da die Basisfunktionen eine quadratische Form haben[1].

Abbildung 3: standard decomposition

2.5 Komprimierung

Ein Bild ist komprimiert, wenn weniger Speicher benotigt wird. Man unter-

scheidet zwischen Verlust-freien und -behafteten Kompressionsverfahren. Das

obige Beispiel wurde so gewahlt, dass bei der Transformation keine Bruche

entstehen. Ware dies der Fall, mussten wir die ubliche Quantisierung von

einem byte pro Farbkanal aufgeben und stattdessen auf Flieskommazahlen

7

Page 9: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 4: non-standard decomposition

zuruckgreifen. Hierfur gibt es auch ein paar Tricks um die Speicherplatzan-

forderung beizubehalten.

Wir sind allerdings nicht so sehr an der Reduktion der bits pro Pixel in-

teressiert, sondern vielmehr an der Anzahl der Koeffizienten eines Bildes.

Warum, wird in spater deutlich. Wie zuvor bereits erlautert, lasst sich ein

Bild als Linearkombination von Basisfunktionen darstellen.

I(x) =M−1∑

i=0

ciui

Mit M der Anzahl der Basisfunktionen, den Koeffizienten ci und deren Basen

ui. Angenommen die Koeffizienten und die Basisfunktionen werden in einer

anderen Reihenfolge, festgelegt durch die Funktion σ(i), zusammengefasst.

I(x) =M−1∑

i=0

cσ(i)uσ(i)

8

Page 10: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Wir benotigen nun ein zweites Bild I, dass das Original in komprimierter

Form darstellt. Dies soll durch weglassen einiger Koeffizienten erreicht wer-

den.

I(x) =M ′−1∑

i=0

cσ(i)uσ(i)

Der Index i geht nun nur bis M ′, was durch die noch beliebige Abbildung σ

ermoglicht wird.

Der Fehler, der durch die Komprimierung entsteht, wird durch die L2 Norm

festgelegt. Da wir nur an einer Minimierung dieses Fehlers interessiert sind,

konnen wir ihn quadrieren, was dem inneren Produkt des Differenzbildes

entspricht.

||I − I||22 =< I − I | I − I > (2)

Mit M ′ < M kann die Differenz umgeschrieben werden.

I − I =M−1∑

i=0

cσ(i)uσ(i) −M ′−1∑

i=0

cσ(i)uσ(i) (3a)

=(

M ′−1∑

i=0

cσ(i)uσ(i) +M−1∑

i=M ′

cσ(i)uσ(i)

)

−M ′−1∑

i=0

cσ(i)uσ(i) (3b)

=M−1∑

i=M ′

cσ(i)uσ(i) (3c)

Nun wird (3c) in (2) eingesetzt. Hierbei erhalten die Summen unterschiedliche

Indizes, da es sich um zwei getrennt zu betrachtende Funktionen handelt.

||I − I||22 =⟨

M−1∑

i=M ′

cσ(i)uσ(i)

M−1∑

j=M ′

cσ(j)uσ(j)

=M−1∑

i=M ′

M−1∑

j=M ′

cσ(i)cσ(j) < uσ(i)|uσ(j) >

Nun kommen die orthonormalen Basen ins Spiel. Mit der Definition uber

Kronecker-Deltas (1), gilt < uσ(i)|uσ(j) >= 1, nur dann wenn σ(i) = σ(j),

9

Page 11: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

ansonten 0. Somit vereinfacht sich der Fehler weiter zu

||I − I||22 =M−1∑

i=M ′

(cσ(i))2 (4)

In dieser Schreibweise wir klar wie die Abbildung σ auszusehen hat. Um

den durch die Komprimierung entstandenen Fehler zu minimieren, mussen

die Koeffizienten in absteigender Reihnfolge sortiert werden. Da jeder Pixel

einen Koeffizienten hat, kann die Sortierung fur großere Bilder zeitaufwen-

dig sein. Hierfur gibt es optimierte Verfahren [2]. Bei dieser Arbeit sind die

Bilder jedoch klein (16x16-128x128) und werden in einem Vorverarbeitung-

schritt transformiert. Wobei ein beliebiges Sortierverfahren ausreichend ist,

da die Laufzeiteigenschaften nicht betroffen sind.

Alternativ kann das Fehlermaß bezuglich einer anderen Norm definiert werden[1].

Die L∞ Norm stellt sicher, dass kein Pixel einen Fehler großer als ein be-

stimmter Schwellwert aufweist. Hingegen entspricht die L1 Norm mehr dem

vom menschlichen Sehapparat wahrgenommen Fehler [2]. Wegen der einfa-

chen Auswahl der Koeffizienten wurde die L2 Norm ausgewahlt, sie minimiert

den mittleren quadratischen Fehler.

10

Page 12: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

3 Image-Based Lighting

Unter Image-Based Lighting(IBL) werden alle Methoden zusammengefasst,

die es ermoglichen, eine Szene oder Objekte unter realen Lichtverhaltnis-

sen mittels eines Bildes der Umgebung zu Beleuchten. Wobei die neu zu

beleuchtenden Objekte als Photographie oder als geometrisches Modell vor-

liegen konnen. IBL ist eine Weiterentwicklung von reflection mapping, einer

Technik, die spiegelnde Eigenschaften einer Oberflache durch ein Bild der

Umgebung simuliert.

Die Anwendungsbereiche liegen in der Bildsynthese, bei der Modelle moglichst

echt wirkend dargestellt werden sollen, und der Bildfusion. Fur eine Hollywood-

Film kann eine Szene gedreht werden, in der spater ein (virtueller) Schau-

spieler passend eingefugt wird. Beleuchtung und Schatten sind eine der wich-

tigsten Merkmale, die Bilder fur den menschlichen Sehapparat realistisch er-

scheinen lassen. IBL kann in folgende Schritte aufgeteilt werden[3]:

1. Das Umgebungslicht wird fur alle Einfallsrichtungen gemessen.

2. Abbilden des eingesammelten Lichtes auf eine Reprasentation der Um-

gebung.

3. Ein Objekt in diese Umgebung einfugen.

4. Beleuchtung des Objektes durch Lichtsimulation der Umgebung

Die Abbildung der gesamten Umgebung auf ein Bild hat seine Vorteile. Fur

eine reale Szene ist es die einfachste Methode um das gesamte Umfeld zu

reprasentieren, anstatt diese zu modellieren. Doch die Abbildung der kom-

plexen Umgebung in eine kompakte Form beinhaltet auch seine Nachteile,

die sich in Vereinfachungen wiedergeben. Es findet kein Austausch von Licht,

ausgehend vom Objekt, in Richtung Umgebung statt. Das Umgebungslicht

wird nur an einem Punkt gemessen, womit man entweder das Objekt als

unendlich klein oder die Umgebung unendlich weit weg annimmt. Fur ein

Punkt eines Objektes bedeutet dies, dass seine Position fur die Beleuchtung

uninteressant ist.

11

Page 13: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

3.1 Umgebungslicht

Wie sammelt man Licht ein? Zunachst muss das gesamte Umfeld Photogra-

phiert werden. Manche Digitalkameras bieten sogar direkt die Moglichkeit

Panoramabilder zu erstellen. Hat man keine solche Kamera, gibt es zahlrei-

che Software die aus Einzelbildern ein Panorama-Mosaik erstellt. Verwendet

man ein fisheye Objektiv braucht man weniger Bilder, muss diese allerdings

entsprechend der Linse entzerren.

Weitaus eleganter ist eine Methode, bei der eine verspiegelte Kugel photogra-

phiert wird, auch lightprobe genannt. In dieser Kugel spiegelt sich das gesamte

Umfeld wieder, leider meist auch der Photograph oder zumindest die Kame-

ra. Wir wollen Licht, als photometrische Große, messen. Eine gewohnliche

Digitalkamera bildet jedoch das eingesammelte Licht nicht-linear ab. Einer-

seits um Speicherplatz zu sparen, andererseits um die Darstellung auf nicht-

linearen Ausgabegeraten, wie Kathodenstrahlrohren, fur den Betrachter zu

optimieren[3]. Wegen der ublichen Quantisierung von einem byte pro Farb-

kanal wird nur ein Teil des eigentlichen Wertebereiches des Lichtes erfasst.

Man spricht deshalb auch von Low-Dynamic-Range(LDR) beziehungsweise

High-Dynamic-Range(HDR). In[4] wird ein Verfahren vorgestellt, mit dem

aus einer Serie von Bildern, mit verschiedenen Belichtungszeiten, die Inverse

der nicht-linearen Abbildung genahert werden kann. Aus einer Bilderserie

wird der photometrische Wert des Lichtes rekonstruiert. Hierfur gibt es eine

frei verfugbare Software namens HDRShop(www.debevec.org/HDRShop).

3.2 Reprasentation der Umgebung

Wird Licht aus allen Richtungen einer Umgebung gesammelt, mussen diese in

irgendeiner Form abgespeichert werden. Eine Moglichkeit ist, die Bilder der

verspiegelten Kugel direkt zu verwenden, hat aber den Nachteil, dass Bereiche

unterschiedlich genau gesampelt werden. Eine Alternative besteht darin, alle

Richtungen einer lightprobe auf die sechs Seiten eines Wurfels zu projizieren.

Bei dieser Darstellung, sind alle Richtungen annahernd gleichstark vertreten.

12

Page 14: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 5: Umgebungslicht im vertical cross format

3.3 Beleuchtung

Zunachst passen wir die rendering equation fur einfach-direkte Beleuchtung

durch eine environment map unseren Bedurfnissen an.

B(x, ωo) = E(x, ωo) +

Ω

L(ωi)fr(x, ωi → ωo)V (x, ωi)(ωi · n(x)) dωi (5)

Die LichtintensitatB an einem Punkt x, wird durch die Betrachtungsrichtung

ωo, der Selbstemission E und dem Integral uber alle Einfallsrichtungen ωi

festgelegt. Die Lichtquelle besteht aus der Umgebung L. V ist eine binare

Funktionen die angibt, ob die Lichtquelle in einer Richtung verdeckt ist. Die

Reflektionseigenschaften sind durch fr festgelegt. Der Einfallswinkel ergibt

sich aus (ωi · n(x)) zwischen Einfallsrichtung und der Normale n(x).

Diese Funktion direkt zu berechnen ist sehr Rechenaufwendig. Deshalb treffen

wir einige Vereinfachungen. Die Selbstemission E wird weggelassen. Handelt

13

Page 15: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 6: Umgebungslicht im lightprobe - angular map format

es sich um rein Diffuse Oberflachen, spielt der Ausfallswinkel ωo keine Rolle.

B(x) =

Ω

L(ωi)fr(x, ωi)V (x, ωi)(ωi · n(x)) dωi (6)

Die vereinfachte Darstellung wird noch etwas umgeschrieben. Zuerst wird

eine Transportfunktion definiert.

T (x, ωi) = fr(x, ωi)V (x, ωi)(ωi · n(x))

Zusammen mit der Umwandlung des Integrals, mit entsprechenden Diskreti-

sierungsfaktoren, in die diskrete Form ergibt sich:

B(xj) =∑

i

T (xj, ωi)L(ωi) (7)

Anstatt der Summe, konnen die einzelnen Werte von L(ωi) zu einem Spal-

tenvektor L, und T (x, ωi) zu einem Zeilenvektor Tj zusammengefasst werden.

Sollen Intensitaten fur mehre Punkte xj, in unserem Fall sind dies die Punkte

eines Modelles, berechnet werden, kann man die Vektoren Tj wiederum zu

einer Matrix zusammenfassen. Womit sich folgende Gleichung in Matrizen-

schreibweise ergibt.

B = TL

14

Page 16: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

In der j-ten Zeile von B steht nun die Lichtintensitat an einem Punkt xj.

In dieser Form ist die Gleichung allgemeiner als die rendering equation(5).

Sie erlaubt eine beliebige Parametrisierung der Lichtquellen L. Womit sich

nicht nur weit entferne Quellen als environment maps, sondern auch lokale

Lichtquellen beschreiben lassen. Zudem konnen in die Transportfunktion T

globale Beleuchtungseffekte, wie indirekte Beleuchtung oder subsurface scat-

tering, einfließen. Die einzige Bedingung, ist die Beschrankung auf diffuse

Materialien fur die endgultige Darstellung[5]. Allgemein werden diese Arten

unter pre-computed radiance transfer zusammengefasst.

4 Implementierung

In diesem Abschnitt wird der Ablauf des eigentlichen Programmes und dessen

Details beschrieben.

4.1 Vorverarbeitung

Ausgehend von jedem Vertex, der zu beleuchtenden Szene, wird die Sicht-

barkeit zur Umgebung ermittelt, die V -Matrix. Dies geschieht durch rendern

eine cubemap an jedem Punkt der Oberflache. Diese cubemaps mussen alle

gleich ausgerichtet sein. Hierfur werden pbuffers verwendet, eine Methode die

leider noch nicht in den OpenGL-Standard ubernommen wurde, aber wenigs-

tens Kartenunabhangig uber WindowsGL(WGL) Erweiterungen verfugbar

ist. Ein pbuffer ist ein OpenGL render context der nicht fur die direkte Dar-

stellung auf dem Bildschirm gedacht ist. Mit ihm kann direkt in den Speicher

der Grafikkarte gerendert werden. Zudem bietet sich die Moglichkeit, andere

render-states als fur die Darstellung zu setzten. Die dafur benotigten Erwei-

terungen sind[6]:

WGL ARB EXTENSION STRING Zur Uberprufung der OpenGL Er-

weiterungen

WGL ARB RENDER TEXTURE erlaubt die Verwendung des pbuffers

als Textur

15

Page 17: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

WGL ARB PBUFFER Rendern in den Grafikkartenspeicher

WGL ARB PIXELFORMAT Auswahl eines geeigneten Pixelformates

anhand minimaler Kriterien

Zudem wird WGL TEXTURE RECTANGLE NV und WGL TEXTURE -

FLOAT RGBA NV fur die Verwendung von float-Werten benotigt. Wie dem

Namen anzusehen, sind dies Nvidia spezifische Erweiterungen, es existieren

jedoch gleichwertige Alternativen fur ATI-Karten. Ein pbuffer reicht fur die

Erstellung der Sichtbarkeit aus. Fur jeden Vertex und jeweils jede Seite der

cubemap wird die Szene gerendert und anschließend mit glReadPixels in den

Hauptspeicher gelesen. Alle Objekte der Szene werden in Schwarz gezeich-

net und die Seite der Lichtquellen-cubemap in Weiß. Hierbei mussen beide

Seiten eines Dreiecks gezeichnet werden. Somit wird, falls die Kamera einer

cubemap-Seite in das Objekt hineinschaut, dies als Verdeckung registriert.

Algorithmus 1 : Pseudocode fur die Erstellung der Sichtbarkeit

pbuffer.activate();

for each vertex v do

for each vide s of cubemap dosetCamera(v,s);

renderScene();

readPixels(main memory);

end

end

pbuffer.deactivate();

Bisweilen haben wir nur den binaren(schwarz/weiß) Verdeckungsterm V von

T (x, ωi) = fr(x, ωi)V (x, ωi)(ωi · n(x))

betrachtet. Der Punkt x entspricht einem Vertex und die Samples ωi entspre-

chen einem Pixel. Bei der Umwandlung des Integrals uber einem kontinuier-

lichen Wertebereich in eine diskrete Summe, mussen die einzelnen Samples

angepasst werden((6) → (7)). Betrachten wir zunachst eine Seite der cube-

map(Abb. 7). Die Flache, die ein Sample oder Pixel bei einer Auflosung N

16

Page 18: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 7:

einnimmt, ist A = 4N2 . Diese wird zunachst mit dem Winkel zwischen der

normalisierten Normalen der Wurfelseite und dem Positionsvektor eines Pi-

xels cosα = n·vT

√v·vT

multipliziert. Wobei n ·vT hier stets 1 ergibt. Danach wird

die Flache durch Division mit dem Quadrat der Lange von v projiziert. Es

ergibt sich die Gleichung

Ap =A

√v · vT

3

Die Reflektionsfunktion fr wurde zur Vereinfachung konstant fur alle Ober-

flachenpunkte und Einfallswinkel gesetzt. Diese konnte aber in einer weiteren

Version in die Berechnung mit eingefugt werden, um die Reflektionseigen-

schaften verschiedener Oberflachen zu simulieren.

Zur Verdeutlichung eine Zusammenfassung:

1. Zuerst die Sichtbarkeit ermitteln.

2. Danach das Lambertsche Beleuchtungsmodell anhand der Oberflachen-

normale ausrechnen.

17

Page 19: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

3. Die einzelnen Werte mit den Normalisierungsfaktoren multiplizieren.

4. Hieraus ergibt sich die Transportmatrix T .

In der Implementierung werden die ersten beiden Schritte zusammengefasst,

ein pixelshader berechnet den Lambertterm. Dies wird vom Grafikkarten-

speicher in den Hauptspeicher kopiert. Dort werden die Normalisierungsfak-

toren hinzu multipliziert. Dieser Normalisierungschritt konnte ebenfalls auf

der Grafikkarte stattfinden. Die anschließende Wavelettransformation wird

auf der CPU berechnet. Eine GPU Version ist ebenfalls denkbar, allerdings

werden somit beide Prozessoren genutzt.

4.2 Laufzeit

Nun fehlt nur noch der Lichtvektor L. Der Einfachheit wegen wird ein Wurfel

mit einer lightprobe im vertical cross-Format texturiert. Dieser wird um die

Szene rotiert. Fur jeden Frame werden die sechs Seiten eines kanonisch aus-

gerichteten Wurfels gerendert und in den Hauptspeicher zuruck gelesen und

anschließend wavelet transformiert. Die einfache Implementierung birgt eini-

ge Nachteile in sich. Durch noch fehlende Implementation bilinearer Inter-

polation fur float-Texturen, wird nur der nachstliegendste Texel verwendet.

Fur eine Punktlichtquelle in der Große von einem Texel in der lightprobe,

wird dieser manchmal auf ein oder mehrere Pixel in dem Lichtvektor ab-

gebildet. Bei Bewegung scheint das Licht zu flackern. Dies wird durch die

geringe Auflosung von 64x64 pro Seitenflache verstarkt. Alternativ konnte

das Umgebungslicht zunachst in einer hoheren Auflosung gerendert werden

und anschließend gemittelt werden. Doch die hohere Auflosung bedeutet auch

mehr Daten. Leider ist das zuruck lesen von float-Texturen nicht optimiert,

womit selbst die eigentlich geringe Große von ca. 1MB bei 128x128 viel Zeit

beansprucht. Statt der Grafikhardware-Version ist auch eine reine CPU Ver-

sion denkbar, die deutlich schneller sein sollte.

Die eigentliche Beleuchtung gestaltet sich nun recht einfach. Fur jeden

Vertex wird der Lichtvektor mit dem entsprechenden Zeilenvektor der Tran-

portmatrix multipliziert. Der Zeilenvektor besteht in der Implementierung

18

Page 20: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

aus einer Reihe von structs, die den eigentlichen Wert der Koeffizient und

desses ursprunglichen Indizes beinhaltet.

Algorithmus 2 : Pseudocode fur Vektormultiplikation

Vector sum = (0,0,0);

for each vertex v do

for each struct s of v.transportVector dosum += s.value*lightVector[s.index];

end

end

4.3 Programmbeschreibung

Das Programm ladt zunachst eine Beispielszene mit den entsprechenden

visibility-maps. Mittels rechter Maustaste erscheint ein glut-Menu mit fol-

genden Optionen:

load scene Ladt eine Szene im *.g Dateiformat.

load lightprobe Ladt eine Lightprobe im vertical cross Format.

auto tonemap Gleicht die Lichtintensitaten fur die Darstellung auf einem

Monitor an.

rotation → Camera/Lightprobe Legt fest, ob die Kamera oder die light-

probe mit der Maus rotiert werden kann.

drawmode → filled/wireframe Einstellen des rendering-Modus.

visibility map → generate/load/save Verwalten der visibility map.

quality → null/.../full Festlegen von vordefinierten Qualitatsstufen.

Die linke Maustaste aktiviert den Rotationsmodus. Mit den Tasten w/a/s/d

wir im Kamerarotationsmodus nach vorne/links/hinten/rechts bewegt. In der

Konsole erscheinen Statistiken uber das Programm wie zum Beispiel Anzahl

der vertices pro mesh, benotigte Zeit zum Erstellen/Laden/Speichern der

19

Page 21: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Transportmatrix und die gemittelte Anzahl der verwendeten Koeffizienten

bei einer Qualitatsstufe.

Die Auflosung der Seitnenflachen der cubemap werden momentan noch

wahrend der compile-time festgelegt. Alle gezeigten Bilder in dieser Ausar-

beitung wurden mit einer Auslosung von 64x64 erstellt.

4.4 Analyse

An der Implementierung lasst sich sicherlich noch einiges Verbessern, vor al-

lem die Geschwindigkeit. Ziel war es, IBL in Echtzeit zu erreichen. Zunachst

benotigt der Vorverarbeitungsschritt selbst fur kleinere Szenen mit 11k verti-

ces 4 Minuten. Da dieser teilweise auf der Grafikkarte ausgefuhrt wird und da-

nach in den Hauptspeicher kopiert wird ergibt sich ein Maximum bei 8x AGP

von ca. 160 MB/s oder ungefahr 6000 Vertex-Sichtbarkeiten. In der momen-

tanen Implementierung wird lediglich ein Datendurchsatzt von 1-2MB/s er-

reicht. Die Grunde hierfur liegen zum einen in dem ungeeigneten Zeichenmo-

dus mittels glBegin()/glVertex()/glEnd(). Die Daten mussen jedesmal erneut

der Grafikkarte gesendet werden, zudem ergibt sich ein function-overhead der

eine schnelle Ubertragung hindert. Zum anderen wird die Parallelarchitektur

von CPU/GPU nicht ausgenutzt, da erst Daten in den Hauptspeicher zuruck

gelesen werden konnen, wenn der rendering Schritt vollstandig durchgefuhrt

wurde und umgekehrt wartet glReadPixels auf die vollstandige Ubertragung

der Daten. Dies betrifft lediglich den Vorverarbeitungsschritt, der im Idealfall

nur einmal pro Szene durchgefuhrt werden muss.

Gravierend ist die mangelnde Optimierung bei der Beleuchtung in Echt-

zeit. Gerendert wird hier ebenfalls mittels primitive calls. Schneller ware

hierbei sicherlich die Ubertragung per vertex arrays oder gar vertex buffer

objects. Eine genauere Analyse des Programmes ergab, dass die meiste Zeit

fur die Berechnung des wavelet-Integrals benotigt wird. Hauptgrund hierfur

ist die Verteilung der Daten auf dem Hauptspeicher. Die cache-Architektur

wird hierbei sehr schlecht ausgenutzt. Eine Sortierung der Daten fur eine

bessere cache Ausnutzung kann die Laufzeiteigenschaften des Algorithmus

sicherlich wesentlich verbessern. Zudem wurde eine Umstellung der Vektor

20

Page 22: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

(a) medium Qualitat (b) low Qualitat

(c) wireframe Darstellung (d) Menu Anzeige

Abbildung 8: screenshots

21

Page 23: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Klasse auf SSE/MMX Erweiterungen die benotigte Zeit pro Bild annahernd

halbieren.

Ein Graph, der die Abhangigkeit von der mittleren Koeffizienten zu Ren-

derzeit pro Bild zeigt, ist in Abbildung 9 zu sehen. Die roten Punkte bzw.

Kreise beziehen sich auf das Beethoven Modell, die blauen Sterne auf das

Harley Modell. Gemessen wurde lediglich die benotigte Zeit fur die Beleuch-

tung des Modells inklusive der Wavelet Transformation des Umgebungslich-

tes. Fur das Beethoven Modell wurden zwei Messungen vorgenommen. In

roten Punkten wurde ein Datensatz mit einer durchschnittlichen Koeffizien-

tenanzahl von 550, in roten Kreisen mit durchschnittlich 416 Koeffizienten,

verwendet. Bemerkenswert ist hierbei das nichtlineare Erscheinugsbild der

Graphen. Dies lasst sich mit der hoheren Wahrscheinlichkeit eines cache hits

bei Verwendung der gesamten Anzahl der Koeffizienten eines Datensatzes

erklaren. In Abbildung 10 ist derselbe Graph zu sehen hier lediglich mit den

Zeiten fur das Harley Modell mittels der Anzahl der vertices skaliert. Als

Testrechner wurde ein 3.3GHz P4 verwendet.Beethoven Harley

#Vertices 11.431 29.898

5 Vergelich zu Spherical Harmonics

Eine Einfuhrung in Spherical Harmonics(SH) und deren Anwendung in IBL

wird in [7] gegeben. Ahnlich wie bei diesem wavelet Ansatz wird zunachst die

Funktion des Umgebungslichtes auf eine neue Basis projiziert. Diese besteht

aus einer orthonormalen Basis aus assozierten Legendre Polynomen. Diese

Funktionen sind, wie der Name SH schon verrat, direkt auf einer Kugelober-

flache definiert. Die einzelnen Basen von SH sind auf der ganzen Oberflache

der Kugel definiert. Lediglich an kleinen Bereichen sind die einzelnen Funk-

tionen nahe an 0. Dies bedeutet das ein Koeffizient einer Basis viele Punkte

auf der Oberflache beeinflusst. Die Annaherung der eigentlichen Funktion

des Lichtes durch SH Koeffizienten erscheint weich. Hierin ist der Hauptun-

terschied zwischen dem wavelet und dem SH Ansatz begrundet. SH eignet

sich sehr gut, um mit wenigen Koeffizienten niederfrequente Beleuchtung

22

Page 24: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

0 100 200 300 400 500 6000

10

20

30

40

50

60

70

80

90

100tim

e in

ms

average coefficients

beethovenbeethovenharley

Abbildung 9: Laufzeiteigenschaften

anzunahern, hingegen hat diese Methode ein Problem bei hochfrequenten

Anteilen diese zu lokalisieren. Zum Beispiel bei einer Punktlichtquelle. Wa-

velets hingegen brauchen, Aufgrund der unstetigen Basisfunktionen, fur eine

”weiche“ Beleuchtung eine hohe Anzahl an Koeffizienten (Abbildung 11).

Jedoch lasst sich die Anzahl der Koeffizienten beim wavelet Ansatz durch

nicht-lineare Komprimierung verringern. Fur SH ist mir kein vergleichbarer

Ansatz bekannt.

Die eigentliche Berechnung der Beleuchtung gestaltet sich bei beiden

Ansatzen ahnlich. Sie besteht im wesentlichen aus einer Summation von Pro-

dukten. Jedoch kommt bei dem wavelet Ansatz der unregelmaßige Speicher-

zugriff Aufgrund der nichtlinearen Komprimierung hinzu. Dieser Effekt kann

durch Sortierung oder Komprimierung des Umgebungslichtes und geschickte

Anordnung der Daten verringert werden.

23

Page 25: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

0 100 200 300 400 500 6000

5

10

15

20

25

30

35

40

45

50

average coefficients

time

in m

s

Abbildung 10: Laufzeiteigenschaften mit Harley skaliert

6 Resume und Ausblick

Die Qualitat der Darstellung hat noch zwei Probleme. Durch die Berech-

nung der Beleuchtung pro Vertex und ungunstiger Triangulierung entsteht

am Rand von Schatten ein deutlich sichtbares ZickZack Muster. Alterna-

tiv konnte auch jeder Oberflache eine Textur zugewiesen werden und die

Berechnung pro Pixel durchgefuhrt werden. Durch bilineare Interpolation

verschwindet dieses Artefakt. Zudem wird die unregelmaßige Verfeinerung

eines 3D Modells durch eine gleichmaßige ersetzt. Das zweite Problem be-

trifft die Rotation der lightprobe. Dieser Schritt wird mittels OpenGL geren-

dert. Durch die niedrige Auflosung enstehen aliasing-Artefakte die sich bei

Bewegung durch Flackern bemerkbar machten Dies entsteht durch die feh-

lende Interpolation bei Flieskommazahlen gangiger Grafikhardware. Die neue

Generation der Geforce6800 bietet diese Funktion. Eine Moglichkeit dies zu

umgehen bestunde darin, die Auflosung fur die Erstellung der rotierten light-

24

Page 26: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 11: Vergleich von SH und wavelets Naherung von St.Peters Ba-silica mit hochfrequenten Anteil links und niederfrequent auf der rechtenSeite.

probe zu erhohen und danach zu mitteln. Ebenfalls konnte die Berechnung

der sechs Seitenflachen auf der CPU stattfinden und dort mittels subsampling

verbessert werden. Zudem wird beim Vorverarbeitungsschritt die Tranport-

matrix in der spater verwendeten Auflosung erstellt. Aliasing Artefakte, die

durch feine Strukturen entstehen, gehen somit in die Berechnung der Beleuch-

tung mit ein. Antialiasing oder multisampling wurde Abhilfe schaffen, sind

aber nicht implementiert worden. Interessant ware auch die Untersuchung,

wie sich dieser Ansatz auf andere orthonormale wavelet Basen auswirkt, spe-

ziell ob er sich auf Spherical Wavlets anwenden lasst [8].

Literatur

[1] Eric J. Stollnitz, Tony D. DeRose, David H. Salesin

Wavelets for Computer Graphics: A Primer

University of Whashington, Technical Report 94-09-11

[2] R. DeVore, B. Jawerth, B. Lucier

Image compression through wavelet transform coding

IEEE Transactions on Information Theroy, 38(2):719-746, Marz 1992

25

Page 27: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

[3] Paul Debevec

Image-Based Lighting

IEEE Computer Graphics and Applications, March/April 2002

[4] Paul Debevec, Jitendra Malik

Recovering High Dynamic Range Radiance Maps from Photographs

SIGGRAPH 97, August 1997

[5] Ren Ng, Ravi Ramamoorthi, Pat Hanrahan

All-Frequency Shadows Using Non-linear Wavelet Lighting Approxima-

tion

ACM Transactions on Graphics, July 2003

[6] Chris Wynn

OpenGL Render-to-Texture

developers.nvida.com

[7] Robin Green

Spherical Harmonic Lighting: The Gritty Details

[8] Peter Schroeder, Wim Sweldens

Spherical Wavelets: Efficiently Representing Functions on the Sphere

26

Page 28: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 12: Beethoven mit 250 Koeffizienten

Abbildung 13: Beethoven mit 53 Koeffizienten

27

Page 29: Bild-basierte Beleuchtung virtueller Objekte in Echtzeit ...cg/Studienarbeiten/hdrwavelet.pdf · Warum, wird in sp¨ater deutlich. Wie zuvor bereits erl ¨autert, l ¨asst sich ein

Abbildung 14: Beethoven mit 43 Koeffizienten

Abbildung 15: Harley mit 340 Koeffizienten und uberlagertem mesh

28