我选择了一种基于堆栈的遍历算法(递归射线遍历算法),我对它的理解有点困难。
这是我所理解的。
我需要找到一个点,光线进入体素(然后计算距离射线起源和那个点)它存在的地方(然后计算出射线起源和那个点之间的距离),射线起源和平面之间的距离(在一些论文中我看到了公式:
(splitPoint - rayOrigin[currentAxle]) / rayOrientation[currentAxle]
我的射线方向是(0, 0, -1)
,在某些情况下,我将用零除以(因为x = 0
和y = 0
)。这怎么可能呢?
在算法的初始阶段,射线起源在主体素中,如何求出射线进入体素的距离?
我理解得对吗?有人能解释一下吗?
发布于 2013-06-04 07:21:36
它来自于“从理论到实现的基于物理的渲染”一书.
两种情况下,节点的两个子节点不需要处理,因为射线不重叠它们。
(a)顶部射线在射线的t_max位置之外与分裂平面相交,因此不进入远子层。底部射线远离分裂面,用负的t_split值表示。
(b)射线在射线的t_min值之前与平面相交,表明近邻的孩子不需要处理。
https://stackoverflow.com/questions/6552210
复制相似问题