3

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

这是我的理解。

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

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

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

并且在算法的初始化中,光线原点在主体素中,我如何获得光线进入体素的距离?

我理解正确吗?有人可以解释吗?

4

1 回答 1

0

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

在此处输入图像描述 两个节点的两个子节点不需要处理的两种情况,因为光线不与它们重叠。

(a) 顶部光线在光线的t_max位置之外与分割平面相交,因此不会进入远子。底部光线背向分割平面,由负t_split值指示。

(b) 光线在光线的t_min值之前与平面相交,表示近处子节点不需要处理。

于 2013-06-04T07:21:36.517 回答