RayCaster
von Daniel Wagner
Überblick
RayCaster rendert einen Volumen Daten Block mittels raycasting. Durch die hohe Anzahl an Einstellungsmöglichkeiten können sehr unterschiedliche Ergebnisse mit sehr unterschiedlichem Rechenaufwand erziehlt werden. Die Rechenzeit variiert von wenigen Sekunden (kleines Bild, kein trilineares Filtering, kein Shading) bis zu mehreren Stunden (Film in höherer Auflösung mit vielen Frames, trilineares Filtering, Shading).
Technik
RayCaster rendert von einer bestimmten Kameraposition aus mit Blick auf den Datenblock einen beliebig großen Volumenblock. Für jedes Pixel wird ein Sichtstrahl erzeugt und mit dem Volumen geschnitten. Falls aktiviert, wird für jede Position im Volumen noch ein trilineares Filtering verwendet, wodurch sich bei Bildern, deren Auflösung deutlich größer ist, als die des Volumen, beachtliche Qualitätsvorteile ergeben.
Dann wird mittels Back to Front Compositing die korrekte Sichtbarkeit berechnet. Vor dem eigentlichen Raycasten findet ein Preprocessing statt, bei dem mittels der angegebenen Tranfer Funktion aus den 12bit Dichte Daten, 32bit RGBA Daten berechnet werden. Falls Shading aktiviert ist, wird auch dieses schon beim Preprocessing eingerechnet.
Einstellmöglichkeiten
Der RayCaster verfügt über keine grafische Oberfläche. Da ein Raycasting ohnehin nicht interaktiv möglich ist, ist dies kein großer Verlust. Es lassen sich jedoch alle relevaten Eigenschaften über das Konfigurations File angeben. Sämtliche numerischen Werte sind entweder in Radiant oder normiert (0.0 – 1.0) anzugeben. (Ausnahmen: fps und frames). Hier eine detailierte Erklärung aller Optionen:
datafile xxx
Legt das Volumen Daten File fest. Der Pfad muß relativ zum Ausführungsverzeichnis sein.
section
Definiert einen Bereich der Transfer Funktion. Von links nach rechts werden folgende Daten angegeben:
Dichte Bereich im Original Volumen
Alpha Übergang
Ambient Übergang
Highlight Übergang (nur verwendet wenn Shading aktiviert)
Sämtliche Werte sind normiert (0.0 – 1.0) anzugeben.
shading [yes|no]
Aktiviert das Shading. Dies verlängert das Preprocessing erheblich.
trilinear [yes|no]
Aktiviert trilineares Filtering. Die verlängert den Raycasting Prozess auf etwa das vierfache.
light (head, pitch)
Bestimmt aus welcher Richtung das Licht scheint. Wird nur bei aktiviertem Shading beachtet.
camera (head, pitch)
Bestimmt aus welcher Richtung die Kamera auf das Volumen schaut. Der Roll Wert ist immer 0.
perspective [yes|no]
Aktiviert perspektivisches Raycasting. Achtung: Bei perspektivischem Raycasting ist eine viel kleinere Viewing Plane notwendig als bei parallelem.
planedistance
Bestimmt, wie weit die Viewing Plane vom Zentrum des Volumens entfernt ist.
planesize with height
Bestimmt, wie groß die Viewing Plane in der Szene ist.
camerafocal
Setzt den Abstand des Projektionszentrums von der Viewing Plane. Nur aktiv bei perspektivischem Raycasten.
outname xxx
Bestimmt den Namen des Ausgabe Files. Achtung: Keine Extension angeben, da diese automatisch angehängt wird.
outputsize width height
Bestimmt die Größe des Ausgabe Bildes/Filmes in Pixel.
jpeg [yes|no]
Aktiviert JPEG Export statt TGA.
animation [yes|no]
Aktiviert die Berechnung eines Filmes (AVI Format). Bei jedem Frame wird der bei rotation angegebene Wert zur Kamera Richtung addiert.
rotation (head, pitch)
Wird bei aktivierter Animation bei jedem Frame zur Kamera Richtung addiert.
fps
Bestimmt die Anzahl der Bilder pro Sekunde mit der das AVI vom Video Player abgespielt wird.
frames
Bestimmt die Anzahl der Bilder die berechnet werden.
aviquality
Bestimmt die Qualität mit der das AVI exportiert wird.
avicodec xxx
Bestimmt einen AVI Codec für den Exporter. Es muß der korrekte System Name des Codecs angegeben werden. Falls "auto" angegeben wird, wird automatisch der MS Codec genommen. Bessere Ergebnisse erzeugt zB: "Cinepak Codec"
Mit RayCaster erzeugte Bilder
Ohne Shading, Ohne Filtering
Gleiches Bild, diesmal mit trilinearem Filtering
Auch ohne Shading aber mit trilinearem Filtering
lassen sich hervoragende Ergebnisse erziehlen.
Einsatz eines besonders harten Lichtes.
Das Gewebe mit einer Transparenz von 97%
(Ausschnitt aus dem DemoAVI)
Download
RayCaster und der Demodatensatz sind für den privaten Gebrauch frei verfügbar. Das DemoAVI zeigt, wie einfach man mit Hilfe eines vorberechneten Filmes Volumen Daten in Echtzeit von allen Seiten betrachten kann.
© Daniel Wagner 1999 –
http://wagner.tzo.net