1.基于虚拟点光源的三维场景全局光照效果分布式集群绘制方法,其特征在于:分布式集群系统包含1台控制结点计算机和2n台绘制结点计算机,n≥2;在控制结点计算机和所有绘制结点计算机上都保存有相同的三维场景数据和虚拟相机观察参数;在控制结点计算机的控制下,首先在各个绘制结点计算机上基于随机走步法跟踪NS条从面光源发出的随机光线传输路径,为随机光线传输路径与三维场景的几何对象的每个交点关联一个虚拟点光源;然后各个绘制结点计算机把产生的虚拟点光源数据通过网络发送给控制结点计算机,控制结点计算机把接收到的来自所有绘制结点计算机的虚拟点光源数据合并在一起,利用矩阵行列采样技术从所有虚拟点光源中随机选择一部分用来实际照射三维场景,并把这些被选中的虚拟点光源数据通过网络发送给各个绘制结点计算机;控制结点计算机负责绘制面光源照射三维场景时的直接光照效果;控制结点计算机把要绘制的虚拟相机拍摄的画面像素区域等分成 行、 列的子块, 表示对x向下取整,每个子块的像素对应的间接光照效果由一个绘制结点计算机来绘制;各个绘制结点计算机在绘制完成相应的像素子块的像素对应的间接光照效果后,把绘制结果通过网络发送给控制结点计算机,最后控制结点计算机把接收到的来自各个绘制结点计算机的间接光照结果以及控制结点计算机绘制三维场景得到的直接光照结果合并成完整的全局光照结果;具体实现步骤如下:提供一种数据结构TVPL,用于存储与虚拟点光源相关的数据;数据结构TVPL包括虚拟点光源所在位置Pos、虚拟点光源所在位置法向量Nrml、虚拟点光源关联的光线传输路径入射方向Vi、虚拟点光源所在位置的双向反射分布函数BRDF、虚拟点光源的光通量Flux共5个成员变量;
步骤Step101:启动控制结点计算机、网络交换机和所有绘制结点计算机,使其处于工作状态;控制结点计算机通过网络向各个绘制结点计算机发送开始产生虚拟点光源数据命令,使各个绘制结点计算机根据三维场景数据,基于随机走步法跟踪NS条从面光源发出的随机光线传输路径,并为光线传输路径与三维场景的几何对象的每个交点关联一个虚拟点光源;
步骤Step102:对于第m台绘制结点计算机,m=1,2,…,2n,在接收到控制结点计算机发来的开始产生虚拟点光源数据命令后,具体执行如下操作:
步骤Step102-1:根据三维场景数据,使用随机走步法,跟踪NS条从面光源发出的随机光线传输路径;对于每条随机光线传输路径,对于该随机光线传输路径与三维场景的几何对象的每个交点Prg,为交点Prg关联一个虚拟点光源,并根据该随机光线传输路径及相关的随机走步跟踪参数计算该虚拟点光源对应的光通量VFLUX,同时创建一个数据结构TVPL类型的变量A001,变量A001与虚拟点光源一一对应,把变量A001的虚拟点光源所在位置Pos成员变量赋值为交点Prg所在位置,把变量A001的虚拟点光源所在位置法向量Nrml成员变量赋值为交点Prg所在位置的表面法向量,把变量A001的虚拟点光源关联的光线传输路径入射方向Vi成员变量赋值为该随机光线传输路径在交点Prg处的入射方向,把变量A001的虚拟点光源所在位置的双向反射分布函数BRDF成员变量赋值为交点Prg所在位置的表面双向反射分布函数,把变量A001的虚拟点光源的光通量Flux成员变量赋值为光通量VFLUX;
步骤Step102-2:在第m台绘制结点计算机的存储器中,创建一个列表A002,列表A002用于存储数据结构TVPL类型的变量;令列表A002为空;把在步骤Step102-1中创建的所有数据结构TVPL类型的变量A001添加到列表A002中,把列表A002通过网络发送给控制结点计算机;
步骤Step103:在控制结点计算机的存储器中创建一个列表A003,列表A003用于存储数据结构TVPL类型的变量;令列表A003为空;在控制结点计算机的存储器中创建一个列表A004,列表A004用于存储数据结构TVPL类型的变量;令列表A004为空;控制结点计算机把接收到的从各个绘制结点计算机发来的列表A002的所有数据结构TVPL类型的变量A001添加到列表A003中;控制结点计算机根据三维场景数据、虚拟相机观察参数和列表A003中的所有数据结构TVPL类型的变量A001表示的虚拟点光源,利用矩阵行列采样技术从列表A003中的所有数据结构TVPL类型的变量A001表示的虚拟点光源中选择Nvl个虚拟点光源,把这Nvl个虚拟点光源对应的数据结构TVPL类型的变量A001存放到列表A004中;控制结点计算机把列表A004通过网络发送给所有绘制结点计算机;在控制结点计算机的存储器中创建一个包含M行、N列元素的二维数组AGI,用于存储虚拟像素平面上的每个像素对应的可视场景点的光照值,M为虚拟像素平面上的像素行数,N为虚拟像素平面的像素列数,数组AGI的元素和虚拟像素平面上的像素一一对应;可视场景点为从视点发射的穿过虚拟像素平面上的像素的光线与三维场景的几何对象之间的离视点最近的交点;把数组AGI的每个元素赋值为背景色对应的光照值;控制结点计算机利用蒙特卡罗直接光照求解技术估计面光源对虚拟像素平面上的每个像素对应的可视场景点D001的直接光照值D002,并把直接光照值D002赋值给可视场景点D001对应的像素对应的数组AGI的元素;
步骤Step104:对于第m台绘制结点计算机,m=1,2,…,2n,在接收到控制结点计算机发来的列表A004后,执行如下操作:
步骤Step104-1:令
如果I等于 则令rE=M;如果J等于 则令cE=N;M为虚拟像素平面上的像素行数,N为虚拟像素平面的像素列数;
步骤Step104-2:第m台绘制结点计算机根据三维场景数据、虚拟相机观察参数、列表A004中的所有数据结构TVPL类型的变量A001表示的虚拟点光源,使用基于采样点光源的可视场景点直接光照值总和估计技术,来近似估计虚拟像素平面上的从第rS行至第rE行、从第cS列至第cE列的矩形像素区域B001内的每个像素E001对应的可视场景点C001在列表A003中的所有数据结构TVPL类型的变量A001表示的虚拟点光源照射的条件下的直接光照值总和B002,其中用基于抛物面阴影图的阴影映射方法完成阴影计算;在第m台绘制结点计算机的存储器中创建一个包含rE-rS+1行、cE-cS+1列元素的二维数组AIND,数组AIND的元素和像素区域B001内的像素一一对应,把数组AIND的每个元素赋值为0;
步骤Step104-3:对于矩形像素区域B001内的每个像素E001对应的可视场景点C001,执行如下操作:
计算可视场景点C001对应的像素在矩形像素区域B001内的行号irow和列号jcol,矩形像素区域B001包含从第1行至第rE-rS+1行的总共rE-rS+1行像素,矩形像素区域B001包含从第1列至第cE-cS+1列的总共cE-cS+1列像素,把可视场景点C001的直接光照值总和B002赋值给数组AIND的第irow行、第jcol列元素;
步骤Step104-4:第m台绘制结点计算机通过网络把数组AIND传送给控制结点计算机;
步骤Step105:控制结点计算机在接收到第m台绘制结点计算机发来的数组AIND后,m=
1,2,…,2n,执行如下操作:
步骤Step105-1:令
如果I′等于 则令rE′=M;如果J′等于 则令c′E=N;M为虚拟像素平面上的像素行数,N为虚拟像素平面的像素列数;
步骤Step105-2:把数组AIND的第sr行、第tc列的元素的值与数组AGI的第sr+rS′-1行、第tc+c′S-1列的元素的值之和赋值给数组AGI的第sr+rS′-1行、第tc+c′S-1列的元素,其中sr=
1,2,…,rE′-rS′+1,tc=1,2,…,c′E-c′S+1;
步骤Step106:控制结点计算机在对每个绘制结点计算机发来的数组AIND执行完步骤Step105-2后,把数组AGI的每个元素保存的光照值转换成三维场景画面图像像素颜色值,并把三维场景画面图像显示在显示器上。