Ein 3D Raytracing Programm zur Berechnung von Computer-Grafiken wie das Bild unten, klingt wesentlich komplizierter, als es tatsächlich ist. Das C++-Programm ray3D.cpp, mit dem das Bild berechnet wurde, ist gerade mal 170 Zeilen lang und benötigt keine speziellen Bibliotheken. Das Programm wurde ursprünglich für didaktische Zwecke für eine Vorlesung "Numerische Methoden in der Physik" an der Uni Konstanz geschrieben, um die Anwendung von Raytracing-Methoden in der Computergrafik zu demonstrieren.
Das Programm ray3D.cpp lässt sich mit g++ kompilieren. Startet man das Programm, wird das Bild berechnet und in der Datei ray3D.ppm gespeichert. Das einfache Bildformat PPM lässt sich z.B. mit dem Bildbarbeitungsprogramm Gimp oder mit Irfanview öffen. Etwas komfortabler ist die Verwendung des Python-Skripts show_ray3D.py mit graphischer Ausgabe. Per Doppelklick auf das Fenster, wird ray3D.cpp neu kompilert, gestartet und das Bild direkt angezeigt, auch bereits während es rendert. So lassen sich sehr einfach neue Parameter und Gleichungen ausprobieren.
Das Programm ist relativ intuitiv aufgebaut, indem die einzelnen Gegenstände und Bestandteile der simulierten Welt direkt als Funktionen wiederzufinden sind. Durch den rekursiven Aufbau des Algorithmus verschwinden komplexe geometrische Probleme wie Perspektive, Vielfach-Spiegelungen und Schatten hinter sehr einfachen Gleichungen und das Problem wird deterministisch lösbar. Die Grundidee ist, dem Lichtstrahl in entgegengesetzter Richtung zu folgen, vom Pixel der Kamera ausgehend bis hin zu einer Lichtquelle oder lichtemittierenden Oberfläche. Die Farbe der Oberfläche kann sich wiederum aus einem oder mehreren dort eingetroffenen Lichtstrahlen zusammensetzen, die rekursiv weiter bis zur Quelle zurückverfolgt werden.
Der Ansatz ist didaktisch interessant, aber nicht für sehr komplexe Szenen geeignet. Aber dafür gibt es ja hervorragende Programme wie Povray oder Blender. Es geht aber auch noch minimalistischer: http://fabiensanglard.net/rayTracing_back_of_business_card/