3d 高效的光线/光线相交算法?

3d 高效的光线/光线相交算法?,3d,collision-detection,raytracing,broad-phase,3d,Collision Detection,Raytracing,Broad Phase,问题: 我有一个问题,在3D中有一整束光线(数千条),我想通过这些光线找到所有的交点 我已经拥有的: 1.我有两条射线求交点的算法 2.天真的实现测试每2条射线的组合,以找到我的点。准确度足够好,但速度太慢。我需要一些实时的东西 我要找的是: 除了测试每一个单一的2条射线组合之外,还有什么方法可以修剪或进行某种类型的宽相位检测吗?这是一个巨大的话题。有成百上千的研究论文和几本书。试着在你最喜欢的图书馆读一点书。此外,为什么要查找光线对的交点?“普通光线跟踪是关于寻找光线和曲面的交点。@确切地说,

问题: 我有一个问题,在3D中有一整束光线(数千条),我想通过这些光线找到所有的交点

我已经拥有的: 1.我有两条射线求交点的算法 2.天真的实现测试每2条射线的组合,以找到我的点。准确度足够好,但速度太慢。我需要一些实时的东西

我要找的是:
除了测试每一个单一的2条射线组合之外,还有什么方法可以修剪或进行某种类型的宽相位检测吗?

这是一个巨大的话题。有成百上千的研究论文和几本书。试着在你最喜欢的图书馆读一点书。此外,为什么要查找光线对的交点?“普通光线跟踪是关于寻找光线和曲面的交点。@确切地说,我读过的大多数论文都是关于光线和曲面的(或者说2D直线交点,它并没有真正推广到3D),因此我问了光线交点的问题。这适用于从多视图2D投影重建3D位置的应用程序。好的。那就不足为奇了。三维光线几乎从不相交,而二维光线几乎总是相交。如果您可以将解决方案限制为感兴趣的实体,则将其划分为块(我会尝试重叠球体)。然后只考虑对相同块的穿孔。如果区块太忙,请进一步细分它。这或多或少是用于光线曲面交点的“光线束”分析的对偶。这绝对是一个易于GPU SIMD处理的问题。这就是实时光线跟踪器获得速度的地方。@Gene听起来不错,我来试一试,谢谢。如果没有非常稳健(即证明正确)的算法,我会小心地将光线分类为相交。否则,大多数交点可能是由于公差系数或浮点精度限制造成的。您似乎表示这“足够好”,在这种情况下,您应该真正考虑(非零半径)圆柱体的交点。如果“光线”是有限段,您可以找到一种快速的方法,根据这些“厚”光线的边界体积选择来消除大量测试。这是一个巨大的主题。有成百上千的研究论文和几本书。试着在你最喜欢的图书馆读一点书。此外,为什么要查找光线对的交点?“普通光线跟踪是关于寻找光线和曲面的交点。@确切地说,我读过的大多数论文都是关于光线和曲面的(或者说2D直线交点,它并没有真正推广到3D),因此我问了光线交点的问题。这适用于从多视图2D投影重建3D位置的应用程序。好的。那就不足为奇了。三维光线几乎从不相交,而二维光线几乎总是相交。如果您可以将解决方案限制为感兴趣的实体,则将其划分为块(我会尝试重叠球体)。然后只考虑对相同块的穿孔。如果区块太忙,请进一步细分它。这或多或少是用于光线曲面交点的“光线束”分析的对偶。这绝对是一个易于GPU SIMD处理的问题。这就是实时光线跟踪器获得速度的地方。@Gene听起来不错,我来试一试,谢谢。如果没有非常稳健(即证明正确)的算法,我会小心地将光线分类为相交。否则,大多数交点可能是由于公差系数或浮点精度限制造成的。您似乎表示这“足够好”,在这种情况下,您应该真正考虑(非零半径)圆柱体的交点。如果“光线”是有限段,您可以找到一种快速方法,根据这些“厚”光线的边界体积选择来消除大量测试。