Raytracing

Drei silberne Kugeln schweben über einem Schachbrett und spiegeln sowohl das schwarz-weiße Muster, den farbigen Himmel, als auch sich gegenseitig. Dieses Bild wurde mit einem überschaubaren d.h. ca. 200 Zeilen langen PythonProgramm berechnet. Natürlich dauert die Produktion ein paar Sekunden – Python ist ja im Vergleich zu einer kompilierten Sprache wie C++ recht langsam. Aber  es lässt sich doch gut an und man kann einiges über analytische Geometrie und objektorientierte Programmierung erfahren.
Hat man die Grundlagen des Ray-Tracing erst einmal beisammen, ist eine Erweiterung auf fotorealistische Bilder, wie z.B. hier zu sehen, nicht mehr allzu weit.
Bei der Erarbeitung dieses Programms im Unterricht müssen wir folgende Fragen in ungefähr dieser Reihenfolge beantworten:

  • Was ist die Idee des Ray-Tracings?
  • Wie definieren wir den dreidimensionalen Aufbau für das Bild?
  • Welche Berechnungen müssen durchgeführt werden?
  • Wie macht man das mit Bleistift und Papier im mathematischer Form?
  • Wie können wir das Programm so schrittweise aufbauen, das wir nach jedem Schritt direkt unseren Erfolg erkennen können?
  • Wie zeichnet man ein Bild Pixel für Pixel mit Tkinter?
  • Wie ist die Ablaufsteuerung beim Bildaufbau?
  • Wie realisiert man die Rasterung mit variabler Auflösung?
  • Welche Konzepte lassen sich vorteilhaft als Klassen in Python definieren?
  • Welche Attribute und Methoden brauchen diese Klassen?
  • Wie können wir die Klassen vor dem Zusammenbau testen?
  • Wie kommt das Schachbrettmuster zustande?
  • Wie erzeugen wir Schatten?
  • Wie realisiert man die Himmelsfarbe?
  • Wie erzielt man den metallischen Look der Kugeln?


Das fertige Programm kann man hier herunterladen.