2

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

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

然而,优化的八叉树结构应该能够做到等于或比这更好,因为:

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

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

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

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

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

4

1 回答 1

2

我认为八叉树是可行的方法,但只有在需要时才应构建子节点(至少设置一个体素)。此外,应该使用压缩。通常相邻的体素具有相同的值,因此 RLE 压缩似乎效果很好。这在本论文http://www.terathon.com/voxels/中有解释

于 2013-06-18T12:33:45.753 回答