使用八叉树在GPU中组织3D体数据

Xia*_*Jun 2 c++ opengl 3d graphics glsl

我现在正尝试使用C++,OpenGL和GLSL(用于GPU加速)实现Ray Casting Volume Rendering.为了获得更好的质量和性能,我想使用八叉树来组织3D医疗体积数据,因此我可以轻松地使用空间跳跃和自适应采样等算法.

但是如何有效地构建八叉树呢?如何访问八叉树?当光线在体数据中传播时,如何确定样本点所属的八叉树的哪个单元格或叶子?

Nec*_*lis 8

有对GPU的优秀文章八叉树是可在这里(也有可用的源在这里).然而,它基于Cg,但可以考虑更多的优势.

由于您正在使用医疗数据,因为数据更密集,您可能也对Cyril Crassin的博士论文感兴趣,该论文使用流GPU稀疏八叉树来组织密集体素数据.这里的八叉树是在GPU上构建的,使用3D体积纹理进行数据存储(叶子节点)和砖块用于分配内部节点,从底部向上构建,然后使用mip-map进行光线投射.

如果你愿意屈服,有一个关于稀疏体素八叉树的大项目使用CUDA,这将提供对稀疏八叉树和射线投射到它们中的宝贵见解.

  • 八叉树的分支因子为 8,对于图形处理所需的快速叶访问来说太深了。我建议使用 nVidia 的 GVDB (https://developer.nvidia.com/gvdb) 或 OpenVDB (https://www.openvdb.org)。 (2认同)