c++ - 从 2D 图像堆栈渲染 3D 体积

标签 c++ opengl volumes

我参与了一个项目,我需要根据体积的一系列图像渲染 3D 体积。这些图像是通过多种技术创建的,因此它们是所讨论对象的垂直切片。

数据集类似于this question , 但提问者正在寻找 Matlab 解决方案。

目标是使绘图接近实时(>1Hz 更新率),根据我的研究,openGL 似乎是最快的绘图选项。除了以下伪代码算法之外,openGL 中是否有内置函数在 openGL 中渲染体积。

foreach(Image in Folder)
     foreach(Pixel in Image)
        pointColour(pixelColour)
        pointLocation(Pixel.X,Pixel.Y,Image.Z)
        drawPoint

我不关心图像之间的插值,当前间距足够小,不需要它。

最佳答案

恐怕如果你在考虑体积渲染,你需要先了解 volume rendering integral因为屏幕上像素的合成颜色是当前视角下与其对齐的所有体素的函数。

有两种使用传统图形硬件实时渲染体积的方法。

  1. 将体积渲染为一组与 3D 纹理(代理几何体)相交的 2D View 对齐切片。说明 here .
  2. 使用使用可编程图形硬件的光线转换器,教程 here .

这不是一个容易解决的问题 - 但根据您需要做的事情,事情可能会更简单一些。例如:您是否关心具有交互式传输功能?您想要透视图还是正交投影就足够了?你在渲染等值面吗?您是否仅将此用于 MPR-type观点?

关于c++ - 从 2D 图像堆栈渲染 3D 体积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10637935/

相关文章:

c++ - 程序使用的DLL,其中声明的变量存储在哪里?

c - 光照在 opengl 中不工作

docker在主机上安装卷

docker - 在Bluemix中将卷与Redmine Docker容器一起使用

c++ - 虚拟处理器和高级网络 linux 和 windows

c++ - 如何让 for_each 使用模板?

c++ - 关于抽象工厂、DLL 导出和智能指针的建议

c++ - glBindBuffer 崩溃 - 使用 glew 的 VBO 实现

c - glutTimerFunc() 不限制帧率