Hey allemaal,
Ik ben een beetje aan het aanklooien met volume rendering dmv texture mapping mbv deze tutorial.
Ik begrijp het principe best aardig, maar C++ en OpenGL zijn nog niet mijn specialiteiten.
Momenteel probeer ik lijnen toe te voegen die assen weergeven in de texture matrix. De volgende code is voor het renderen:
De functie glMultMatrixd wordt gebruikt om de texture matrix te scalen en te roteren adhv van de muisbewegingen van de user. Dit werkt echter alleen op de texture matrix, en dus niet op de lijnen die ik heb aangebracht.
Ik zit hier een beetje vast, want deze functie toepassen op andere matrices (projecten, modelview), zorgt ervoor dat de texture matrix niet goed wordt weergeven.
Zouden jullie mij kunnen helpen door in een duwtje in de goede richting te kunnen geven? Kan ik beter proberen de lijnen in de texture matrix te zetten of kan ik de lijnen individueel transformeren?
Bvd!
Ik ben een beetje aan het aanklooien met volume rendering dmv texture mapping mbv deze tutorial.
Ik begrijp het principe best aardig, maar C++ en OpenGL zijn nog niet mijn specialiteiten.
Momenteel probeer ik lijnen toe te voegen die assen weergeven in de texture matrix. De volgende code is voor het renderen:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| glDisable(GL_TEXTURE_3D); // Lijnen tekenen glColor4f(1.0f,1.0f,1.0f,1.0f); glBegin(GL_LINES); glVertex3f(-dOrthoSize, 0.0f, 0.0f); glVertex3f( dOrthoSize, 0.0f, 0.0f); glEnd(); glBegin(GL_LINES); glVertex3f(0.0f, -dOrthoSize, 0.0f); glVertex3f(0.0f, dOrthoSize, 0.0f); glEnd(); glBegin(GL_LINES); glVertex3f(0.0f, 0.0f, -dOrthoSize); glVertex3f(0.0f, 0.0f, dOrthoSize); glEnd(); glMatrixMode( GL_TEXTURE ); glLoadIdentity(); // Translate and make 0.5f as the center // (texture co ordinate is from 0 to 1. so center of rotation has to be 0.5f) glTranslatef( 0.5f, 0.5f, 0.5f ); // A scaling applied to normalize the axis // (Usually the number of slices will be less so if this is not - // normalized then the z axis will look bulky) // Flipping of the y axis is done by giving a negative value in y axis. // This can be achieved either by changing the y co ordinates in - // texture mapping or by negative scaling of y axis glScaled( 1.0f, -1.0f*(float)m_pRawDataProc->GetWidth()/(float)(float)m_pRawDataProc->GetHeight(), (float)m_pRawDataProc->GetWidth()/(float)m_pRawDataProc->GetDepth()); // Apply the user provided transformations glMultMatrixd( m_pTransformMgr->GetMatrix()); glTranslatef( -0.5f,-0.5f, -0.5f ); glEnable(GL_TEXTURE_3D); glBindTexture( GL_TEXTURE_3D, m_pRawDataProc->GetTexture3D() ); for ( float fIndx = -1.0f; fIndx <= 1.0f; fIndx+=0.01f ) { glBegin(GL_QUADS); MAP_3DTEXT( fIndx ); glEnd(); } |
De functie glMultMatrixd wordt gebruikt om de texture matrix te scalen en te roteren adhv van de muisbewegingen van de user. Dit werkt echter alleen op de texture matrix, en dus niet op de lijnen die ik heb aangebracht.
Ik zit hier een beetje vast, want deze functie toepassen op andere matrices (projecten, modelview), zorgt ervoor dat de texture matrix niet goed wordt weergeven.
Zouden jullie mij kunnen helpen door in een duwtje in de goede richting te kunnen geven? Kan ik beter proberen de lijnen in de texture matrix te zetten of kan ik de lijnen individueel transformeren?
Bvd!
-- All science is either physics or stamp collecting