[发明专利]大型三维场景的计算机集群分布式路径跟踪绘制方法有效

专利信息
申请号: 201611114335.1 申请日: 2016-12-07
公开(公告)号: CN106776020B 公开(公告)日: 2020-02-21
发明(设计)人: 陈纯毅;杨华民;蒋振刚 申请(专利权)人: 长春理工大学
主分类号: G06F9/50 分类号: G06F9/50;G06T17/00
代理公司: 吉林长春新纪元专利代理有限责任公司 22100 代理人: 王薇
地址: 130022 *** 国省代码: 吉林;22
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种大型三维场景的计算机集群分布式路径跟踪绘制方法,其特征在于:使用计算机集群A001实现大型三维场景的分布式路径跟踪绘制,计算机集群A001由台计算机图形工作站通过网络交换机连接在一起构成,其中一台计算机图形工作站被用作主控结点A002,其他计算机图形工作站被用作绘制结点;在建模时,对要绘制的三维场景中的几何对象进行划分,把三维场景模型分成个部分,保证每部分包含的几何对象对应的几何数据能够全部被加载到单台计算机图形工作站的内存中。其通过把大型三维场景模型划分成多个部分,并把不同部分加载到计算机集群的不同结点上,利用计算机集群来分布式地对大型三维场景进行绘制。
搜索关键词: 大型 三维 场景 计算机 集群 分布式 路径 跟踪 绘制 方法
【主权项】:
大型三维场景的计算机集群分布式路径跟踪绘制方法,其特征在于:使用计算机集群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类型的变量的值赋给eCURInpdA存储的数据结构INPD类型的变量;Step106‑1‑3:对元素C001的操作结束;Step106‑2:对从第n个绘制结点A003发来的数组CurInpdA的操作结束;Step107:在主控结点A002上,把数组CURSEGA的每个元素存储的数据结构SEG类型的变量的GUT成员变量赋值为0;对数组CURINPDA的每个元素C002,执行如下操作:Step107‑1:计算元素C002在数组CURINPDA中对应的行号I和列号J;令eCURSegA表示数组CURSEGA的第I行、第J列的元素;如果元素C002存储的数据结构INPD类型的变量的INUT成员变量的值为1,则在面光源上随机产生一个采样点Prs,把采样点Prs赋给eCURSegA存储的数据结构SEG类型的变量的GE成员变量,把元素C002存储的数据结构INPD类型的变量的POS成员变量的值赋给eCURSegA存储的数据结构SEG类型的变量的GS成员变量,把eCURSegA存储的数据结构SEG类型的变量的GUT成员变量赋值为1;Step107‑2:对元素C002的操作结束;Step108:主控结点A002通过网络把数组CURSEGA发给所有的绘制结点A003;每个绘制结点A003接收到数组CURSEGA后,把数组CURSEGA的值保存在各自的数组CurSegA中;Step109:对每个绘制结点A003,执行如下操作:Step109‑1:对绘制结点A003的数组CurSegA中的每个元素C003,计算元素C003在数组CurSegA中所对应的行号irow和列号jcol,并执行如下操作:Step109‑1‑1:令eCurShdtA表示数组CurShdtA的第irow行、第jcol列的元素;把eCurShdtA存储的数据结构SHDT类型的变量的SHUT成员变量赋值为0;如果元素C003存储的数据结构SEG类型的变量的GUT成员变量的值为1,则首先把eCurShdtA存储的数据结构SHDT类型的变量的SHUT成员变量赋值为1,然后判断由元素C003存储的数据结构SEG类型的变量的GS成员变量和GE成员变量的值确定的线段是否与绘制结点A003的内存中的子场景模型中的几何对象相交,如果相交,则把eCurShdtA存储的数据结构SHDT类型的变量的TO成员变量赋值为0,否则把eCurShdtA存储的数据结构SHDT类型的变量的TO成员变量赋值为1;Step109‑1‑2:对元素C003的操作结束;Step109‑2:通过网络把数组CurShdtA发送给主控结点A002;Step110:主控结点A002接收从所有绘制结点A003发来的数组CurShdtA;主控结点A002把数组CURSHDTA的每个元素存储的数据结构SHDT类型的变量的SHUT成员变量赋值为0;在主控结点A002上,对于n = 1, 2, 3, …,,分别针对从第n个绘制结点A003发来的数组CurShdtA,执行如下操作:Step110‑1:对从第n个绘制结点A003发来的数组CurShdtA的每个元素C004,执行如下操作:Step110‑1‑1:计算元素C004在从第n个绘制结点A003发来的数组CurShdtA中所对应的行号I和列号J;令eCURShdtA表示数组CURSHDTA的第I行、第J列的元素;Step110‑1‑2:如果eCURShdtA存储的数据结构SHDT类型的变量的SHUT成员变量的值为0,则把元素C004存储的数据结构SHDT类型的变量的值赋给eCURShdtA存储的数据结构SHDT类型的变量,否则判断元素C004存储的数据结构SHDT类型的变量的SHUT成员变量的值是否等于0,如果不等于0,则把eCURShdtA存储的数据结构SHDT类型的变量的TO成员变量的值和元素C004存储的数据结构SHDT类型的变量的TO成员变量的值作“与”运算的结果赋值给eCURShdtA存储的数据结构SHDT类型的变量的TO成员变量;Step110‑1‑3:对元素C004的操作结束;Step110‑2:对从第n个绘制结点A003发来的数组CurShdtA的操作结束;Step111:在主控结点A002上,对数组CURINPDA的每个元素C005,执行如下操作:Step111‑1:计算元素C005在数组CURINPDA中所对应的行号I和列号J;令eCURRAD表示数组RAD的第I行、第J列的元素;令eCURShdtA表示数组CURSHDTA的第I行、第J列的元素;令eCURSegA表示数组CURSEGA的第I行、第J列的元素;令eCURRayA表示数组CURRAYA的第I行、第J列的元素;令ePOS表示元素C005存储的数据结构INPD类型的变量的POS成员变量,令eNORM表示元素C005存储的数据结构INPD类型的变量的NORM成员变量,令eMAT表示元素C005存储的数据结构INPD类型的变量的MAT成员变量,令eINUT表示元素C005存储的数据结构INPD类型的变量的INUT成员变量;令Plis表示eCURSegA存储的数据结构SEG类型的变量的GE成员变量;Step111‑2:如果eINUT的值为0,则把eCURRayA存储的数据结构RAY类型的变量的RUT成员变量赋值为0并转子步骤Step111‑4,否则把Plis的值作为光源采样点位置C006,把ePOS的值作为三维场景点位置Pscn,把eNORM的值作为三维场景点的法向量,把eMAT的值作为三维场景点所在几何面片的材质数据,把eCURShdtA存储的数据结构SHDT类型的变量的TO成员变量的值作为光源采样点位置C006与三维场景点位置Pscn之间的可见性值,按照单机版路径跟踪技术使用的方法计算经三维场景点位置Pscn表示的点散射后沿跟踪的路径反向传到视点的直接光照亮度值DILLU;如果三维场景点位置Pscn表示的点在面光源上,则进一步计算从三维场景点位置Pscn处主动发射的沿跟踪的路径反向传到视点的主动发射光照亮度值EILLU,并把光照亮度值EILLU赋给变量Vei,否则令变量Vei等于0;把光照亮度值DILLU、变量Vei的值以及eCURRAD的值相加的结果赋给eCURRAD,以完成沿跟踪的路径反向传到视点的光照亮度的累加收集;Step111‑3:根据eMAT的值计算三维场景点位置Pscn处的光散射概率ρ,生成一个在0至1之间服从均匀分布的随机数μ,如果μ ≥ ρ,则把eCURRayA存储的数据结构RAY类型的变量的RUT成员变量赋值为0,否则在单位球空间内按均匀分布随机生成一个方向Vu,把eCURRayA存储的数据结构RAY类型的变量的RS成员变量赋值为ePOS,把eCURRayA存储的数据结构RAY类型的变量的RV成员变量赋值为方向Vu,把eCURRayA存储的数据结构RAY类型的变量的RUT成员变量赋值为1;Step111‑4:针对元素C005的操作结束;Step112:转步骤Step104;Step113:所有像素对应的单条路径跟踪操作结束;重复执行NpathT次步骤Step101至步骤Step113的操作,把每次得到的数组RAD的值都保存在主控结点A002上;最后,在主控结点A002上,创建一个包含M行、N列的二维数组aRAD;对数组aRAD的每个元素D001,执行如下操作:计算元素D001在数组aRAD中所对应的行号I和列号J;把执行第1次步骤Step101至步骤Step113的操作得到的数组RAD的第I行、第J列的元素,执行第2次步骤Step101至步骤Step113的操作得到的数组RAD的第I行、第J列的元素,以此类推一直到执行第NpathT次步骤Step101至步骤Step113的操作得到的数组RAD的第I行、第J列的元素之和赋给变量aSUM;把元素D001赋值为变量aSUM除以NpathT得到的结果;在主控结点A002上,把数组aRAD存储的光照亮度值转换成像素颜色值,并显示在计算机屏幕上。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于长春理工大学,未经长春理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201611114335.1/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top