Multimodale-Uebung

3D Texturierung

Verwenden Sie als Hilfsmittel zum Laden eines Volumens die Funktion readPVMvolume(). Die Volumendaten müssen hierzu im sog. PVM Format mit der Endung “.pvm” vorliegen.

Sie benötigen dazu den folgenden C++-Quellcode: defs.h ddsbase.h ddsbase.cpp

Ãœbersetzen des Moduls “ddsbase.cpp”:

g++ -c ddsbase.cpp

Dies erzeugt eine Objektdatei “ddsbase.o”, welche zusätzlich zum Hauptprogramm gebunden wird.

Beispielcode zum Laden des Datensatzes “Volume.pvm”:

#include "ddsbase.h"

unsigned char *volume;
unsigned int width,height,depth;

int main()
{
   if (!(volume=readPVMvolume("Volume.pvm",
                              &width,&height,&depth))) ERRORMSG();

   return(0);
}

Laden Sie ein beliebiges PVM Volumen aus der Volume Library.

Hinweis: Achten Sie darauf, ein Volumen auszusuchen, dessen Dimensionen 2er-Potenzen sind, wie zum Beispiel den “Foot” oder den “MRI Head”. Andernfalls sollten Sie das Volumen auf die nächste 2er-Potenz auffüllen (padding). Achten Sie ebenfalls darauf, dass Sie mit 8-Bit Volumendaten arbeiten. Gegebenenfalls konvertieren Sie 16-Bit Daten durch Quantisierung. Oder sie verwenden zur Quantisierung das pvm2pvm Tool.

Spezifizieren Sie das Volumen als OpenGL 3D Textur und zeichnen Sie zwei mittige Schnittebenen, die parallel zur y-Achse sind.

Zusatzaufgabe: Verwenden Sie die Mausposition (glutMotionFunc) um das Ebenenkreuz in der x- und z-Ebene zu verschieben, wenn eine Maustaste gedrückt wurde (glutMouseFunc).

MRI-Head

Options: