【发布时间】:2011-09-05 15:40:43
【问题描述】:
我见过创建八叉树、添加和删除数据的代码,但实际上如何构建八叉树?是否有 3d 体素软件可以保存到某种数组中,然后可以转换为八叉树?还是可以直接保存到八叉树?
【问题讨论】:
我见过创建八叉树、添加和删除数据的代码,但实际上如何构建八叉树?是否有 3d 体素软件可以保存到某种数组中,然后可以转换为八叉树?还是可以直接保存到八叉树?
【问题讨论】:
取决于您的实施 -
如果您使用八叉树来细分空间,那么通常您会向其扔一堆 V3,一旦一个节点中包含超过一定数量的点,您就可以细分并重新分配它们。
如果您正在寻找一种存储我的世界风格体素的方法,那么您将细分直到您的体素大小达到 1:1,并将您的数据存储在叶节点中。
数据的来源取决于您 - 八叉树是一种存储、操作和搜索数据的方式,而不是文件格式本身。
【讨论】:
八叉树中的每个节点都有一个点。这些节点被分成(你猜对了)八个子节点。这些节点依次包含一个点。
一般来说,你不会将 所有 的顶点添加到八叉树中,除非你正在做一些不合时宜的碰撞检测,其中每个顶点都很重要……并不是说你做不到那么快,但它仍然比由较少数量的节点给出的近似值慢。 (几乎所有事物都是如此,近似值更快)。
同样,如果您要以高质量的八叉树进行渲染,则节点数可能与点数一样多。
现在开始回答:
使用从中心包围它的边界框创建一个根节点。
插入每个点。这应该在相关方向细分八叉树。
无论如何,我希望我回答了你的问题。
【讨论】: