Raytracing

Transcription

Raytracing
Raytracing
Ausarbeitung zum Seminarvortrag „Raytracing“ am 01.07.2011
Proseminar „How to make a Pixar Movie“
Technische Universität München
Sebastian Wiendl
Betreuer: Dipl.-Inf. Matthäus G. Chajdas
Inhaltsverzeichnis
1. Was ist Raytracing? ......................................................................................................................... 2
2.
3.
1.1.
Einleitung und Anwendungsmöglichkeiten ............................................................................ 2
1.2.
Funktionsweise eines Raytracers ............................................................................................. 2
1.3.
Pathtracing ............................................................................................................................... 4
Verbesserung der Laufzeit............................................................................................................... 5
2.1.
Effizientes Sampling beim Pathtracing ................................................................................... 5
2.2.
Raumpartitionierung................................................................................................................ 6
2.2.1.
BVH – Bounding Volume Hierarchie ............................................................................. 6
2.2.2.
BSP – Binary Space Partition .......................................................................................... 6
Zusammenfassung und Ausblick..................................................................................................... 7
Literaturverzeichnis ................................................................................................................................. 8
Abbildungsverzeichnis ............................................................................................................................ 8
1
1.
1.1.
Was ist Raytracing?
Einleitung und Anwendungsmöglichkeiten
Raytracing ist, wie der Name schon sagt, eine Methode, bei der Lichtstrahlen verfolgt werden. Sie
wird hauptsächlich in der Computergrafik zur Erstellung fotorealistischer Bilder verwendet.
Raytracing arbeitet basierend auf physikalischen
Gesetzen, wie Lichtreflexion und -brechung, und
kann Grafiken erstellen, die schon heutzutage so
realistisch sind, dass kaum mehr zwischen einer
echten Fotografie und dem durch Raytracing
erzeugten Bild unterschieden werden kann (siehe
Abbildung 1).
Obwohl heutige Rechner um ein vielfaches
Leistungsfähiger sind, als noch vor 10 oder 20 Jahren,
Abbildung 1 Ein durch Raytracing erstellter Ferrari
werden erst nach und nach auch ganze Filme
produziert. Beispiele hierfür sind Animationsfilme, wie „Cars“ (Disney, 2010), oder „Cloudy with a
Chance of Meatballs” (Sony Pictures, 2011). Die Stärken des Raytracing sind vor allem: „realistic
reflections, sharp shadows, and ambient occlusion“ (Per H. Christensen, 2006). (dt.: realistische
Reflexionen, scharfe Schatten und die Umgebungsverdeckung).
Echtzeitraytracing ist noch in seinen Anfängen, weil die Berechnungen immer noch zu umfangreich
sind. Dieses Manko ist auch Hauptgegenstand der heutigen Forschung.
Je mehr Objekte und Lichtquellen in einer Szene vorhanden sind, desto höher ist der Aufwand, ein
Bild zu rendern. Deswegen werden viele Methoden eingesetzt, die der effizienteren Berechnung der
Bilder dienen.
Im Folgenden soll zunächst das Grundprinzip des Raytracing vorgestellt werden, um danach kurz
einige Wege zur effizienteren Gestaltung anzusprechen.
1.2.
Funktionsweise eines Raytracers
Im Gegensatz zur Realität, in der das Licht von einer, oder mehreren Lichtquellen emittiert wird, dann
auf Objekte auftrifft und entweder absorbiert, gebrochen und/oder gespiegelt wird, arbeiten Raytracer
im Allgemeinen genau gegengesetzt. Die Funktionsweise beim sogenannten Backward Raytracing (im
Gegensatz zum Forward Raytracing) ist wie folgt:
Die Sicht auf die Szene ist durch einen Blickwinkel bestimmt, der von der Position der Kamera
festgelegt ist. Dann legt man zwischen die Kamera und die Szene einen virtuellen Bildschirm, der als
Projektionsfläche dient.
2
Nun fährt man schrittweise fort:
1. Es wird ein Strahl von der Kamera aus durch jedes Pixel der Projektionsfläche erzeugt.
2. Jeder einzelne Strahl wird auf Schnittpunkte mit allen Objekten untersucht
3. Nun wird mit dem Schnittpunkt des am nächsten gelegenen Objektes
gearbeitet. Wird an dieser Stelle abgebrochen und die Farbe des
Objektes für das entsprechende Pixel verwendet, erhalten wir ein solches
Bild:
Abbildung 2 Bild nach
Schnittstellenberechnung
4. Von dort aus werden sogenannte Schattenstrahlen zu allen Lichtquellen ausgesendet.
5. Jetzt wird die Farbe des Objektes mit der
akkumulierten Lichtintensität der Lichtquellen
skaliert. Wird an dieser Stelle abgebrochen
erhalten wir bereits eine plastisch Ansicht. Wird
jetzt noch die Schattenberechnung mit eingebaut,
so wäre das Bild bereits fertig berechnet, wenn
alle Objekte in der Szene nur aus diffusen
Materialien (also nicht spiegelnden Materialien)
bestünden. Zur Schattenberechnung muss man Abbildung 4 Bild nach
überprüfen, ob sich auf dem Weg zwischen Lichtquellenberechnung
Lichtquelle und Schnittpunkt ein Objekt befindet,
dass die Lichtquelle verdeckt. Wenn dies der Fall ist kommt kein Licht
von dieser Lichtquelle an.
Abbildung 3 Ausgabe,
wenn die
Schattenberechnung
aktiviert ist
6. Ist das Material unseres Objektes spiegelnd, so wird der
reflektierte Strahl erzeugt und die bisherige Farbe wird mit der
Farbe des neuen Strahls (je nach Reflexionsgrad) gegengerechnet.
 Reflexion erfordert also rekursives Raytracing
Abbildung 5 Fertiges Bild mit
Reflexionen
Bei der Rekursion zu Beachten:
Bei spiegelnden Materialien würde sich im Programmablauf eine Endlosschleife ergeben, wenn man
nicht beachtet, dass die Lichtintensität mit jeder Reflexion abnimmt. Fällt der Wert unter eine
bestimmte Grenze, so ist die Schleife zu verlassen. Eine andere Methode ist die, dass man schon im
Vornherein festlegt, dass es eine bestimmte Rekursionstiefe geben soll, also nur zum Beispiel die
ersten zwei Spiegelungen berechnet werden. So wurde auch im Film Cars vorgegangen.
3
1.3.
Pathtracing
Bei den in 1.2. verwendeten Bildern wurde zur besseren Darstellung zusätzlich zu dem gerichtet
einfallendem Licht noch ein Ambientes Licht hinzu gefügt. Dies ist eine einfache Methode, um schnell
globale Beleuchtung zu erhalten, aber entspricht nicht der Wirklichkeit und kommt daher eigentlich
als Lichtquelle nicht in Frage. Um dennoch globale Beleuchtung darstellen zu können, wurde das
Raytracing erweitert. Die neue Methode nennt sich nun Pathtracing. Das Problem beim Raytracing
war, dass Materialien, die nicht spiegelnd sind, nur sichtbar wurden, wenn direkt Licht von einer
Lichtquelle auftrifft. Doch in Wirklichkeit wird Licht selbst von diffusen
Materialien nicht vollkommen absorbiert, sondern ein Bruchteil wieder
emittiert und an die Umgebung abgegeben, wodurch auch Objekte sichtbar
werden, die im Schatten liegen, da sie indirekte Beleuchtung erhalten.
Abbildung 6 Bild ohne
Pathtracing und Ambientes
Licht
Ohne Pathtracing und Ambientes Licht sähe
die Szene so aus:
Beim Pathtracing wird nun, unabhängig vom Material des Objektes, bei jedem neuen Schnittpunkt
immer ein neuer Strahl ausgesandt. Die Richtung des austretenden Strahles ist zunächst beliebig. Bei
spiegelnden Materialien, werden die austretenden Strahlen jedoch vermehrt in die Reflexionsrichtung
ausgesandt, die auch beim normalen Raytracing verwendet wird. Dadurch werden nun nicht nur die
Lichteinflüsse direkter Lichtquellen berücksichtigt, sondern auch indirekte Lichteinflüsse. Ist nun zu
einem gewissen Zeitpunkt die Lichtintensität wieder unter ein Minimum gefallen, wird abgebrochen.
Der Name Pathtracing („Pfadverfolgung“) rührt daher, dass der Strahl sich auf seinem Weg durch die
Szene nie aufspaltet, sondern wirklich nur einen Pfad verfolgt. Da aber der Strahl grundsätzlich bei
jedem Schnittpunkt jetzt in eine beliebige Richtung wieder ausgesandt wird, kommt man jetzt nicht
mehr damit aus, durch jedes Pixel nur einen Strahl auszusenden. Es muss durch jeden Bildpunkt eine
Vielzahl an Strahlen ausgesandt werden, die sich ihren Weg durch die Szene bahnen. Am Schluss wird
dem Pixel die durchschnittliche Farbe der Einzelstrahlen zugeordnet.
Der große Nachteil des Pathtracing ist, dass eine immens hohe Anzahl an Strahlen durch jedes Pixel
geschickt werden muss, damit die Szene klar und scharf erkennbar ist. Dies ist in Abbildung 7 und 8
gut zu erkennen. In Abbildung 7 ist ein starkes Rauschen im Bild sichtbar, was auf eine ungenügende
Anzahl an Strahlen zurückzuführen ist.
Abbildung 7 Rauschen aufgrund
zu niedriger Strahlenanzahl
4
Abbildung 8 wesentlich höhere
Strahlenmenge
In Abbildung 9 ist eine Lichtverteilung in einer willkürlichen Szene
gegeben. Die waagrechte Achse beschreibt hierbei den Winkel, in dem
ein Strahl von einem Punkt austritt. Die senkrechte Achse stellt die
Lichtintensität dar, die der Strahl in der jeweiligen Richtung antreffen
würde. Mit den vier Samples in der Szene werden 4 Punkte des Graphen
abgegriffen, mit denen das Gesamtintegral über die Lichtintensität
abgeschätzt werden kann. Da das Licht gut verteilt ist, reichen hier auch
wenige Strahlen aus, um dies zu tun.
2.
2.1.
Abbildung 7 Lichtverteilung in
der Szene
Verbesserung der Laufzeit
Effizientes Sampling beim Pathtracing
Wie in Abbildung 9 schon gesehen, gilt es, durch eine genügend hohe Anzahl an Samples das Integral
der Lichtintensität in der Umgebung abzuschätzen. Das Beispiel war noch einfach, da fast eine
Gleichverteilung vorlag. In den meisten Szenen wird das aber nicht der Fall sein und man trifft eher
Integrale folgender Form an:
Es gibt eine Intensitätsspitze an einem Punkt. Dies kann passieren, wenn
zum Beispiel ein Spotlight an eine Wand strahlt. Alle von dort aus
sichtbaren Punkte würden in diese Richtung solch eine Spitze aufweisen.
In Abbildung 10 werden fünf Intensitäten abgegriffen. Da aber kein
Sample nahe dem Maximum ist, würde das Integral sehr schlecht
angenähert werden und wir bekämen eine falsche Darstellung der Szene.
Abbildung 8 schlechtes Sampling
Abbildung 9 schlecht beleuchtete Szene
Abbildung 11 zeigt eine Szene, die sehr verwinkelt
ist und nur eine Lichtquelle hat. Dies wäre ein
Beispiel, bei dem durch zufällige Samples nur ein
gutes Ergebnis erzielt werden kann, wenn eine
aberwitzig große Menge an Strahlen ausgesendet
wird, damit das Integral fast exakt berechnet
werden kann.
Da dadurch aber der Rechen- und der damit verbundene Zeitaufwand untragbare Proportionen
erreichen würde, muss die Zufälligkeit der Strahlen eingeschränkt werden.
5
Abbildung 10 gutes Sampling
Was erwünscht ist, ist, dass die Samples wie in Abbildung 12 verteilt
sind. Um dies zu erreichen, muss die Richtung der Strahlen so
beeinflusst werden, dass sie tendenziell dorthin ausgesandt werden,
wo viel indirektes Licht zu finden ist. Eine Möglichkeit, dies zu tun,
ist, dass man sich abspeichert, wo bereits indirektes Licht mit hoher
Intensität gefunden wurde und dann davon ausgehend zukünftige
Strahlen mit hoher Wahrscheinlichkeit in diese Richtungen
auszusendet.
2.2.
Raumpartitionierung
2.2.1.
BVH – Bounding Volume Hierarchie
Bounding Volumes (BV) sind geometrische Objekte, meist Kugeln
(Spheres), oder Quader (Boxen), die um die Objekte in der Szene gelegt
werden. Ziel dessen ist, dass man, bevor man den Schnittpunkttest eines
Strahles mit jedem einzelnen Teilobjektes eines großen, komplexen Objekts
durchführt, nun zunächst einmal nur zu überprüfen braucht, ob der Strahl
das begrenzende Bounding
Volume schneidet.
Abbildung 11 BVH eines
Modells mit Bounding Boxes
Die
Bounding
Volume
Hierarchie
ist
eine
hierarchische Anordnung der
jeweiligen
Bounding
Volumes in Baumstruktur.
Hierbei beinhaltet jeweils das BV im Vaterknoten auch
Abbildung 12 BVH mit Boxen und als Baumstruktur
alle BV seiner Kinderknoten. Dadurch werden dann nur
die Schnittpunkte mit den BV der Kinderknoten überprüft, wenn der Test mit dem BV des
Vaterknotens erfolgreich war. Durch rekursive Aufrufe wird so der endgültige Schnittpunkt ermittelt.
Um effizient zu arbeiten, sollten die Bounding Boxes achsenorientiert sein.
2.2.2.
BSP – Binary Space Partition
Bei der BSP wird der gesamte Raum, ähnlich der BVH,
rekursiv unterteilt. Der Unterschied hierbei ist jedoch,
dass der Raum durch (Hyper-)Ebenen partitioniert wird.
Wie der Name schon sagt, wird jeder Raum und Teilraum
durch eine Ebene in zwei Teilräume geteilt („binary“).
Durch die wiederholte Aufteilung erhält man am Ende
wieder einen Baum, genauer gesagt, einen Binärbaum,
der bei Schnittpunkttests rekursiv abgearbeitet werden
6
Abbildung 13 BSP mit Baumansicht
kann. In den Blättern des Baumes befinden sich dann nur noch Teilräume, die jeweils ein Objekt
enthalten.
Erweiterungen dieses Verfahrens machen es zu einem effektiven Mittel. Hierzu werden die Ebenen an
den Koordinatenachsen orientiert. Die so erstellten Bäume nennt man k-d-Bäume. Dies vereinfacht
Schnittpunkttests um ein Vielfaches. Als Option kann man auch, anstatt jeden Raum durch eine Ebene
in zwei Unterräume zu unterteilen, 4, oder 8 Unterräume erstellen. Dadurch hätte dann jeder
Vaterknoten des resultierenden Baumes 4 bzw. 8 Kinderknoten. Die dadurch resultierenden Bäume
heißen dann dementsprechend Quadtrees und Octrees.
3.
Zusammenfassung und Ausblick
Zusammenfassend ist zu sagen, dass Raytracing in seiner ursprünglichen Art nur für einfache Szenen
geeignet ist, jedoch Dank Pathtracing und Raumpartitionierungen ein
effektives Verfahren geworden ist, dass mehr denn je einen Trend
erlebt. Kombiniert mit Photon Mapping lassen sich alle wesentlichen
Effekte mit einem Durchlauf brillant darstellen. Photon Mapping ist
eine weitere Erweiterung des Raytracing, mit dem die schnelle
Berechnung von Kaustiken (siehe Abbildung 16) durchgeführt werden
kann. Im Rahmen dieser Ausarbeitung wird darauf aber nicht weiter
eingegangen.
Abbildung 14 Darstellung einer
Kaustik
Im Moment ist Raytracing in seiner Gesamtheit noch nicht in Echtzeit
anwendbar, doch in Zukunft wird dies kein Problem mehr sein. Echtzeit-Raytracing ist derzeit wohl
der größte Forschungsschwerpunkt und durch weitere Prozessor- und Grafikkartenverbesserungen in
den nächsten Jahren liegen Echtzeitanwendungen für die breite Masse in greifbarer Nähe.
Ein Ansatz soll hier kurz erwähnt werden: „Cloud Gaming“ ist ein Begriff, der sich vermutlich
durchsetzen wird. Die Idee dahinter ist, dass eine große Anzahl der heute populärsten Computerspiele
nicht abgekapselt auf dem Rechner des Benutzers laufen, sondern, dass man online gegen diverse
andere Gegner auf der ganzen Welt spielen kann. Da die Interaktion sowieso durch einen großen
Server des Betreiberunternehmens geregelt werden muss, werden die umfangreichen Berechnungen
des Spieles auch direkt von dem Server erledigt. Somit muss der einzelne Benutzer selbst keinen
rechenstarken Computer mehr haben, sondern kann beispielsweise schon mit einem einfachen Laptop
diese Spiele spielen.
Abbildung 17
7
Literaturverzeichnis
Disney. (19. Juli 2010). Cars - Offizielle Film Website Ein Disney / Pixar Film. Abgerufen am 8. Juni
2011 von http://www.disney.de/DisneyKinofilme/cars/main-de.html?cid=de
Intel1. (09. 07 2011). Research@Intel · Future Lab: Cloud Gaming:. Abgerufen am 09. 07 2011 von
http://blogs.intel.com/research/2011/03/future_lab_cloud_gaming.php#more
Intel2. (09. 07 2011). Research@Intel · Wolfenstein gets ray traced - on your laptop!:. Abgerufen am
09. 07 2011 von http://blogs.intel.com/research/2010/09/wolfenstein_gets_ray_traced_-.php
Per H. Christensen, J. F. (September 2006). Ray Tracing for the Movie ‘Cars’. Abgerufen am 8. Juni
2011 von http://graphics.pixar.com/library/RayTracingCars/paper.pdf
Peter Shirley, R. K. (2003). Realistic Ray Tracing, Second Edition. A K Peters, Ltd.
Sony Pictures. (8. Juni 2011). Cloudy with a Chance of Meatballs. Abgerufen am 8. Juni 2011 von
http://www.sonypictures.com/movies/cloudywithachanceofmeatballs/
Sopra. (27. April 2011). Bounding Volume – Das Sopra Wiki. Abgerufen am 12. Juni 2011 von
http://sopra.le-gousteau.de/Bounding_Volume
Wikipedia. (13. Mai 2011). Binary Space Partitioning – Wikipedia. Abgerufen am 12. Juni 2011 von
http://de.wikipedia.org/wiki/BSP
Abbildungsverzeichnis
Abbildung 1 Ein durch Raytracing erstellter Ferrari ............................................................................... 2
Quelle: http://www.hardwareinfos.com/bild.php?bild_datei=img/berichte/nvidia_fermi_7.jpg&bild_name=Nvidia+Fermi%3A+Fer
rari+%28Raytracing%29
Abbildung 2 Bild nach Schnittstellenberechnung ................................................................................... 3
Quelle: selbsterstellt
Abbildung 3 Ausgabe, wenn die Schattenberechnung aktiviert ist ......................................................... 3
Quelle: selbsterstellt
Abbildung 4 Bild nach Lichtquellenberechnung ..................................................................................... 3
Quelle: selbsterstellt
Abbildung 5 Fertiges Bild mit Reflexionen ............................................................................................ 3
Quelle: selbsterstellt
Abbildung 6 Bild ohne Pathtracing und Ambientes Licht ...................................................................... 4
Quelle: selbsterstellt
Abbildung 7 Rauschen aufgrund zu niedriger Strahlenanzahl ................................................................ 4
Quelle: http://de.wikipedia.org/wiki/Path_Tracing
8
Abbildung 8 wesentlich höhere Strahlenmenge ...................................................................................... 4
Quelle: http://de.wikipedia.org/wiki/Path_Tracing
Abbildung 9 Lichtverteilung in der Szene............................................................................................... 5
Quelle: selbsterstellt
Abbildung 10 schlechtes Sampling ......................................................................................................... 5
Quelle: selbsterstellt
Abbildung 11 schlecht beleuchtete Szene ............................................................................................... 5
Quelle: http://fc06.deviantart.net/fs9/i/2006/074/7/f/Path_tracing_2_by_Hafunui.png
Abbildung 12 gutes Sampling ................................................................................................................. 6
Quelle: selbsterstellt
Abbildung 13 BVH mit Boxen und als Baumstruktur ............................................................................ 6
Quelle: selbsterstellt
Abbildung 14 BVH eines Modells mit Bounding Boxes ........................................................................ 6
Quelle: Betreuer
Abbildung 15 BSP mit Baumansicht....................................................................................................... 6
Quelle: selbsterstellt
Abbildung 16 Darstellung einer Kaustik ................................................................................................. 7
Quelle: http://www.cs.utexas.edu/~fussell/courses/cs354spring2007/assignments/raytracing/ray_examples/caustic_cognac.jpg
Abbildung 17 ......................................................................................................................................... 7
Quelle: selbsterstellt
9

Documents pareils