- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种多通道灯光追踪算法
0 提高光照与物的求交测试效率
真实体验设计是计算机生成技术。首先,计算机构建了所需场景的几何模型,然后根据假设的光条件计算每个场景的表面的光强度,从而创造出真实的视觉效果。光线跟踪算法是生成真实感图形的主要算法之一,由于该算法原理简单、实现方便,并且能够生成各种逼真的视觉效果,因而在图形学各个领域得到了广泛的应用。由于光线跟踪算法需要跟踪每一条从视点发出的光线,因此涉及到大量的光线与景物的求交测试,与传统扫描线算法相比,光线跟踪算法所需的计算量显得十分庞大。为使光线跟踪算法能处理复杂的场景,必须提高光线与景物的求交测试效率。其主要途径有:1)提高求交速度;2)减少求交次数;3)减少跟踪光线量;4)采用并行算法。快速确定光线与景物是否有交已成为加速光线跟踪的主流技术。为提高求交速度,在实际实现光线跟踪算法时可采用空间剖分技术和层次包围盒技术。
基于空间剖分技术的加速算法主要有3d-DDA算法、BSP或Kd-tree算法、Octree算法等。它们利用数据空间的相关性,通过对数据空间进行剖分,将连续的空体元划分到一定的包围盒中,当光线在数据空间通过时,只需与包围盒进行简单的求交运算就可以略过与跟踪光线无关的包围盒,从而减少求交次数,达到降低计算时间的目的。
1 追踪算法设计
首先,建立一个屏幕为xy平面的坐标系统,在这个参考框架内对场景进行描述。然后,由投影中心出发,确定穿过每个屏幕像素中心的光线路径,沿这束光线累计光照度,并将最终值赋给相应像素。对于每个像素,光线需要测试场景中的所有物体表面以确定其是否与该光线相交,并计算出交点离像素的距离,具有最小距离的交点即可代表该像素所对应的可见面。然后,继续考查该可见面上的反射光线(反射角等于入射角)。若该表面是透明的,还需要考查透过该面的折射光线。若将反射和折射光线统称为从属光线,对每条从属光线都需要重复这个过程,与多个物体求交点。然后,递归地沿从属光线方向最近的物体表面上生成下一折射和反射光线,光线跟踪的最大深度可由用户选定或由存储容量决定,当树中的一束光线到达预定的最大深度或到达某光源时,就停止跟踪。标准的场景跟踪过程如图1所示。
采用单位向量u表示入射光线向量,N为物体表面的单位法向量,R为单位反射光线向量。R的镜面反射方向决定于物体表面和入射光线的方向。
R=u-(2u×N)×N
对于一个透明面片,还需要考虑穿过物体的透射光线对总光强的贡献。沿透射方向T跟踪从属光线,以确定其贡献值,单位透射向量则可由向量u与N得到:
参数η=η2/η1,η1和η2分别为入射材质和折射材质的折射率,θ1和θ2分别为入射角和折射角。
综上所述,设计光线追踪算法的伪码如下:
COLOR TraceRay(VECTOR Begin, VECTOR Direction, int Depth)
{if(Depth 最大跟踪深度)
return Color=黑色;
else{设定追踪光线起点为Begin,方向为Direction,与基于八叉树剖分技术的场景进行求交测试;
if(无交点)return Color=背景颜色;
else{
将追踪光线与相交包围盒中所包含的面片进行求交测试,返回距离起点最近的交点Point;
计算交点处的局部光亮度;
确定交点所在表面的反射系数ks和透射系数kt;
if(交点所在的表面为镜面)
{计算跟踪光线在交点处的反射光线方向Df;
反射光亮度=TraceRay(Point, Df, Depth +1);}
if(交点所在的表面为透射面)
{计算跟踪光线在交点处的透射光线方向Dt;
透射光亮度=TraceRay(Point, Dt, Depth +1);}
return Color=局部光亮度+反射光亮度+投射光亮度;}
}
}
由上述伪码可以看出,在整个光线跟踪过程中,通过递归调用光线追踪函数,不断跟踪光线直至达到要求的跟踪深度为止。其中,跟踪光线与场景、跟踪光线与面片的求交效率直接影响着真实感图形的生成速度。
2 光线跟踪算法和场景再现设计
2.1 叉树空间剖分算法
八叉树剖分算法作为一种场景组织方法,广泛应用于计算机图形学系统中,可显著减少对场景中多边形进行排序的时间。
通过规则八叉树结构来表示空间信息,显性地描述节点及通过指针来表达父子关系,指针可以直接利用内存指针实现。内存指针八叉树是一种直接建立在计算机内存中的指针八叉树数据结构,八叉树由中间节点组成,叶节点保存于中间节点的子节点中。中间节点中用一个字节来描述子节点的类型。
中间节点包括:1)子节点:为子节点指针或数据,4byte;2)子节点类型码:1byte(8位-八个子节点);3)父节点:节点指针,4byte;4)在父节点中的节点序号(3bit)及深度(5bit);5)节点值:多解析度,
文档评论(0)