在光线跟踪算法的递归过程中(3)

2019-08-30 12:53

1 P所在单位立方体网格编码为 q1q2...qN

面上),则该空间网格的前左下角坐标为

上述性质在下面介绍的光线跟踪八叉树算法中起了很重要的作用。

下面来看如何进行光线跟踪。设光线起始点为P0,方向为R,先求P0所在单位立方体网格的八叉树编码Q。这只需先对P0各坐标分量取整得到单位立方体网格的前左下角坐标P,然后即可用式(5)计算编码Q。若计算出的P点位于世界立方体的边界上,则需根据光线前进方向判别光线是否已射出场景。若光线已射出场景,则算法结束。否则,在空间线性八叉树结点表中查找Q。查找的结果用两个量表示。一个是表明查找是否成功的布尔量T,另一是未获匹

时,T取真值。这是因为该结点对应的空间网格包含了P0所在的最小网格单元。注意这一结点为非空的终结点,它表明P0点位于一含有三角形面片且边长为2N-i的空间网格内部或边界上。未获匹配位数B定义为八叉树终结点表中与Q获得最大程度匹配结点,其编码尾部不匹配的位数。若该结点的编码为

通过Q和B则可确定当前立方体的空间位置和大小。对线性八叉树采用二分查找可以加快查询速度。 若查找结果为T取真值,则用光线和该立方体中所含三角形面片求交。若有交,则返回最近交点,算法结束。否则重新置T为假。

若T为假(查找结果T为假或者求交失败置T为假),则应跨过当前立方体继续向前搜索。当查找结果为T取假值时,P0点位于一空的空间网格内,此空间

前立方体网格,易知其边长为2B,前左下角坐标可相应确定。

跨越一空间网格后,光线进入相邻的下一空间网格。这只需求出当前空间网格上的出口点,并根据出口点坐标重置P0。最简单的出口点计算方法是将光线与当前空间网格的六个边界表面求交,但这样做计算量较大。若将光线在各坐标平面上投影线的截距和斜率事先计算好,则可通过判别光线的射出方向快速求得出口点(最好情况仅需2次乘法,最坏情况不超过5次乘法)。

计算出光线的出口点坐标后,就可将它作为新的出发点P0重复上述计算过程,直至光线射出场景或求到交点为止。


在光线跟踪算法的递归过程中(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:在施工中采用具有切实可行的新技术、新材料、新工艺、新设备

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: