使用八叉树在GPU中组织三维体积数据
Use octree to organize 3D volume data in GPU
我现在正尝试使用C++、OpenGL和GLSL实现光线投射体积渲染(用于GPU加速)。为了获得更好的质量和性能,我想用八叉树来组织三维医学体数据,这样我就可以很容易地使用一些算法,如空间跳跃和自适应采样。
但是如何有效地构建八叉树呢?如何参观八叉树?当光线在体积数据中传播时,如何确定采样点属于八叉树的哪个单元或叶?
这里有一篇关于GPU八叉树的优秀文章(这里也有可用的源代码)。然而,它是基于Cg的,但这可以被认为是一个更大的优势。
鉴于您正在使用数据密度更大的医学数据,您可能还对Cyril Crassin的博士论文感兴趣,该论文使用流GPU稀疏八叉树来组织密集体素数据。在这里,八叉树是在GPU上构建的,使用3D体积纹理用于数据存储(叶节点)和砖池用于分配内部节点,从下到上构建,然后mip-map'ed用于光线投射。
如果你愿意稍微弯曲一下,有一个关于使用CUDA的稀疏体素八叉树的大项目,它将为稀疏八叉树和光线投射提供有价值的见解。
相关文章:
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- C++中的多维数据集:从 std::vector 的 2D 数据到 std::vector 的 2D 网格的最干净方法?
- 如何使用qt缩放三维网格
- 三维数组中的C/C++DWORD到BYTE和BYTE到DWORD的转换
- 多维数据集ai中的ai_float是什么
- dlibkrr_trainer在多维数据上给出错误
- 使用vtkImageReslice重新切片三维原始图像
- 特征:创建一个具有函数的三维阵列
- 扩充矩阵的行缩减-三维样条曲线计算
- 使用pcl transformcloud将三维点平移并旋转到原点
- 用C++从三维矢量中删除元素
- 如何访问CGAL三维三角测量中的面
- 如何在Openscenegraph中从二维鼠标点击的屏幕坐标点计算三维点(世界坐标)
- std::将三维数组复制到三维向量中
- 使用八叉树在GPU中组织三维体积数据
- HDF5:将线性数组保存到三维数据集
- 如何使用OpenGL将体积数据渲染为三维纹理
- 如何将MPI派生的数据类型用于三维数组
- 三维数据的高斯模糊
- 如何在c++中创建一个三维数组,每个层都有自己的数据类型