我已经选择了基于堆栈的遍历算法(递归光线遍历算法),我在理解它时遇到了一些麻烦。
这是我的理解。
我需要找到光线进入体素的点(然后计算距离光线原点和那个点)它离开的位置(然后计算光线原点和那个点之间的距离),光线原点和平面之间的距离(在某些论文中我看到了公式:
(splitPoint - rayOrigin[currentAxle]) / rayOrientation[currentAxle]
我的射线方向是(0, 0, -1)
然后在某些情况下我将分为零(因为x = 0
和y = 0
)。怎么会这样?
在算法的初始化中,射线原点位于主体素中,如何获得射线进入体素的距离?
我能正确理解吗?谁能解释一下?
它来自“从理论到实现的基于物理的渲染”一书。
两种情况,其中节点的两个子节点都不需要处理,因为光线不与它们重叠。
(a)顶部光线与分裂平面相交超出光线的t_max位置,因此不会进入远儿。底部光线背离分裂平面,由负t_split值表示。
(b)射线在射线的t_min值之前与平面相交,表明近处的孩子不需要处理。