000
12.09.2008, 10:05 Uhr
cmos
|
HAllo, könnte mir bitte jemand abei helfen eine 3D Textur zu rendern? Ich habe da noch nicht genau verstanden wie das mit diesen clip planes funktioniert, die durch das volumen schneiden und dann das schnittbild als textur darauf abbilden.
Ich lade ein Volumen Model von der größe 256*256*256 als 3D Textur. Da die Daten nur als 1Byte vorleigen konvertiere ich vorher noch in RGB und erzeuge damit dann die 3D Textur.
Aber irgendwie sehe ich rein gar nichts
Code: |
void display() { int nSlices = 1.3*(sqrt(float(256*256 + 256*256 + 256*256)))/4.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); float xPlane[4]; float yPlane[4]; float zPlane[4]; glTexGenf(GL_S,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR); glTexGenf(GL_T,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR); glTexGenf(GL_R,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR); glTexGenfv(GL_S,GL_EYE_PLANE,xPlane); glTexGenfv(GL_T,GL_EYE_PLANE,yPlane); glTexGenfv(GL_R,GL_EYE_PLANE,zPlane); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); glEnable(GL_TEXTURE_GEN_R);
double clip0[] = {-1.0, 0.0, 0.0, 1.0}; double clip1[] = { 1.0, 0.0, 0.0, 1.0}; double clip2[] = { 0.0, -1.0, 0.0, 1.0}; double clip3[] = { 0.0, 1.0, 0.0, 1.0}; double clip4[] = { 0.0, 0.0, -1.0, 1.0}; double clip5[] = { 0.0, 0.0, 1.0, 1.0};
glClipPlane(GL_CLIP_PLANE0,clip0); glClipPlane(GL_CLIP_PLANE1,clip1); glClipPlane(GL_CLIP_PLANE2,clip2); glClipPlane(GL_CLIP_PLANE3,clip3); glClipPlane(GL_CLIP_PLANE4,clip4); glClipPlane(GL_CLIP_PLANE5,clip5);
glEnable(GL_CLIP_PLANE0); glEnable(GL_CLIP_PLANE1); glEnable(GL_CLIP_PLANE2); glEnable(GL_CLIP_PLANE3); glEnable(GL_CLIP_PLANE4); glEnable(GL_CLIP_PLANE5);
float fstep = 1.0 / nSlices;
for(int i = 0; i < nSlices; i++) { glBegin(GL_QUADS); glVertex3f(-0.5f, -0.5f, fStep); glVertex3f( 0.5f, -0.5f, fStep); glVertex3f( 0.5f, 0.5f, fStep); glVertex3f(-0.5f, 0.5f, fStep); glEnd(); f += fStep; }
glDisable(GL_TEXTURE_3D);
glDisable(GL_CLIP_PLANE0); glDisable(GL_CLIP_PLANE1); glDisable(GL_CLIP_PLANE2); glDisable(GL_CLIP_PLANE3); glDisable(GL_CLIP_PLANE4); glDisable(GL_CLIP_PLANE5);
glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); glDisable(GL_TEXTURE_GEN_R);
glutSwapBuffers(); }
|
grüße, cmos |