Raytracing


Viele beeindruckende Bilder aus der Computergrafik enthalten Effekte wie Spiegelungen, weiche Schatten und/oder Caustiken (Lichtmuster, die durch brechung in unförmigen durchsichtigen Objekten entstehen). Eine Methode um all dies zu Berechnen ist das Raytracing (engl. „Strahlverfolgung“).

In der reellen Welt wissen wir, das Lichtstrahlen von der Quelle aus den Raum durchqueren, um nach mehr oder weniger komplexen Umwegen unser Auge zu erreichen. Je nachdem von wo der Strahl kam und woran er reflektiert oder gebrochen wurde erhält unser auge eine Farbinformation.

Ganz ähnlich ist es beim Raytracing. Der einzige unterschied ist nun, das man den Weg quasi „umdreht“. Ein Lichtstrahl wandert nun nicht mehr von der Quelle zum Betrachter, sondern startet im Augpunkt (der Position des Betrachters). Genau betrachtet läßt man hierbai einen alten Aberglaube aus dem Mittelalter aufleben.


Warum wählt man also trotz besseren Wissens diese altertümlich scheinende Vorgehensweise? Der Grund liegt (wie Häufig in der Informatik) in der effizienten Berechenbarkeit. Für ein schönes Bild interessieren ja schließlich nur die Lichtstrahlen, die auch wirklich beim Betrachter ankommen. Die unzähligen anderen, die eigentlich in der Realität auch von der Lichtquelle ausgehen, tragen nichts (oder nur wenig) für den Gesamteindruck bei. Es wäre also eine unglaubliche Zeitverschwendung sie alle zu berechnen. Allen Strahlen die wirklich interessant sind ist eines gemein: Sie treffen den Augpunkt. Da nun bei der Reflektion oder der Brechung eines Lichtstrahls für die Bestimmung der zugehörigen Winkel(-beträge) die „Richtung“ des Strahls keine bedeutende Rolle spielt kann man den Spieß also umderehen und den Strahl „zurück“ verfolgen (daher müßte es also eigentlich „Ray backtracking“ heißen, also „Strahlrückverfolgung“).

Wer hat gesagt, das man mit Mittelalterlichen Methoden heute nichts mehr anfangen kann?



Natürlich benötigt man für selbst die primitivste Szene einige unentbehrliche bestandteile. Zum einen sei da der Betrachter, bzw. dessen Auge, welches sich im „Augpunkt“ befindet. Ohne ihn gäbe es ja schließlich kein Bild, weil niemand es sähe.


Weiterhin braucht man eine Lichtquelle, denn sonst wäre das Bild ziemlich langweilig (pechschwarz). Im weiteren betrachten wir diese Lichtquelle als Punktförmig und „omnidirektional“, dh. sie strahlt in alle Richtungen licht ab.


Als letztes sei da noch etwas was man betrachten kann (denn auch sonst bliebe das Bild etwas eintönig).




Natürlich können von allen genannten Komponenten beliebig viele in der Szene auftauchen um sie komplexe und realistischer zu machen. Selbst mehrere Betrachter ergeben hier Sinn, denn wenn man es genau nimmt, haben Menschen in der Regel zwei Augen, die jeweils ain Bild der Umgebung liefern, welche unser Gehirn dann überlagert, so dass wir so etwas praktisches wie Tiefenwahrnehmung bekommen. Als angewandten Effekt stelle man sie ein Rot/Grün-Bild vor, dass mit einer speziellen Brille plötzlich an Tiefe gewinnt.

Beim Rytracing wird also nun vor das auge die Bildfläche gelegt. Im allgemeinen hat das Bild eine endliche Auflösung, besteht also aus einer festen Anzahl an Bildpunkten. Für jeden dieser Punkte interessiert uns nun, wie wir ihn einfärben müssen. Daher wird nun durch jeden Bildpunkt vom Augpunkt aus ein Strahl „geschoßen“. Alles was von diesem Sperrfeuer getroffen wird hat potentiell Chancen auf dem Bild abgelichtet zu werden.

Man muss also testen, ob ein Strahl eines der Objekte in der Szene schneidet. Dieser Test gestalltet sich je nach vorliegender Szenenbeschreibung unterschiedlich kompliziert.


In vielen bereichen der Computergrafik haben sich Polygonnetze gegenüber anderen Verfahren durchgesetzt. Sie bieten zwar nur marginale Möglichkeiten zur beschreibung von Runden Objekten, lassen sich dafür aber leicht handhaben. Eine genügend hohe Anzahl von ihnen vorausgesetzt reicht aus um auch komplizierte Formen nachzubilden oder zumindest anzunähern (aproximieren).


Schneidet also nun ein Strah ein Objekt, so muss am Schnittpunkt die Farbe bestimmt werden. Der Bildpunkt durch den wir diesen Strahl anfangs geschossen haben wird entsprechend gefärbt.


Die schwierigkeit liegt nun aber darin den Farbwert am Schnittpunkt zu bestimmen. Sicherlich könnte man dem Abjekt eine feste Farbe geben und diese dann einfach jedesmal auf das Bild bringen, wenn ein Strahl dieses Objekt trifft, doch dann hätte man weder Schatten noch Spiegelungen noch sonst etwas ansehliches. Es muss also noch etwas passieren. Vom Schnittpunkt aus wird nun eine Reihe von „Sekundärstrahlen“ abgeschoßen. Sie leifern zusatzinformationen über Beleuchtung, Spiegelung und Tranzparenz, mit denen der eigentliche Farbwert des Objektes modifiziert wird. Schauen wir uns die Vertreter dieser Abkömmlinge des ersten Strahls (nennen wir ihn den Primärstrahl) mal etwas genauer an:


Schattenstrahl

Reflexionsstrahl

Refraktionsstrahl