Zum Inhalt springen

Raytracing

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 4. April 2005 um 10:32 Uhr durch 145.254.126.164 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Ein mit Raytracing berechnetes Bild. Programm: Bryce 5

Raytracing ("Strahlverfolgung") ist ein Verfahren der 3D-Computergrafik zur Erzeugung (meist) fotorealistisch wirkender Bilder aus 3D-Daten. Bei der Berechnung der Reflexionen und Schatten werden alle anderen Objekte der Szene mit einbezogen, allerdings wird dabei nur Licht von vorgegebenen selbstleuchtenden Lichtquellen berücksichtigt. Andere Verfahren berücksichtigen auch das indirekte Licht, das von anderen Objekten reflektiert wird man spricht dann von einem globalen Beleuchtungsverfahren (engl. Global Illumination) wie z.B. Radiosity.

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 jedes abzubildende Pixel mindestens ein Strahl von der Kamera durch das Pixel auf der Ebene in die Szene geschickt und zurückverfolgt wird. Man spricht deshalb auch von backward ray tracing. Die Farbwerte der von den jeweiligen Strahlen getroffenen Objekte bestimmen die Farbe des entsprechenden Pixels. Backward ray tracing beschäftigt sich so mit der Frage, woher das Licht kommt.

Beispielbild für Refraktion (links) und Reflexion (rechts)

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). Dazu muss lediglich der Raytracing-Algorithmus rekursiv aufgerufen werden, weshalb man auch von rekursivem Raytracing spricht. Die Rekursion kann abgebrochen werden, wenn keine Objekte mehr getroffen werden, eine vorbestimmte Rekursionstiefe (eine Tiefe von 5-7 reicht oft aus) erreicht ist oder die Reflexion in der Rekursion keine nennenswerten Ergebnisse mehr beisteuert (engl. adaptive depth control). Die Farbwerte der getroffenen Objekte werden dann nach ihrem Reflexionsgrad gewichtet, aufaddiert und mit der Lichtfarbe verrechnet. Analog verfährt Raytracing mit Strahlen, die nicht reflektiert, sondern in ein durchsichtiges Objekt gebrochen (Refraktion) werden. In heute anzutreffenden Implementierungen von Raytracern wird jedoch nicht berücksichtigt, dass bei der Refraktion Licht unterschiedlicher Wellenlängen stärker oder schwächer gebrochen werden (Dispersion) und das Licht so auffächert (Prismeneffekt). Dies liegt vornehmlich daran, dass Raytracer aus Gründen der Benutzerfreundlichkeit mit dem RGB-Farbmodell und nicht mit gesampelten Spektren arbeiten. Die Refraktion und spiegelnde Reflexion haben weitgehend eine Entsprechung in der physikalischen Realität des Lichts.

Renderbild Fahrrad

Einen Nachteil bringt die bei Raytracing verwendete diffuse Reflexion mit sich: die Berechnung diffuser Reflexion eines Objekts berücksichtigt nur Licht von punktförmigen Lichtquellen. Licht, das von flächigen Lichtquellen oder von diffusen Reflexionen anderer Objekte stammt, wird nur bei dem kaum anzutreffenden Monte Carlo Raytracing berücksichtigt. Diffuse Interobjekt-Reflexion kann am besten durch das Radiosity-Verfahren bewerkstelligt werden.

Dem Monte Carlo Raytracing ähnlich ist Photon mapping, eine Erweiterung des Raytracing-Algorithmus durch forward ray tracing. Dabei werden im Zuge einer Vorberechnung Lichtstrahlen von Lichtquellen ausgehend auf bestimmte Objekte wie z.B. Glaskugeln oder Linsen gesendet und weiter verfolgt. Die so auf andere Objekte geworfenen Lichtmuster werden bei der Farbberechnung durch das nachfolgende backward ray tracing mit einbezogen. Beispiele für solche Effekte sind Strahlen, die sich im Brennpunkt einer Linse sammeln oder Lichtmuster auf dem Boden von Schwimmbecken, die durch die Brechung an der Wasseroberfläche einfallenden Lichts entstehen.

Ein Vorteil von Raytracing ist, dass es mit mathematischen Oberflächen- bzw. Volumenmodellen von zu modellierenden Objekten arbeiten kann. Die Oberflächen der Objekte müssen so nicht durch einzelne Flächen modelliert werden und liegen als auflösungsunabhängige Daten vor. Die Modellierung von Objekten mit Constructive Solid Geometry (Differenz- und Vereinigungsmenge zweier Objekte) lässt sich mit Raytracing leicht realisieren, ebenso die Berechnung von Schatten oder die Darstellung von Objekten, in denen sich das Licht bricht.

Raytracing erzeugt, obwohl es in weiten Teilen nur von einer vereinfachten Realität ausgeht, dennoch überraschend realitätsnahe Licht- und Schatten- sowie Reflexionseffekte.

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:

Kommerzielle Programme

Freie Software

Einsatzgebiete

Raytracing-Berechnungen gelten als sehr zeitintensiv. So wird Raytracing vornehmlich bei der Erzeugung von Darstellungen eingesetzt, bei denen eher die Qualität als die Berechnungszeit im Vordergrund steht. In Bereichen wie der Virtuellen Realität, in der räumliche Darstellungen in Echtzeit berechnet werden müssen, spielt Raytracing derzeit keine Rolle.

Dennoch existieren Bestrebungen, echtzeitfähige Raytracer zu implementieren, was deutschen Forschern bereits in Ansätzen gelungen ist - allerdings auf einem Rechnerverbund mit 48 Athlon MP-Prozessoren. Raytracing bietet viel Raum für künftige Optimierungen. So sind gängige Raytracer reine Software-Lösungen, die einerseits von Hardware noch nicht unterstützt werden und sich andererseits nur begrenzt die Potenziale vorhandener Hardware (z.B. Pipelining, SIMD) zunutze machen. Auf Hardware optimierte Implementierungen von Raytracing zeigen, dass die künftige Nutzung von Raytracing im Echtzeitbereich denkbar ist. Gegenüber Scanline-Renderern hat Raytracing mehrere Vorteile:

Siehe auch