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”:
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
).