有没有办法遍历 OptiX 7 加速结构来找到最接近给定点的几何?

Is there a way to traverse an OptiX 7 acceleration structure to find the geometry closest to a given point?

我知道这不是 OptiX 的主要目标,但它与光线行进(球体行进)有符号距离场相关,所以我想我会尝试。我最初为此创建了自己的 BVH,但我希望能从最近的所有光线追踪工作和​​ RTX 加速中受益。

假设我对 OptiX 7 有一些基本的了解 API。

我最初的尝试涉及将 optixTrace 光线方向设置为 {0, 0, 0} 但这只会触发光线原点位于 AABB 内部的形状的交点(有意义)。然后我将光线方向设置为 {inf, inf, inf},这似乎触发了每个基元的交集调用,而不管 AABB 距离或报告的 tMax 值。

我试过其他一些光线方向和 tMax/tMin 值的组合,我考虑了各种 OPTIX_RAY_FLAGS 但似乎没有什么可行的。

理想情况下,最好只查询距射线原点 tMax 距离内的边界框。这显然是一个不同于 ray-aabb 交叉点的检查,但我很好奇是否可能有一些 API flags/masks/functionality 我错过了允许这样做。直接访问加速结构层次结构在这里也有帮助,但我在编程指南中没有看到任何相关信息。

希望我们中有人在 OptiX 论坛上回答了这个问题,但只是为了解决这里的问题:

这很好,这是一个常见问题,但不幸的是,目前没有办法使用 OptiX 7 几何加速进行单个最近邻查询或单个 k 最近邻 (KNN) 查询结构。这些结构目前仅限于有限的定向射线查询。

有一篇论文探索使用 OptiX 使用多个光线样本进行半径搜索:https://abasilak.github.io/papers/journals/jcgt2021/paper.pdf