Raytracing
Inhaltsverzeichnis
Übersicht
Raytracing ist wie Rastergrafik ein Verfahren zur Erzeugung von 3-Dimensionalen Computergrafiken. Es ist ein hoch parallelisierbarer Prozess, der meist rein auf der CPU läuft, auffallend (über-)realistische Grafiken erzeugen kann, aber dafür sehr viel Rechenleistung verschlingt. Im High-Performance-Raytracing existieren auch Versuche auf GPUs zu rechnen, was im Zusammenhang mit Polygonmeshes gut zu bewerkstelligen ist, jedoch im Bereich von implizit gegebenen Körpern sehr schwierig bis unmöglich zu implementieren ist und je nach Anwendungsgebiet ein k.O. Kriterium oder bewusst in Kauf genommen werden kann (Mit OpenGl ist das Darstellen implizit gegebener Körper nicht ohne Weiteres machbar).
Prinzip
Die Funktionsweise eines Raytracers lehnt sich an eine Idee aus der Antike an. Man glaubte, daß das Auge Sehstrahlen verlassen und, sobald sie auf einen Gegenstand treffen, dem Auge die Sichtinformation zurückgeben. Bei einem Raytracer werden diese Strahlen von einem 4-Eck, welches den Monitor repräsentiert, in die Szene geworfen.
Schatten
Trifft ein Strahl ein Objekt, so können von Dort weitere Strahlen zu den Lichtquellen geworfen werden. Trifft ein solcher noch vor der Lichtquelle auf ein weiteres Objekt, so liegt der Punkt im Schatten der Lichtquelle und wird nicht beleuchtet.
Reflexionen und Transparenz
Ähnlich kann bei Reflexionen vorgegangen werden. Wird ein spiegelndes Objekt getroffen, so werden Strahlen in die Reflektionsrichtung geworfen um zu bestimmen, was sich in der Reflexionsrichtung befindet.
Transparenz funktioniert dann natürlich ähnlich, nur daß dann der Strahl in das Objekt hineingebrochen und nicht darüberhinweg gespiegelt wird.
Lösen impliziter Mathematischer Gleichungen
Das Lösen Mathematischer Gleichungen im Raum ist eine weitere Spezialität, kann jedoch nur schlecht für beliebige Systeme automatisiert werden, es muss also je nach Art des Objekts ein unterschiedliches Verfahren eingesetzt werden. So existieren Methoden für Lipschitzstetige Funktionen (siehe Bild: L-stetiger Blobtree), Polynome (etwa für mit Splines definierte Rotationskörper) oder Isosurfaces (Gleichungen über die man "nicht viel" weis; diese können im Prinzip nur durch entlanglaufen und Abtasten entlang des Strahls gelöst werden) und viele weitere mehr.
Globale Beleuchtung / Lightmaps
Im Bereich globaler Beleuchtung haben Raytracer gegenüber Rastergrafik den Vorteil, daß für die Bestimmung eines Farbwerts immer die komplette Szene zur Verfügung steht und somit indirekt einfallendes Licht anhand der Umgebung bestimmt werden kann und nicht durch einen Ambienten Faktor oder Multipassrendering approximiert werden muss. Da Raytracer selten interaktiv arbeiten müssen, steht dann auch die dafür nötige Zeit um eine Monte-Carlo Integration oder Photonmapping durchzuführen zur Verfügung.
Interessanterweise finden sich unter diesem Aspekt Raytracer auch in interaktiver Rastergrafik unter dem Begriff Lightmapping wieder. Mithilfe eines Raytracers wird für jedes Polygon in der Szene eine Textur erzeugt, die deren statischen Lichteinfall repräsentiert.
Siehe Auch
Tutorial_Raytracing_-_Grundlagen_I,Tutorial_Raytracing_-_Grundlagen_II