用作为八叉树

时间:2016-04-28 07:54:07

标签: algorithm data-structures 3d computational-geometry octree

我有一个应用程序,其中我使用八叉树来存储轴对齐边界框(AABB)的体网格。

鉴于水密三角网,我需要:

  • 查找AABB是否与表面网格相交或完全位于表面网格的内部/外部,

  • 使用相交的AABB剪切曲面网格,以生成完全位于每个AABB内的三角形。

三角测量和包含AABB的八叉树都是动态的。八叉树中的叶节点数量很大。表面网格中的三角形数量要小得多(O(10 ^ 9 - 10 ^ 13)八叉树节点,相对于O(10 ^ 6)个三角形。

哪种数据结构和算法适合我的问题?

现在我:

  • 将三角形存储在与体网格相同的八叉树中,
  • 将每个三角形存储在包含它的最小八叉树节点中,
  • 使用单个AABB剪切三角形网格,方法是从该AABB遍历到根节点及其叶子,用AABB剪切节点中包含的每个三角形。

节点中的三角形直到叶子完全包含在AABB中并且不需要任何剪辑,而从AABB到根节点中包含的那些三角形需要剪切。但是:

  • 由于我存储三角形的方式,我不会在每个单个八叉树节点中存储的最大三角形数量的上限,所以我没有使用单个AABB剪切曲面网格时必须剪切的三角形数量的上限。

  • 测试AABB是否与三角形网格相交可能需要剪裁,如果三角形存储在根节点中。

  • 无法快速确定节点是否在网格内/外/相交。

0 个答案:

没有答案