Zum Inhalt springen

Raytracing

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 26. Juli 2003 um 11:59 Uhr durch Stefan Kühn (Diskussion | Beiträge) (typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Mit Raytracing erzeugte Bilder:
Datei:Warm up (klein).jpg
Datei:Xing ego (klein).jpg

Raytracing ("Strahlverfolgung") ist ein Verfahren der 3D-Computergrafik zur Erzeugung (meist) photorealistisch wirkender Bilder aus 3D-Daten.

Verfahren

Um Rauminformationen (auch Szene genannt, z.B. Raum mit Stuhl und Lampe) auf ein Bild abzubilden wird im Raytracing eine Ebene in den Raum vor die virtuelle Kamera (man spricht auch vom Augpunkt) gelegt, durch die für jeden abzubildenden Pixel mindestens ein Strahl von der Kamera durch den Pixel auf der Ebene in die Szene geschickt und verfolgt wird. Die Farbwerte der von den jeweiligen Strahlen getroffenen Objekte bestimmen die Farbe des entsprechenden Pixels.

Wenn der Strahl ein Objekt im Raum trifft, so wird er

An dieser Stelle werden die Vor- und Nachteile des Raytracing Verfahrens deutlich:

Um eine Spiegelung zu berechnen ist der Strahl an der getroffen Oberfläche zu reflektieren (Einfallswinkel ist gleich Ausfallswinkel). Wird nach einer gegebenen Anzahl von Reflexionen (5-7 reichen oft) oder einer gegebenen Distanz keine Lichtquelle oder beleuchtetes Objekt getroffen, so ist der Punkt schwarz (bzw. die Farbe der Umgebung), ansonsten werden die Farbwerte der getroffenen Objekte, nach ihrem Reflexionsgrad gewichtet aufaddiert und mit der Lichtfarbe verrechnet. Dieser Teil des Raytracings entspricht im weitesten Sinne der physikalischen Realität.

Um eine Transmission zu berechnen, wird der Strahl an einer Oberfläche nicht (bzw. nicht nur) reflektiert, sondern transmitiert, d.h. auf seiner Bahn zwar abgelenkt, aber in "ähnliche" Richtung weitergeschickt. Problematisch hierbei ist, dass in der Realität der Strahl in der Regel nicht nur abgelenkt, sondern auch gebrochen, also in mehrere Strahlen aufgeteilt wird, die jeweils unterschiedliche Bereiche des Lichtspektrums enthalten. Da hierbei eigentlich unendlich viele weitere Lichtstrahlen entstehen, ist dieses Verhalten kaum zu simulieren. Im Raytracing wird zudem meist im RGB-Farbmodell gearbeitet, aus dem sich ein Spektrum nicht eindeutig bestimmen läßt. Spektrales Raytracing ist ein aktuelles Forschungsgebiet, bisher aber am riesigen Rechenaufwand gescheitert. Einen "echten" spektralen Raytracer gibt es nicht.

Einen ähnlichen Nachteil bringt die diffuse Reflexion mit sich: Trifft ein Strahl auf eine nicht vollständig spiegelnde Oberfläche, so wird sein Strahl nicht nur wie oben beschrieben in eine Richtung reflektiert, sondern der nicht gespiegelte Anteil des Lichts in alle Richtungen abgegeben. Wieder entstehen unendlich viele Strahlen, weswegen man sich mit so genannten lokalen Beleuchtungsmodellen behilft, welche die diffuse Reflexion und den Glanz der Lichtquelle simulieren (übliche Verfahren sind hier von Phong, Blinn und Schlick). Da hierbei die Strahlen aber nicht wirklich reflektiert werden sondern nur die Farbe an der entsprechenden Stelle angenähert wird, entsteht das größte Problem: Im eigentlichen Raytracing beleuchten nicht spiegelnde, nur diffus reflektierende Objekte (sog. Lambert-Strahler) keine anderen. Ein Verfahren für solche Aufgaben sind zum Beispiel Radiosity oder das Monte Carlo Raytracing.

Raytracing erzeugt, obwohl es in weiten Teilen nur wenig mit der Realität zu tun hat dennoch überraschend realitätsnahe Licht- und Schatten sowie Reflektionseffekte.

Alle hochwertigen Renderer benutzen das Raytracing, meist in Kombination mit weiteren Verfahren um auch die diffuse Beleuchtung besser simulieren zu können. Bekannte Raytracing fähige Renderer:

Mental Ray BMRT PovRay