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

3
我选择了一种基于堆栈的遍历算法(递归光线遍历算法),但我还有一些理解上的困难。
这是我的理解:
我需要找到光线进入体素的点(然后计算光线起点和该点之间的距离),以及它退出的点(然后计算光线起点和该点之间的距离),还需要计算光线起点和平面之间的距离(在某些论文中,我看到了公式:
(splitPoint - rayOrigin[currentAxle]) / rayOrientation[currentAxle]

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

在算法的初始化中,光线起点在主体素中,如何得到光线进入体素的距离?

我理解得对吗?有人能解释一下吗?

1个回答

0

这段内容来自于《基于物理的渲染:从理论到实现》一书。

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

(a) 顶部光线与分裂平面相交的位置超出了光线的t_max值,因此不会进入远处的子节点。底部光线朝向分裂平面的反方向,由负的t_split值表示。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接