1.基于可见性重用的三维场景直接光照效果近似绘制方法,其特征在于:把虚拟相机放在视点位置,按照正常的观察参数,利用光线投射技术绘制三维场景;对于每条从视点出发穿过虚拟像素平面上的像素的光线A001,光线A001与虚拟像素平面上的像素一一对应,判断光线A001与三维场景的几何对象是否相交,如果相交则进一步计算光线A001与三维场景的几何对象的离视点最近的交点A002,交点A002为一个可视场景点B001,同时在面光源上随机产生NUM个服从均匀分布的光源采样点B003,记录这NUM个光源采样点B003的空间位置,并计算每个光源采样点B003与交点A002之间的可见性VIS;对于每个交点A002,通过重用交点A002的相邻可视场景点的面光源采样及可见性计算结果来加速计算面光源对交点A002的近似直接光照贡献值;具体实现步骤如下:提供一种数据结构LSPD,用于存储与面光源采样点相关的数据;数据结构LSPD包括光源采样点的空间位置和光源采样点的可见性两个成员变量;
1)实现对面光源的采样,以及计算面光源采样点与可视场景点之间的可见性,具体步骤如下:
步骤Step101:把虚拟相机放在视点位置,按照正常的观察参数,利用光线投射技术绘制三维场景;对于每条从视点出发穿过虚拟像素平面上的像素的光线A001,光线A001与虚拟像素平面上的像素一一对应,判断光线A001与三维场景的几何对象是否相交,如果相交则进一步计算光线A001与三维场景的几何对象的离视点最近的交点A002,交点A002为一个可视场景点B001,可视场景点B001对应了虚拟像素平面上的一个唯一的像素;
步骤Step102:创建一个包含M行、N列元素的数组LS,M为虚拟像素平面上的像素行数,N为虚拟像素平面上的像素列数;数组LS的每个元素存储一个列表B002,列表B002的每个元素存储一个数据结构LSPD类型的变量;令数组LS的每个元素存储的列表B002为空;数组LS的每个元素和虚拟像素平面上的像素一一对应;
步骤Step103:对于每个可视场景点B001,执行如下操作:
在面光源上随机产生NUM个服从均匀分布的光源采样点B003;在计算机存储器中创建NUM个数据结构LSPD类型的变量,其与NUM个光源采样点B003一一对应;把每个光源采样点B003的空间位置赋值给与之对应的数据结构LSPD类型的变量的光源采样点的空间位置成员变量;对于每个光源采样点B003,判断从光源采样点B003的空间位置到可视场景点B001的线段是否与三维场景的几何对象相交,如果相交,则令与光源采样点B003对应的数据结构LSPD类型的变量的光源采样点的可见性成员变量的值为0,否则令与光源采样点B003对应的数据结构LSPD类型的变量的光源采样点的可见性成员变量的值为1;把NUM个光源采样点B003对应的NUM个数据结构LSPD类型的变量添加到可视场景点B001对应的虚拟像素平面上的像素对应的数组LS的元素存储的列表B002中;
2)对每个可视场景点的近似直接光照值计算,并绘制出三维场景的直接光照效果,具体步骤如下:
步骤Step201:创建一个包含M行、N列元素的数组ILU,M为虚拟像素平面上的像素行数,N为虚拟像素平面上的像素列数;数组ILU的每个元素与虚拟像素平面上的像素一一对应,数组ILU的每个元素用于保存虚拟像素平面上的像素对应的可视场景点的直接光照值;令数组ILU的每个元素的值等于背景色对应的光照值;
步骤Step202:对于步骤Step101中得到的每个可视场景点B001,执行如下操作:
步骤Step202-1:令变量SUM=0、变量NS=0,SUM为累加变量,NS为计数变量;计算可视场景点B001对应的像素在虚拟像素平面上所在的行号irow和列号jcol;令LIST1表示数组LS的第irow行、第jcol列的元素存储的列表B002;对于LIST1中的每个元素B004,令NS=NS+
1,如果元素B004存储的数据结构LSPD类型的变量的光源采样点的可见性成员变量的值等于1,则根据元素B004存储的数据结构LSPD类型的变量的光源采样点的空间位置成员变量所存储的光源采样点位置、可视场景点B001的位置、可视场景点B001所在位置的几何对象表面法向量、可视场景点B001所在几何对象的材质数据,计算元素B004存储的数据结构LSPD类型的变量的光源采样点的空间位置成员变量所存储的光源采样点位置对应的光源采样点对可视场景点B001的直接光照贡献值B005,把变量SUM的值与直接光照贡献值B005之和赋值给变量SUM;
步骤Step202-2:对于虚拟像素平面上的第irow行、第jcol列的像素的每个相邻像素B006,执行如下操作:
计算像素B006在虚拟像素平面上所在的行号Irow和列号Jcol,令LIST2表示数组LS的第Irow行、第Jcol列的元素存储的列表B002;对于LIST2中的每个元素B007,令NS=NS+1,如果元素B007存储的数据结构LSPD类型的变量的光源采样点的可见性成员变量的值等于1,则根据元素B007存储的数据结构LSPD类型的变量的光源采样点的空间位置成员变量所存储的光源采样点位置、可视场景点B001的位置、可视场景点B001所在位置的几何对象表面法向量、可视场景点B001所在几何对象的材质数据,计算元素B007存储的数据结构LSPD类型的变量的光源采样点的空间位置成员变量所存储的光源采样点位置对应的光源采样点对可视场景点B001的直接光照贡献值B008,把变量SUM的值与直接光照贡献值B008之和赋值给变量SUM;
步骤Step202-3:把数组ILU的第irow行、第jcol列的元素赋值为变量SUM的值除以变量NS的值所得的结果与面光源面积之乘积;
步骤Step203:把数组ILU的每个元素保存的直接光照值转换成三维场景画面图像像素颜色值,并把三维场景画面图像显示在显示器上。