首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你实际上是如何制作一个八叉树(用于体素)的?

你实际上是如何制作一个八叉树(用于体素)的?
EN

Stack Overflow用户
提问于 2011-09-05 23:40:43
回答 2查看 1.9K关注 0票数 1

我见过创建八叉树的代码,在其中添加和删除数据,但是如何真正构建八叉树呢?有没有3d体素软件可以保存到某种类型的数组中,然后可以转换为八叉树?或者你可以直接保存到一个八叉树?

EN

回答 2

Stack Overflow用户

发布于 2012-02-28 17:59:03

取决于您的实现-

如果你使用八叉树来细分空间,那么通常你会在其中抛出一堆V3s,一旦一个节点中有超过一定数量的点,你就会细分并重新分布它们。

如果你正在寻找一种方法来存储我的世界风格的体素,那么你将细分,直到你的体素大小达到1:1,并将你的数据存储在叶节点中。

数据从何而来取决于你-八叉树是一种存储、操作和搜索数据的方式,而不是一种文件格式。

票数 0
EN

Stack Overflow用户

发布于 2013-12-16 17:56:52

八叉树中的每个节点都有一个点。这些节点被分解为(您猜对了)八个子节点。这些节点依次包含每个,一个点。

通常,你不会将所有的顶点添加到一个八叉树中,除非你正在做一些不好的碰撞检测,其中每个顶点都很重要……这并不是说你不能让它变得更快,但它仍然比较少节点数给出的近似值要慢。(几乎所有情况都是如此,近似更快)。

同样,如果你正在进行高质量的渲染,八叉树可能应该有和你拥有的点一样多的节点。

现在来回答这个问题:

  1. 创建一个带有边框的根节点,该边框将从中心开始将其包围。
  2. 插入每个点。这应该在相关方向上细分八叉树。

代码语言:javascript
复制
1. As you insert these points, the data will move further down into leaf nodes that more closely encapsulate your model.
2. Also, as you subdivide the bounding box is halved for each subsequent node down.

  1. 如果你真的想保存它,你可以保存顶点(编号),然后让你的程序把节点和顶点之间的各种连接写到磁盘上,在磁盘上加载它们的时间与从头开始构建八叉树所需的时间大致相同。

无论如何,我希望我已经回答了你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7310169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档