大型三维场景的计算机集群分布式路径跟踪绘制方法技术

技术编号:15541222 阅读:79 留言:0更新日期:2017-06-05 10:43
本发明专利技术涉及一种大型三维场景的计算机集群分布式路径跟踪绘制方法,其特征在于:使用计算机集群A001实现大型三维场景的分布式路径跟踪绘制,计算机集群A001由

Distributed path tracing method for computer cluster in large 3D scenes

Tracking computer cluster distributed path drawing method of the invention relates to a large-scale 3D scene, which is characterized in that: the use of distributed computer cluster A001 path to achieve large-scale 3D scene rendering tracking, computer cluster by A001

【技术实现步骤摘要】
大型三维场景的计算机集群分布式路径跟踪绘制方法
本专利技术涉及一种大型三维场景的计算机集群分布式路径跟踪绘制方法,属于三维场景绘制

技术介绍
路径跟踪是一种常见的三维场景绘制技术,在影视制作、三维可视化、艺术设计等领域有着广泛的应用。J.F.Hughes等人2014年出版的《ComputerGraphics:PrinciplesandPractice,ThirdEdition》对路径跟踪技术作了详细介绍,在本专利技术中称之为单机版路径跟踪技术。利用路径跟踪绘制三维场景时,需要先把整个三维场景加载到计算机内存之中,然后再按照路径跟踪流程绘制三维场景。对于大型三维场景,其中包含巨量的几何数据,普通的计算机图形工作站内存有可能难以容纳整个三维场景模型数据。中小型影视制作企业通常都拥有一定数量的计算机图形工作站,但未必有足够的资金去购买更高端的计算机硬件设备。可以用高速网络交换机把大量计算机图形工作站连接起来,构成一个计算机集群。计算机集群的总内存容量可以比较容易地满足大于加载大型三维场景所需存储容量的要求。然而,由于计算机集群的内存分散在不同计算机图形工作站上,因此要想利用计算机集群来对大型三维场景进行路径跟踪绘制,就必须设计适合于计算机集群体系结构的分布式路径跟踪绘制方法。
技术实现思路
本专利技术的目的在于提供一种大型三维场景的计算机集群分布式路径跟踪绘制方法,通过把大型三维场景模型划分成多个部分,并把不同部分加载到计算机集群的不同结点上,利用计算机集群来分布式地对大型三维场景进行绘制。本专利技术的技术方案是这样实现的:大型三维场景的计算机集群分布式路径跟踪绘制方法,其特征在于:使用计算机集群A001实现大型三维场景的分布式路径跟踪绘制,计算机集群A001由台计算机图形工作站通过网络交换机连接在一起构成,其中一台计算机图形工作站被用作主控结点A002,其他计算机图形工作站被用作绘制结点;换句话说,计算机集群A001包括主控结点A002和第1个绘制结点、第2个绘制结点、以此类推一直到第个绘制结点;在建模时,对要绘制的三维场景中的几何对象进行划分,把三维场景模型分成个部分,保证每部分包含的几何对象对应的几何数据能够全部被加载到单台计算机图形工作站的内存中,并能在单台计算机图形工作站上正常执行对该部分几何对象构成的子场景的路径跟踪绘制操作,每部分包含的几何对象对应的几何数据构成子场景模型。提供一种数据结构INPD,用于存储与三维场景点相关的数据,数据结构INPD包括使用标识INUT、场景点位置POS、场景点所在位置的法向量NORM、场景点所在几何面片的材质数据MAT共四个成员变量。提供一种数据结构SHDT,用于存储遮挡测试结果,数据结构SHDT包括遮挡标识TO、使用标识SHUT共两个成员变量。提供一种数据结构RAY,用于表示光线,数据结构RAY包括光线起点RS、光线方向RV、使用标识RUT共三个成员变量。提供一种数据结构SEG,用于表示线段,数据结构SEG包括线段起点GS、线段终点GE、使用标识GUT共三个成员变量。具体实现步骤如下:Step101:在主控结点A002的内存中,创建一个包含M行、N列的二维数组RAD,用于存储通过路径跟踪计算得到的光照亮度值,M表示虚拟像素平面上的像素行数,N表示虚拟像素平面上的像素列数;把数组RAD的每个元素赋值为零;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURRAYA,数组CURRAYA的每个元素保存一个数据结构RAY类型的变量;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURSEGA,数组CURSEGA的每个元素保存一个数据结构SEG类型的变量;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURINPDA,数组CURINPDA的每个元素保存一个数据结构INPD类型的变量;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURSHDTA,数组CURSHDTA的每个元素保存一个数据结构SHDT类型的变量;Step102:在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurRayA,数组CurRayA的每个元素保存一个数据结构RAY类型的变量;在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurSegA,数组CurSegA的每个元素保存一个数据结构SEG类型的变量;在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurInpdA,数组CurInpdA的每个元素保存一个数据结构INPD类型的变量;在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurShdtA,数组CurShdtA的每个元素保存一个数据结构SHDT类型的变量;把个子场景模型分别加载到计算机集群A001的个绘制结点A003的内存中;Step103:在主控结点A002上,使用光线投射技术,根据观察参数,从视点出发投射穿过虚拟像素平面上的各个像素的光线A004,光线A004与虚拟像素平面上的像素一一对应;对于i=1,2,3,⋯,M,j=1,2,3,⋯,N,把数组CURRAYA的第i行、第j列的元素存储的数据结构RAY类型的变量的RS成员变量赋值为虚拟像素平面上的第i行、第j列像素对应的光线A004的起点,把数组CURRAYA的第i行、第j列的元素存储的数据结构RAY类型的变量的RV成员变量赋值为虚拟像素平面上的第i行、第j列像素对应的光线A004的方向,把数组CURRAYA的第i行、第j列的元素存储的数据结构RAY类型的变量的RUT成员变量赋值为1;Step104:如果数组CURRAYA的所有元素存储的数据结构RAY类型的变量的RUT成员变量的值都为0,则转步骤Step113,否则主控结点A002通过网络把数组CURRAYA传送给所有的绘制结点A003;每个绘制结点A003接收到数组CURRAYA后,把数组CURRAYA的值保存在各自的数组CurRayA中;Step105:对每个绘制结点A003,执行如下操作:Step105-1:对绘制结点A003的数组CurRayA中的每个元素B001,计算元素B001在数组CurRayA中所对应的行号irow和列号jcol,并执行如下操作:Step105-1-1:如果元素B001存储的数据结构RAY类型的变量的RUT成员变量的值不等于1,则转子步骤Step105-1-2,否则根据元素B001存储的数据结构RAY类型的变量的RS成员变量和RV成员变量确定一条光线B002,判断光线B002与绘制结点A003的内存中的子场景模型中的几何对象是否相交,如果不相交,则转子步骤Step105-1-2,否则找到离光线B002的起点最近的交点B003,把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量的INUT成员变量赋值为1,把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量的POS成员变量赋值为交点B003所在位置,把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量本文档来自技高网...
大型三维场景的计算机集群分布式路径跟踪绘制方法

【技术保护点】
大型三维场景的计算机集群分布式路径跟踪绘制方法,其特征在于:使用计算机集群A001实现大型三维场景的分布式路径跟踪绘制,计算机集群A001由

【技术特征摘要】
1.大型三维场景的计算机集群分布式路径跟踪绘制方法,其特征在于:使用计算机集群A001实现大型三维场景的分布式路径跟踪绘制,计算机集群A001由台计算机图形工作站通过网络交换机连接在一起构成,其中一台计算机图形工作站被用作主控结点A002,其他计算机图形工作站被用作绘制结点;换句话说,计算机集群A001包括主控结点A002和第1个绘制结点、第2个绘制结点、以此类推一直到第个绘制结点;在建模时,对要绘制的三维场景中的几何对象进行划分,把三维场景模型分成个部分,保证每部分包含的几何对象对应的几何数据能够全部被加载到单台计算机图形工作站的内存中,并能在单台计算机图形工作站上正常执行对该部分几何对象构成的子场景的路径跟踪绘制操作,每部分包含的几何对象对应的几何数据构成子场景模型;提供一种数据结构INPD,用于存储与三维场景点相关的数据,数据结构INPD包括使用标识INUT、场景点位置POS、场景点所在位置的法向量NORM、场景点所在几何面片的材质数据MAT共四个成员变量;提供一种数据结构SHDT,用于存储遮挡测试结果,数据结构SHDT包括遮挡标识TO、使用标识SHUT共两个成员变量;提供一种数据结构RAY,用于表示光线,数据结构RAY包括光线起点RS、光线方向RV、使用标识RUT共三个成员变量;提供一种数据结构SEG,用于表示线段,数据结构SEG包括线段起点GS、线段终点GE、使用标识GUT共三个成员变量;具体实现步骤如下:Step101:在主控结点A002的内存中,创建一个包含M行、N列的二维数组RAD,用于存储通过路径跟踪计算得到的光照亮度值,M表示虚拟像素平面上的像素行数,N表示虚拟像素平面上的像素列数;把数组RAD的每个元素赋值为零;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURRAYA,数组CURRAYA的每个元素保存一个数据结构RAY类型的变量;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURSEGA,数组CURSEGA的每个元素保存一个数据结构SEG类型的变量;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURINPDA,数组CURINPDA的每个元素保存一个数据结构INPD类型的变量;在主控结点A002的内存中,创建一个包含M行、N列的二维数组CURSHDTA,数组CURSHDTA的每个元素保存一个数据结构SHDT类型的变量;Step102:在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurRayA,数组CurRayA的每个元素保存一个数据结构RAY类型的变量;在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurSegA,数组CurSegA的每个元素保存一个数据结构SEG类型的变量;在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurInpdA,数组CurInpdA的每个元素保存一个数据结构INPD类型的变量;在计算机集群A001的每个绘制结点A003的内存中,创建一个包含M行、N列的二维数组CurShdtA,数组CurShdtA的每个元素保存一个数据结构SHDT类型的变量;把个子场景模型分别加载到计算机集群A001的个绘制结点A003的内存中;Step103:在主控结点A002上,使用光线投射技术,根据观察参数,从视点出发投射穿过虚拟像素平面上的各个像素的光线A004,光线A004与虚拟像素平面上的像素一一对应;对于i=1,2,3,⋯,M,j=1,2,3,⋯,N,把数组CURRAYA的第i行、第j列的元素存储的数据结构RAY类型的变量的RS成员变量赋值为虚拟像素平面上的第i行、第j列像素对应的光线A004的起点,把数组CURRAYA的第i行、第j列的元素存储的数据结构RAY类型的变量的RV成员变量赋值为虚拟像素平面上的第i行、第j列像素对应的光线A004的方向,把数组CURRAYA的第i行、第j列的元素存储的数据结构RAY类型的变量的RUT成员变量赋值为1;Step104:如果数组CURRAYA的所有元素存储的数据结构RAY类型的变量的RUT成员变量的值都为0,则转步骤Step113,否则主控结点A002通过网络把数组CURRAYA传送给所有的绘制结点A003;每个绘制结点A003接收到数组CURRAYA后,把数组CURRAYA的值保存在各自的数组CurRayA中;Step105:对每个绘制结点A003,执行如下操作:Step105-1:对绘制结点A003的数组CurRayA中的每个元素B001,计算元素B001在数组CurRayA中所对应的行号irow和列号jcol,并执行如下操作:Step105-1-1:如果元素B001存储的数据结构RAY类型的变量的RUT成员变量的值不等于1,则转子步骤Step105-1-2,否则根据元素B001存储的数据结构RAY类型的变量的RS成员变量和RV成员变量确定一条光线B002,判断光线B002与绘制结点A003的内存中的子场景模型中的几何对象是否相交,如果不相交,则转子步骤Step105-1-2,否则找到离光线B002的起点最近的交点B003,把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量的INUT成员变量赋值为1,把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量的POS成员变量赋值为交点B003所在位置,把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量的NORM成员变量赋值为交点B003所在位置的法向量,把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量的MAT成员变量赋值为交点B003所在几何面片的材质数据;转子步骤Step105-1-3;Step105-1-2:把数组CurInpdA的第irow行、第jcol列的元素存储的数据结构INPD类型的变量的INUT成员变量赋值为0;Step105-1-3:对元素B001的操作结束;Step105-2:通过网络把数组CurInpdA发送给主控结点A002;Step106:主控结点A002接收从所有绘制结点A003发来的数组CurInpdA;主控结点A002把数组CURINPDA的每个元素存储的数据结构INPD类型的变量的INUT成员变量赋值为0;在主控结点A002上,对于n=1,2,3,…,,分别针对从第n个绘制结点A003发来的数组CurInpdA,执行如下操作:Step106-1:对从第n个绘制结点A003发来的数组CurInpdA的每个元素C001,执行如下操作:Step106-1-1:计算元素C001在从第n个绘制结点A003发来的数组CurInpdA中所对应的行号I和列号J;令eCURInpdA表示数组CURINPDA的第I行、第J列的元素;令eCURRayA表示数组CURRAYA的第I行、第J列的元素;Step106-1-2:如果eCURInpdA存储的数据结构INPD类型的变量的INUT成员变量的值为0,则把元素C001存储的数据结构INPD类型的变量的值赋给eCURInpdA存储的数据结构INPD类型的变量,否则判断元素C001存储的数据结构INPD类型的变量的INUT成员变量的值是否等于0,如果不等于0,则计算eCURInpdA存储的数据结构INPD类型的变量的POS成员变量表示的位置到eCURRayA存储的数据结构RAY类型的变量的RS成员变量表示的点的位置的距离D1,计算元素C001存储的数据结构INPD类型的变量的POS成员变量表示的位置到eCURRayA存储的数据结构RAY类型的变量的RS成员变量表示的点的位置的距离D2,进一步判断D1是否大于D2,如果是,则把元素C001存储的数据结构INPD类型的变量的值赋给eCURInpd...

【专利技术属性】
技术研发人员:陈纯毅杨华民蒋振刚
申请(专利权)人:长春理工大学
类型:发明
国别省市:吉林,22

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1