Die Aufgabe ist es ein Programm zu entwickeln, welches via Ray-Casting Volumsdaten visualisiert.
Jene Daten liegen in Form eines kartesischen 3D-Gitters vor, wie sie in der Computertomographie zu finden sind.
Die Visualisierung im medizinischen Bereich ist im klinischen Alltag, bei Diagnose und Operationsplanung, von großer Bedeutung.
Ray-Casting ist die herkömmliche Methode um Daten ohne Umwandlung in andere Primitive, wie Polygone, aus einem Datensatz zu gewinnen (Direct Volume Rendering).
Beim Ray-Casting wird für jedes Pixel am Bildschirm ein Strahl ausgesandt, auf dem das Volume abgetastet wird.
Jeder dieser abgetasteten Punkte liefert einen Dichtewert. Dieser Dichtewert wird mittels einer Transferfunktion in eine Farbe und einen Transparenzwert umgesetzt.
Mit der entsprechenden Compositing-Funktion werden die Farben der einzelnen Samples zusammengefügt. Wenn man bereits vor erreichen des Endpunkts des Strahls eine Farbe erreicht hat, welche keine Transperenz mehr besitzt, kann man den Ray-Casting Voragng abbrechen.
Der Algorithmus ist im Paper "Display of Surfaces from Volume Data" von Marc Levoy genau beschrieben.
Das Beispiel wurde in 2 Phasen implementiert:
In der ersten Phase galt es das User-interface zu entwickeln. Das Programm sollte zu diesem Zeitpunkt alle Elemente zum Einstellen der Funktionalität enthalten.
Weiters sollte auch schon der Datensatz entlang der Hauptachsen in Scheiben unterteilt und angezeigt werden können.
In der zweiten Phase sollte das oben beschriebene Ray-Casting implementiert werden.
Die Mindestanforderungen an das Programm sind:
GUI
Slicing
Interaktive Transferfunktionen
Interaktive Einstellung der Blickrichtung
Die Mindestanforderungen an die Ergebnisbilder sind:
Halb transparentes Äßeres und undurchsichtiges Inneres.
Mindestens zwei verschiedene Datensätze müssen dargestellt werden können.