【问题标题】:How to sort and compare in a Bounding Volume Hierarchy如何在包围体层次结构中进行排序和比较
【发布时间】:2013-02-07 10:36:15
【问题描述】:

我目前正在为 3D 三角形实施边界体积层次结构。可悲的是,所有对 BVH 的解释都不足以说明您对对象进行分类以进行拆分的部分。对于初学者,我想以平衡树为目标并使用中位数切割。这将要求我在当前节点的拆分轴上的空间标准之后对三角形或其边界框(AABB)进行排序。我真的不确定BB或三角形的最大或最小延伸是否足以进行适当的分离,因为某些三角形可能更大。我也不确定是比较边界框还是三角形更好。

问题的第二部分是对每一步进行排序似乎很昂贵。计算机图形学中的其他算法使用预先排序的列表,然后根据拆分标准拆分这些列表。我看不出如何有效地比较三角形并确保它们属于一个列表。这是否意味着我必须每一步都对列表进行排序?

【问题讨论】:

    标签: raytracing bounding-box aabb bounding-volume pbrt


    【解决方案1】:

    正如您所发现的,您有多种选择。最容易想到的是使用边界框的质心。您还可以按最小坐标和最大坐标分别排序。

    您可以按每个轴排序作为预处理。然后每次迭代都是一个分区,涉及选择要在哪个轴上拆分以及在哪里拆分,并将起点/终点存储在该轴的排序列表中。

    查看 Ingo Wald 的论文:http://www.sci.utah.edu/~wald/Publications/2007/FastBuild/download/fastbuild.pdf

    更快、质量更低的方法是线性化 BVH - 将每个质心映射到空间填充曲线上的坐标,例如 Morton 码,然后按 Morton 码对所有三角形进行排序,然后将跨度拆分为框。

    【讨论】:

    • 感谢您的回答。论文中完成的分箱和成本计算似乎与我想做的事情差不多。我仍然不确定该选择什么。质心似乎是一个好主意,但与按最小值和最大值排序相比,我没有看到缺点或优点。我也不明白存储起点/终点对我有何帮助。
    • 使用质心。如果你有长的、有向的三角形的一般情况,但又不想要 min 和 max 的特殊逻辑,那么 min 和 max 是松散的。排序列表中的开始/结束索引表示属于一个框的跨度。您在递归时细分跨度。
    【解决方案2】:

    SAH(Surface Area Heuristic)是评估在用于光线追踪的 BVH 中分割一组三角形的最常用方法。您可以在 PBRT 书 (http://www.pbrt.org) 的第 4 章找到很好的解释。可在此处免费获取:http://pbrt.org/pbrt-2ed-chap4.pdf

    如果你对光线追踪还有一点点兴趣,我建议你买完整本书。

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2016-05-21
      相关资源
      最近更新 更多