【发布时间】:2011-05-22 00:06:08
【问题描述】:
谁能推荐一种快速有效的方法来存储和访问稀疏八叉树?
最好是可以在 HLSL 中轻松实现的东西。 (我正在开发一个光线投射/体素应用)
在这种情况下,可以预先计算树,所以我主要关心大小和搜索时间。
更新
对于希望执行此操作的任何人,更有效的解决方案可能是将节点存储为使用 Z 阶曲线/莫顿树生成的线性八叉树。这样做消除了内部节点的存储,但可能需要使用第二个“数据纹理”交叉引用线性树阵列,其中包含有关单个体素的信息。
【问题讨论】:
-
你说的稀疏,是指3D空间很大,只有几个,小物件?
-
@Kevin 是的。比如说,一个 (2^10)^3 (1GB) 个元素的立方体大小,大概是 20% 左右。
-
那么它和普通的八叉树有什么不同吗?抱歉,我熟悉四叉树和八叉树,但稀疏八叉树对我来说听起来很新鲜。
-
它与普通的八叉树并没有什么不同,只是我需要尽可能地压缩它,而不是真正地压缩它。这必须存在于资源非常有限的 GPU 上的纹理中。
标签: c# xna hlsl sparse-array octree