如何在边界体积层次结构中进行排序和比较

时间:2013-02-21 22:34:04

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

SAH(表面区域启发式)是评估在用于光线追踪的BVH中拆分一组三角形的位置的最常用方法。你可以在PBRT书的第4章(http://www.pbrt.org)找到一个很好的解释。它在这里免费提供:http://pbrt.org/pbrt-2ed-chap4.pdf

如果你对光线追踪甚至感兴趣,我建议你买完整本书。