递归光线遍历算法 - 遍历k-d树

时间:2011-07-01 19:03:50

标签: tree traversal line-intersection

我选择了基于堆栈的遍历算法(递归光线遍历算法),我在理解它时遇到了一些麻烦。

这是我的理解。

我需要找到光线进入体素的点(然后计算距离光线原点和那个点)它退出的位置(然后计算光线原点与该点之间的距离),距离在射线原点平面之间(在一些论文中我看到了公式:

(splitPoint - rayOrigin[currentAxle]) / rayOrientation[currentAxle]

我的光线方向为(0, 0, -1),然后在某些情况下,我将除以零(因为x = 0y = 0)。怎么会这样?

在算法的初始化中,射线原点位于主体素中,如何获得射线进入体素的距离?

我能理解这一点吗?有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

来自“从理论到实施的基于物理的渲染”一书。

enter image description here 两种情况,其中节点的两个子节点都不需要因为光线而被处理 与它们不重叠。

(a)顶部光线与分裂平面相交超出光线的 t_max 位置,因此不会进入远儿。底部光线背离分裂平面,由负 t_split 值表示。

(b)光线在光线的 t_min 值之前与平面相交,表明近处儿童不需要处理。