我编写了一个完整的八叉树实现,没有对三维重建进行太多的优化,但是树结构包含了太多的指针,并且不能支持超过256^3个体素。
理论上,对于一个非树结构,如果我使用一个vector<bool>,它使用每个体素1位,这将是更可接受的,因为非树结构可以支持2k^3和8GB内存。
但是,优化的八叉树结构应该能够做到等于或优于这一点,因为:
对于完全八叉树,节点数可以计算为(s^3 -1) / 7。s是体积分辨率,它是2的幂。例如,如果是s = 4,我需要八叉树中的1 + 8 = 9节点来表示4x4x4的体素网格。
有人知道C++中符合这些规范的八叉树实现吗?
发布于 2013-06-18 12:33:45
我认为octrees是可行的,但是只有在需要时才应该构建子节点(至少设置了一个体素)。此外,应该使用压缩。通常相邻的体素具有相同的值,因此RLE压缩看起来很好。在本文中,http://www.terathon.com/voxels/对此作了解释。
https://stackoverflow.com/questions/14470507
复制相似问题