Raytracing
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. 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 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
- refraktiert, also gebrochen (Glas, Luft) oder
- reflektiert (Spiegelungen und diffuse Abstrahlung).
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 spiegeln sich keine Objekte in der Oberfläche, 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 Refraktion zu berechnen, wird der Strahl an einer Oberfläche nicht (bzw. nicht nur) reflektiert, sondern refraktiert, 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ässt. 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 er 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. 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. 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: