什么是最具存储效率的八叉树重建结构?

时间:2013-01-23 00:29:11

标签: c++ algorithm memory tree octree

我编写了一个完整的八叉树实现,没有对3D重建进行太多优化,但是,树结构包含太多指针,并且不能支持超过256 ^ 3个体素。

理论上,对于非树结构,如果我使用每个体素使用〜{1位的vector<bool>,这将更容易接受,因为非树结构可以支持2k ^ 3,8GB内存。

然而,优化的八叉树结构应该能够等于或优于此,因为:

  1. 它不应该存储每个体素,因为凝结可以压缩附近的,相同值的体素。

  2. 它不应该使用太多指针,因为指针本身已经使用了相当多的字节。

  3. 八叉树必须具有相当低的节点/体素比率

  4. 对于完整的八叉树,节点编号可以计算为(s^3 -1) / 7s是音量分辨率,是2的幂。例如,如果s = 4,我需要八叉树中的1 + 8 = 9个节点来表示体素的4x4x4网格。

    有没有人知道C ++中符合这些规范的八叉树实现?

1 个答案:

答案 0 :(得分:2)

我认为八叉树是要走的路,但是应该只在需要时才建立子节点(至少设置一个体素)。此外,应使用压缩。通常相邻的体素具有相同的值,因此RLE压缩似乎运行良好。这篇论文在http://www.terathon.com/voxels/

中进行了解释