Anwendung – Raytracing
Das Verdeckungsproblem
Im Kapitel zu Spurpunkten von Geraden haben wir den Begriff „Raytracing“ schon eingeführt: Es geht darum, Lichtstrahlen zu verfolgen, um zu beurteilen, was ein Betrachter von einem bestimmten Standpunkt aus sehen kann. Im Kontext der Spurpunkte haben wir uns aus Schattenbildungen konzentriert. Hier soll es stattdessen um das Verdeckungsproblem gehen:
Zielsetzung
Um eine Grafik mit mehreren Objekten am Computer zu erzeugen, muss für jeden Blickwinkel entschieden werden, welche Objekte sich gegenseitig verdecken.
Wir möchten das Grundprinzip dahinter hier einmal durchspielen.
Vom Blickpunkt aus wird ein Strahl durch ein Pixel der Bildebene gesendet. Es werden dann sämtliche Schnittpunkte mit den Objekten der Szene bestimmt. Das Pixel erhält die Farbe des am nächsten platzierten Schnittpunktes.
Die Szene
Die hier betrachtete Szene soll aus drei Objekten bestehen. Diese Objekte sind Dreiecke (die evtl. Teile von Oberflächen von Gegenständen sind, siehe dazu auch Vertiefung – Flächenbeschreibung).
Zum Herunterladen: raytracing3.ggb
Der Blickpunkt ist hier in den Koordinatenursprung
Die Bildfläche ist hier mit einigen Pixeln angedeutet. Alle Pixel sind noch grau dargestellt. Die Farben müssen noch ermittelt werden. Ein Pixel ist mit
Auch die Gerade
Bestimmung der Pixelfarben
Für die Bestimmung der Farbe von Pixel
Für die Berechnung benötigt man noch die Koordinaten der Dreieckseckpunkte:
, , , , , ,
Aufgabe 1
Führe die Schnittpunktberechnungen aus. Benutze ein Computeralgebrasystem zum Lösen der Gleichungssysteme. Ermittle mit den gewonnenen Daten die Farbe des hervorgehobenen Pixels.
Tipp: Um zu ermitteln, welcher Schnittpunkt am nächsten am Blickpunkt liegt, musst du nur die zugehörigen Parameter auf der Geraden
Zum Herunterladen: lgs.ggb
Aufgabe 2
Für Grafikberechnungen zu realitätsnahen Szenarien benötigt man leistungsstarke Rechner (bzw. Grafikkarten). Erkläre, warum die Berechnungen so aufwendig sind.
Quellen
- [1]: Raytracing - Urheber: Phrood - Lizenz: Creative Commons BY-SA 3.0