Realistische Beleuchtungssimulation mittels Photon-Maps

Die Seite wird erstellt Rafael Kopp
 
WEITER LESEN
Realistische Beleuchtungssimulation mittels Photon-Maps
Realistische Beleuchtungssimulation mittels Photon-Maps
               (Realistic Illumination Simulation using Photon-Maps)

    Systementwicklungsprojekt am Lehrstuhl Graphik und Visualisierung der TU
                        München Prof. R. Westermann

                                   Dimitri Khanin

                               Betreuer: Dr. P. Kipfer

Einleitung
Die photorealistische Visualisierung dreidimensionaler Szenen ist noch immer eine
Herausforderung in der Computergraphik. Mit der Verfügbarkeit immer
leistungsfähigerer Prozessoren und Graphiksysteme vergrößern sich zwar die
Möglichkeiten der Anwendung, die Bedürfnisse der Benutzer werden aber auch
immer anspruchsvoller. So werden die Berechnungsverfahren im Bereich Architektur
mit immer größeren, detaillierten Szenen konfrontiert. Physikalisch korrekte
Lösungen werden bei der Beleuchtungsplannung von Innenräumen erwartet. Und die
Geschwindigkeit spielt dabei eine wichtige Rolle.
Zurzeit existieren zwei am meisten verwendeten Verfahren für globale Beleuchtung:
raytracing (dt. Strahlverfolgung) und radiosity. Beide haben ihre Vor- und Nachteile
und deswegen können sich nicht gegenseitig ausschließen. Es wird ständig nach
neuen Möglichkeiten zur Verbesserung dieser Algorithmen aber auch nach prinzipiell
neuen Verfahren gesucht.
Mit Photonmaps stellte Jensen [1] ein Verfahren vor, welches mit wenig
Mehraufwand auch die Visualisierung komplexer optischer Phänomene wie diffuse
Reflexionen oder Kaustiken (engl. caustics) ermöglicht.

Aufgabenstellung
Ziel der Arbeit ist ein Software zu entwickeln, womit die dreidimensionalen Objekte
im Form von DXF-Dateien eingelesen und einschließend zu den beliebigen
Zeitpunkten innerhalb des Jahres durch Sonnenlicht beleuchtet werden können. Als
Basis für die Entwicklung soll ein schon vorhandenes Visualisierungs-Tool für die
statistische Auswertung von Besonnungsdaten dienen.

Theoretische Grundlagen
Die Arbeitsweise des klassischen Photonmap-Verfahrens lässt sich in zwei Phasen
unterteilen. Im ersten Schritt wird die von den Lichtquellen ausgehende Energie in
Form kleiner Pakete (Photonen) durch die Szene transportiert. Beim Kontakt eines
Photons mit einer Oberfläche wird entschieden, ob das Photon absorbiert, reflektiert
oder transmittiert werden soll. Das Auftreffen des Photons auf eine diffuse Oberfläche
wird in einer speziellen Datenstruktur (kd-Baum, s. unten) vermerkt. Die
Visualisierung erfolgt im zweiten Schritt durch Strahlverfolgung und Auswertung der
gespeicherten Photonendaten.
k-d-Bäume (k-d steht für „k-dimensional“) bilden eine Verallgemeinerung eines
binären Suchbaums mit einem Sortierschlüssel. Diese Bäume verwalten eine Menge
von mehrdimensionalen Datenpunkten (im unseren Fall Photonen). Jeder
Baumknoten erhält ein komplettes Datenrecord und zwei Zeiger auf den linken und

                                          1
Realistische Beleuchtungssimulation mittels Photon-Maps
rechten Sohn. Die Werte der einzelnen Attribute werden abwechselnd auf jeder Ebene
des Baums zur Diskriminierung verwendet. Es handelt sich um eine statische
Struktur, die Operationen Löschen und die Durchführung einer Balancierung sind
sehr aufwendig.

Realisierung
Das Modell wird eingelesen und mit den entsprechenden Texturen visualisiert. Nach
der Bestimmung des Zeitpunktes, zu dem die Berechnung stattfinden soll, wird die
Sonnenposition ermittelt. Dies passiert mit dem so genannten DIN Algorithmus
(Deutsches Institut für Normung) [3]. Dieser Algorithmus berücksichtigt zwar nicht
die Brechung des Sonnenlichtes in der Atmosphäre was für unsere Simulation aber
ausreichend ist.
Als Eingabe für den Algorithmus dienen:
• geografische Position des Ortes (beschrieben durch Breitengrad              φ

                                                                                   und
    Längengrad ), es werden die festen Werte für München verwendet
                λ

• ein Tag des Jahres
• Uhrzeit des Tages (in Mitteleuropäischer Zeit (MEZ) angegeben, also für die Orte
    außerhalb von MEZ-Zone muss gegebenenfalls eine Korrektur vorgenommen
    werden)
Anhand dieser Angaben wird der Sonnenstand berechnet. Der ist durch
• Sonnenhöhe        γ

• Sonnenazimuth         α

definiert.
Der Algorithmus liefert ziemlich genaue Ergebnisse.
Danach werden die Photonen abgeschossen. Für jede Fläche wird ein Raster erzeugt,
in dessen Zellen die eigentliche Berechnung stattfinden soll. Für den Mittelpunkt
jeder Zelle wird mittels Aussenden eines Strahls in die Lichtrichtung zuerst bestimmt,
ob dieser Punkt beleuchtet ist. Falls dieser Strahl ein Objekt in der Szene trifft,
bedeutet das dass entsprechende Zelle im Schatten liegt und es wird ein
Schattenphoton erzeugt und mit jeweiligen Koordinaten in den Baum gespeichert. Im
zweiten Fall wird diese Stelle als beleuchtet angenommen, es wird eine
Reflexionsrichtung bestimmt, ein „normales“ (direct illumination) Photon wird
angelegt und es wird berechnet, ob der neue Reflexionsstrahl innerhalb der Szene
bleibt, d.h. sich mit den anderen Objekten schneidet. Im diesen Fall wird es im
Schnittpunkt ein neues Reflexionsphoton erzeugt, das die Farbe seines
Ursprungpunktes aufweist, die aber mit dem Reflexionskoeffizient des
Ausgangspunktes multipliziert (also gedämpft) wird. Dieser Koeffizient wird im
Alphakanal      der    zugehörigen    Textur      gespeichert.     Die    Tiefe    der
Spiegelungsberechnung, also die Anzahl von berechneten Reflexionen wird vom
Benutzer bestimmt. In diesem Schritt werden die Photonen ohne Rücksicht auf ihre
räumliche Position in den kd-Baum geschrieben. Erst dann, wenn alle Photonen
abgeschossen wurden, passiert einmalige Balancierung des Baums. Jedes gespeicherte
Photon verfügt über folgende Informationen:
• Farbe
• räumliche Position
• einfallende Strahlrichtung
• Normalvektor
• Typ (Normal-, Schatten- oder Reflexionsphoton)

                                          2
Realistische Beleuchtungssimulation mittels Photon-Maps
Nun kann die Suche nach Photonen, die innerhalb eines Kreises um einen Punkt
liegen, ziemlich schnell durchgeführt werden.
Im weiteren Schritt werden die „Beleuchtungstexturen“ erzeugt. Für die oben
beschrieben Rasterpunkte an den Flächen werden die umliegenden Photonen gesucht
und anhand ihrer Farbenwerte wird die resultierende Farbe errechnet. In der Endphase
werden die Haupttexturen (Texturen die Eigenschaften von Flächen bestimmen) mit
den Beleuchtungstexturen mittels Shader moduliert.

Verbesserungen und Erweiterungen
Wie schon erwähnt wurde, werden die Objekte aus CAD-Programmen in Form von
DXF-Datei importiert. DXF (Drawing Exchange Format) ist ein Vektorformat, das
von der Firma Autodesk entwickelt wurde und stellt zurzeit das am meisten
verbreitete Datenaustauschformat für CAD-Programme dar. Die Dokumentation dafür
liegt offen. Dennoch ist das Lesen von solchen CAD-Daten alles andere als
unproblematisch, insbesondere wegen der Vielzahl an verschiedenen Versionen und
der Tatsache, dass verschiedene Software-Hersteller eigene Programmteile zur
Erzeugung von DXF-Dateien einsetzen. Kaum ein Datenaustausch gelingt auf Anhieb
vollkommen. Außerdem hat es sich im Laufe der Arbeit herausgestellt, dass die DXF-
Dateien eigentlich keine Informationen über die Oberflächeneigenschaften des
Modells (Farbe, Reflexionskomponente, Textur usw.) speichern können.
Dies alles bedeutet, dass für weitere Entwicklung des Tools ein neues Datenformat
gefunden werden soll, z.B. die 3DS-Dateien.
Als weitere Erweiterungsmöglichkeit soll man die Berücksichtigung von
Brechungseigenschaften von bestimmten Materialien nennen.

Ergebnisse

                                         3
Realistische Beleuchtungssimulation mittels Photon-Maps
Literatur
[1] Jensen, Henrik Wann, Christensen, Niels Jorgen. Efficiently Rendering Shadows
using the Photon Maps. In Proceedings of Computergraphics, pages 285 – 291, Alvor,
December 1995.
[2] Jensen, Henrik Wann. Global Illumination using Photon Maps. Rendering
Techniques ’96 (Processing of the 7th Eurographics Workshop on Rendering, pages
21 – 30, 1996
[3] Quaschning, Volker. Regenerative Energiesysteme: Technologie, Berechnung,
Simulation; mit 79 Tabellen, München, Hanser, 1998, ISBN 3-446-19369-3

                                        4
Realistische Beleuchtungssimulation mittels Photon-Maps
Anhang User Manual
Mit dem Menüpunkt File -> Open… kann man eine Datei bestimmen, aus der das
Modell eingelesen wird. Weiter besteht es die Möglichkeit mit dem Punkt Shadows ->
Create… die bestimmte Sonnenposition einzugeben. Bei der Betrachtung der Szene
können wahlweise die Objekte sowohl mit Texturen als auch mit Kanten, nur mit
Texturen und nur mit Kanten dargestellt werden. Darüber hinaus kann man nach der
Beleuchtungsberechnung die Lichtstrahlen ein- oder ausblenden.
Die Navigation durch die Szene wird hauptsächlich mit der Maus gesteuert:
Bewegung nach links mit der linken Taste gedrückt – Rotation im Uhrzeigersinn um
die vertikale Achse
Bewegung nach rechts mit der linken Taste gedrückt – Rotation gegen den
Uhrzeigersinn um die vertikale Achse
Bewegung nach oben mit der linken Taste gedrückt – Rotation zu sich um die
horizontale Achse
Bewegung nach unten mit der linken Taste gedrückt – Rotation von sich um die
horizontale Achse
Bewegung mit der rechten Taste gedrückt – das Modell in die entsprechende Richtung
parallel zum Bildschirm bewegen
Das Mausrad nach vorne drehen – Einzoomen
Das Mausrad nach hinten drehen – Auszoomen
Betätigung dabei Shift-Taste bescheunigt den Zoomprozess

                                        5
Realistische Beleuchtungssimulation mittels Photon-Maps Realistische Beleuchtungssimulation mittels Photon-Maps Realistische Beleuchtungssimulation mittels Photon-Maps
Sie können auch lesen