简单的C/C++库,用于三角形相交加速结构。

4
我正在进行光线追踪,希望通过一些加速结构(kd树、BVH等)来提高速度。但我不想自己编写代码。到目前为止,我尝试过以下方法:
- 从pbrt中提取kd树。由于存在太多内部依赖关系,如果没有将整个pbrt引入我的代码中,我就无法成功实现。 - CGAL的AABB树。令人沮丧的是,它似乎只返回交点。而不知道交点来自哪个三角形,我就无法高效地在三角形上插值颜色。我很想扩展“点”的概念并添加颜色,但这似乎需要从头开始编写大量模板代码。 - 编写自己的加速结构。好吧,我编写了自己的网格加速类,它可以工作,但它很糟糕而且效率低下。
因此,如果有人能建议一个简单的库供我使用,我会非常感激!我所需要的只是给定一个三角形集和一条光线,找到最近的交点并返回该三角形的索引。
2个回答

2

2
好的,最终我还是从头开始写了自己的代码,但这看起来是一个不错的参考。谢谢! - Meekohi
1
仅供参考:你实现了k-d树吗?你的结果如何? - fluffels
2
不,它更像是一个“稍微聪明一点”的网格,因为我总是从应用程序内部开始。在最好的情况下,与蛮力相比,它可以提供大约20倍的加速,但对网格单元格的大小非常敏感。 - Meekohi
1
这通常是基于网格的方法的问题。不过,做得很好! - fluffels

1

G3D引擎具有光线追踪实现。不确定它的效率如何,但使用树实现而不使用库的其余部分应该不会太麻烦。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接