我有一个关于使用OpenGL显示由2D灰度图像阵列制作的3D体积的问题。
更准确地说,我只想在x,y和z方向上显示体积的中心切片。
我只是通过在我想要显示的坐标处循环体积数据并使用GL_POINTS绘制它们来成功完成此操作,如此处所示(显示z方向中心切片):
for (x=0; x<sizeX; x++){
for (y=0; y<sizeY; y++){
color=volume(x,y,0)
glBegin(GL_POINTS);
glColor3f(color,color,color);
glVertex3f(x,y,0);
glEnd();
}
}
我知道体素的真实世界尺寸,以mm为单位,所以我想将体素显示为具有该尺寸的立方体,而不是GL_POINTS,就像我现在正在做的那样。这是一个很好的方法吗?我在某处读过,将体素显示为立方体通常不是一个好主意。
只需添加,该卷包含大约300张尺寸为400x350像素的图像。
答案 0 :(得分:1)
如果您的应用程序要显示密集的体积数据切片,我看不到使用点或体素的好处。对我而言,实现您所要求的最佳方法是使用简单的平面,您可以使用图像数据对地图进行纹理处理。您提到了网格数据的尺寸,如果要想象这个事实,您也可以使用框而不是平面。与glPoint或使用框表示每个单独的体素相比,使用纹理贴图应该更有效。
网上有很多教程告诉你如何做到这一点(例如NeHe)。