Zum Inhalt springen

Raytracing

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 11. Juli 2004 um 19:52 Uhr durch 217.84.180.18 (Diskussion) (Weblinks: typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Datei:Warm up (klein).jpg
Datei:Xing ego (klein).jpg
Beispiele mit Raytracing erzeugter Bilder

Ray tracing ("Strahlverfolgung") ist ein Verfahren der 3D-Computergrafik zur Erzeugung (meist) photorealistisch wirkender Bilder aus 3D-Daten. Da es in die Berechnung der Reflexionen und Schatten alle anderen Objekte der Szene miteinbezieht wird es als ein globales Beleuchtungsverfahren bezeichnet.

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 Backwards Ray tracing. Die Farbwerte der von den jeweiligen Strahlen getroffenen Objekte bestimmen die Farbe des entsprechenden Pixels. Backwards ray tracing beschäftigt sich so mit der Frage, woher das Licht kommt.

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, eine vorbestimmte Rekursionstiefe (eine Tiefe von 5-7 reicht oft aus) erreicht ist oder die Reflexion in der Rekursion keine nenneswerten Ergebnisse mehr beisteuert (so genannte 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 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 Ray tracing berücksichtigt. Diffuse Interobjekt-Reflexion kann am besten durch das Radiosity-Verfahren bewerkstelligt werden.

Dem Monte Carlo Ray tracing ähnlich ist eine Erweiterung des Ray tracing Algorithmus durch das Forwards Ray tracing. Dabei werden im Zuge einer Vorberechnung Lichtstrahlen von Lichtquellen aus gehend 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 Backwards Ray tracing mit ein bezogen. 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 Rytracing 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 wenig mit der Realität zu tun hat 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:

Einsatzgebiete

Ray tracing Berechnungen gelten als sehr zeitintensiv. So wird Ray tracing vornehmlich nur 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 Ray tracing derzeit keine Rolle.

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

  • Einfache Implementierung mit überschaubarer Komplexität
  • Kein starres Schema wie bei der Render-Pipeline
  • Leichtere Austauschbarkeit der Shader und dadurch erleichterte Implementierung neuer Shader