CN107749078B - 超大规模三维场景的直接光照效果绘制方法 - Google Patents
超大规模三维场景的直接光照效果绘制方法 Download PDFInfo
- Publication number
- CN107749078B CN107749078B CN201711175354.XA CN201711175354A CN107749078B CN 107749078 B CN107749078 B CN 107749078B CN 201711175354 A CN201711175354 A CN 201711175354A CN 107749078 B CN107749078 B CN 107749078B
- Authority
- CN
- China
- Prior art keywords
- computer
- array
- geometric object
- variable
- ray
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开一种超大规模三维场景的直接光照效果绘制方法,其特征在于把三维场景的几何对象模型划分成若干分组,保证每个几何对象模型分组的数据能够被一次性地从计算机的磁盘加载到计算机的内存中,然后对各几何对象模型分组进行逐个绘制,最后把所有绘制结果合并在一起,得到三维场景的直接光照效果画面绘制结果。本发明能解决因计算机的内存容量限制造成的不能用光线投射技术绘制超大规模三维场景的直接光照效果画面的问题。
Description
技术领域
本发明涉及一种超大规模三维场景的直接光照效果绘制方法,属于3D场景绘制技术领域。
背景技术
光线投射(Ray Casting)是一种用来绘制三维场景的直接光照效果的技术。使用光线投射技术可以方便地绘制出三维场景中的阴影效果。在Pearson Education公司2014年出版的《Computer Graphics:Principles and Practice,3rd Edition》详细介绍了光线投射技术。在绘制三维场景时,可以用针孔相机模型来表示虚拟相机,虚拟相机的投影中心与视点位置重合;三维场景绘制的关键是计算穿过位于虚拟相机投影中心前面的虚拟像素平面上的像素的光线的亮度。在用光线投射技术绘制三维场景画面时,要求先把三维场景几何对象模型数据加载到计算机内存之中,然后才能求解每个可视场景点在光源照射下的直接光照效果。随着三维图形应用的不断发展,三维场景几何对象模型变得越来越大。对于超大规模三维场景,计算机有可能没有足够的内存容量来一次性地加载全部三维场景几何对象模型数据。尤其是在普通工作站计算机上,超大规模三维场景的几何对象模型数据量非常有可能超过计算机系统能够提供给绘制程序的最大内存容量。通常计算机的磁盘容量比计算机的内存容量大若干个数量级。因此,当计算机的内存不能全部装入三维场景几何对象模型数据时,计算机的磁盘通常可以正常存储全部三维场景几何对象模型数据。如果把三维场景的几何对象模型划分成若干分组(如图1所示),保证每个几何对象模型分组的数据能够被一次性地从计算机的磁盘加载到计算机的内存中,然后对各几何对象模型分组进行逐个绘制,最后把所有绘制结果合并在一起,则可以在计算机的内存不能一次性地装入全部三维场景几何对象模型数据的条件下完成对三维场景的绘制。
发明内容
本发明的目的在于提供一种超大规模三维场景的直接光照效果绘制方法,通过把三维场景的几何对象模型划分成一系列分组,依次逐个把每个分组的模型数据装入计算机的内存并执行绘制操作,来解决因计算机的内存容量限制造成的不能用光线投射技术绘制超大规模三维场景的直接光照效果画面的问题。
本发明的技术方案是这样实现的:一种超大规模三维场景的直接光照效果绘制方法,其特征在于:在创建三维场景模型时把三维场景的几何对象模型划分成Nm个分组,每个几何对象模型分组包含三维场景的一部分几何对象模型,使单个几何对象模型分组的数据能够被一次性地从计算机的磁盘加载到计算机的内存中,按1,2,3,…,Nm的顺序对各个几何对象模型分组进行编号,把各个几何对象模型分组的数据保存在计算机的磁盘中;逐个地把各几何对象模型分组数据装入计算机的内存,并利用光线投射技术绘制几何对象模型分组中的几何对象,把结果保存在计算机的内存中,同时从计算机内存中删除几何对象模型分组数据;通过综合各次绘制得到的结果可以得到最终的三维场景画面绘制结果;具体实现步骤如下:
提供一种数据结构TRAY,用于存储光线相关信息;数据结构TRAY包含光线起点rayBP、光线方向向量rayDir共两个成员变量;
提供一种数据结构SPOINT,用于存储三维场景点相关信息;数据结构SPOINT包含场景点位置sPos、场景点所在位置的表面法向量sNrm、场景点材质参数sMAT共三个成员变量;
1)在创建三维场景模型时,对三维场景的几何对象模型进行分组建模并分别存放在不同的计算机磁盘文件中,具体方法如下:
步骤Step101:在创建三维场景模型时,把需要添加到三维场景中的所有几何对象模型划分成Nm个分组,按1,2,3,…,Nm的顺序对各个几何对象模型分组A001进行编号,使单个几何对象模型分组A001的数据能够被一次性地从计算机的磁盘加载到计算机的内存中;
步骤Step102:对第i个几何对象模型分组A001,i=1,2,3,…,Nm,执行如下操作:
设置第i个几何对象模型分组A001的所有几何对象在三维场景中的模型数据,把第i个几何对象模型分组A001的模型数据保存在第i个计算机磁盘文件A002中,计算机磁盘文件A002存放在计算机的磁盘中;
2)逐个地绘制各个几何对象模型分组A001的几何对象,并通过综合所有绘制结果得到最终的三维场景画面绘制结果,具体方法如下:
步骤Step201:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ArrRay,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ArrRay的每个元素存储一个数据结构TRAY类型的变量;根据虚拟相机参数,从视点发射穿过虚拟像素平面上的每个像素的光线B001,光线B001与虚拟像素平面上的像素一一对应;对于每条光线B001,做如下操作:
计算光线B001对应的虚拟像素平面上的像素在虚拟像素平面上所在的行号iRow,计算光线B001对应的虚拟像素平面上的像素在虚拟像素平面上所在的列号jCol,在计算机的内存中创建一个数据结构TRAY类型的变量B002,把光线B001的起点赋值给变量B002的光线起点rayBP成员变量,把光线B001的方向赋值给变量B002的光线方向向量rayDir成员变量,把变量B002赋值给数组ArrRay的第iRow行、第jCol列的元素;
步骤Step202:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ArrPoint,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ArrPoint的每个元素存储一个列表B003,列表B003的每个元素存储一个数据结构SPOINT类型的变量;令数组ArrPoint的每个元素存储的列表B003为空;
步骤Step203:令编号ID=1;
步骤Step204:如果编号ID大于Nm,则转步骤Step207,否则把第ID个计算机磁盘文件A002的数据加载到计算机的内存中,实现把第ID个几何对象模型分组A001的模型数据存放在计算机的内存中;
步骤Step205:对于数组ArrRay的每个元素B004,执行如下操作:
步骤Step205-1:计算元素B004在数组ArrRay中的行号nRow,计算元素B004在数组ArrRay中的列号mCol;
步骤Step205-2:判断由元素B004的光线起点rayBP成员变量表示的光线起点和元素B004的光线方向向量rayDir成员变量表示的光线方向确定的光线B005是否与第ID个几何对象模型分组A001包含的几何对象相交,如果不相交,转步骤Step205-3,否则计算离光线B005的光线起点最近的交点位置B006并创建一个数据结构SPOINT类型的变量B007,把变量B007的场景点位置sPos成员变量赋值为交点位置B006,把变量B007的场景点所在位置的表面法向量sNrm成员变量赋值为交点位置B006处的表面法向量,把变量B007的场景点材质参数sMAT成员变量赋值为交点位置B006处的几何对象材质参数,进一步判断数组ArrPoint的第nRow行、第mCol列元素存储的列表B003是否为空,如果为空,则把变量B007添加到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003中,否则进一步计算从视点到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量的场景点位置sPos成员变量表示的场景点位置的距离B008,计算从视点到交点位置B006的距离B009,如果距离B009大于距离B008,则转步骤Step205-3,否则清空数组ArrPoint的第nRow行、第mCol列元素存储的列表B003,把变量B007添加到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003中;
步骤Step205-3:对元素B004的操作结束;
步骤Step206:从计算机的内存中删除第ID个几何对象模型分组A001的模型数据;令ID=ID+1;转步骤Step204;
步骤Step207:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ILLUMIN,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ILLUMIN的每个元素用于存储点光源发出的光经场景点散射后进入虚拟相机的光亮度,令数组ILLUMIN的每个元素的值为0;
步骤Step208:对于数组ArrPoint的每个元素B010,执行如下操作:
步骤Step208-1:计算元素B010在数组ArrPoint中的行号nID,计算元素B010在数组ArrPoint中的列号mID;
步骤Step208-2:如果元素B010存储的列表B003为空,则转步骤Step208-3,否则令VSPT代表元素B010存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量,在不考虑几何遮挡的情况下,基于光在几何对象表面上的散射理论,根据VSPT的场景点位置sPos成员变量表示的场景点位置、VSPT的场景点所在位置的表面法向量sNrm成员变量表示的表面法向量、VSPT的场景点材质参数sMAT成员变量表示的场景点材质参数、点光源位置以及视点位置,计算点光源发出的光经VSPT的场景点位置sPos成员变量表示的场景点位置散射后入射到视点处的光亮度B011,把数组ILLUMIN的第nID行、第mID列元素赋值为光亮度B011的值;
步骤Step208-3:对元素B010的操作结束;
步骤Step209:令编号ID=1;
步骤Step210:如果编号ID大于Nm,则转步骤Step213,否则把第ID个计算机磁盘文件A002的数据加载到计算机的内存中,实现把第ID个几何对象模型分组A001的模型数据存放在计算机的内存中;
步骤Step211:对于数组ArrPoint的每个元素B010,执行如下操作:
步骤Step211-1:计算元素B010在数组ArrPoint中的行号nID,计算元素B010在数组ArrPoint中的列号mID;
步骤Step211-2:如果元素B010存储的列表B003为空,则转步骤Step211-3,否则令VSPT代表元素B010存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量,判断从VSPT的场景点位置sPos成员变量表示的场景点位置到点光源位置的线段是否与第ID个几何对象模型分组A001包含的几何对象相交,如果不相交,转步骤Step211-3,否则把数组ILLUMIN的第nID行、第mID列元素赋值为0;
步骤Step211-3:对元素B010的操作结束;
步骤Step212:从计算机的内存中删除第ID个几何对象模型分组A001的模型数据;令ID=ID+1;转步骤Step210;
步骤Step213:把数组ILLUMIN的每个元素存储的光亮度值转换成三维场景画面图像像素颜色值,并把三维场景画面图像显示在显示器上。
本发明的积极效果是可以在计算机的内存不能一次性装入全部三维场景几何对象模型数据的条件下,绘制出三维场景的直接光照效果画面。
附图说明
图1为对三维场景的几何对象模型进行分组建模示意图。
具体实施方式
为了使本方法的特征和优点更加清楚明白,下面结合具体实施例对本方法作进一步的描述。本实施例考虑一个包含人体雕像、汽车模型、房子模型、丘陵地面的三维场景,用一个点光源照射该三维场景,其中人体雕像、汽车模型、房子模型、丘陵地面的模型数据包含众多的三角形面片,该三维场景的模型数据不能一次性全部装入计算机内存中,但人体雕像、汽车模型、房子模型、丘陵地面的模型数据都可以分别单独地被装入计算机内存。因此,把三维场景中的所有几何对象模型划分成4个分组,第一个几何对象模型分组包含人体雕像的所有模型数据,第二个几何对象模型分组包含汽车模型的所有模型数据,第三个几何对象模型分组包含房子模型的所有模型数据,第四个几何对象模型分组包含丘陵地面的所有模型数据。计算机系统的CPU选择Intel(R)Xeon(R)CPU E3-1225v3@3.20GHz,内存选择金士顿8GB DDR3 1333,磁盘选择Buffalo HD-CE 1.5 TU2,显卡选用NVidia QuadroK2000;计算机操作系统选用Windows 7,软件编程工具选用VC++2010。
在创建三维场景模型时把三维场景的几何对象模型划分成Nm个分组,每个几何对象模型分组包含三维场景的一部分几何对象模型,使单个几何对象模型分组的数据能够被一次性地从计算机的磁盘加载到计算机的内存中,按1,2,3,…,Nm的顺序对各个几何对象模型分组进行编号,把各个几何对象模型分组的数据保存在计算机的磁盘中;逐个地把各几何对象模型分组数据装入计算机的内存,并利用光线投射技术绘制几何对象模型分组中的几何对象,把结果保存在计算机的内存中,同时从计算机内存中删除几何对象模型分组数据;通过综合各次绘制得到的结果可以得到最终的三维场景画面绘制结果。具体实现步骤如下:
提供一种数据结构TRAY,用于存储光线相关信息;数据结构TRAY包含光线起点rayBP、光线方向向量rayDir共两个成员变量。
提供一种数据结构SPOINT,用于存储三维场景点相关信息;数据结构SPOINT包含场景点位置sPos、场景点所在位置的表面法向量sNrm、场景点材质参数sMAT共三个成员变量;
1)在创建三维场景模型时,对三维场景的几何对象模型进行分组建模并分别存放在不同的计算机磁盘文件中,具体方法如下:
步骤Step101:在创建三维场景模型时,把需要添加到三维场景中的所有几何对象模型划分成Nm个分组,按1,2,3,…,Nm的顺序对各个几何对象模型分组A001进行编号,使单个几何对象模型分组A001的数据能够被一次性地从计算机的磁盘加载到计算机的内存中;
步骤Step102:对第i个几何对象模型分组A001,i=1,2,3,…,Nm,执行如下操作:
设置第i个几何对象模型分组A001的所有几何对象在三维场景中的模型数据,把第i个几何对象模型分组A001的模型数据保存在第i个计算机磁盘文件A002中,计算机磁盘文件A002存放在计算机的磁盘中。
2)逐个地绘制各个几何对象模型分组A001的几何对象,并通过综合所有绘制结果得到最终的三维场景画面绘制结果,具体方法如下:
步骤Step201:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ArrRay,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ArrRay的每个元素存储一个数据结构TRAY类型的变量;根据虚拟相机参数,从视点发射穿过虚拟像素平面上的每个像素的光线B001,光线B001与虚拟像素平面上的像素一一对应;对于每条光线B001,做如下操作:
计算光线B001对应的虚拟像素平面上的像素在虚拟像素平面上所在的行号iRow,计算光线B001对应的虚拟像素平面上的像素在虚拟像素平面上所在的列号jCol,在计算机的内存中创建一个数据结构TRAY类型的变量B002,把光线B001的起点赋值给变量B002的光线起点rayBP成员变量,把光线B001的方向赋值给变量B002的光线方向向量rayDir成员变量,把变量B002赋值给数组ArrRay的第iRow行、第jCol列的元素;
步骤Step202:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ArrPoint,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ArrPoint的每个元素存储一个列表B003,列表B003的每个元素存储一个数据结构SPOINT类型的变量;令数组ArrPoint的每个元素存储的列表B003为空;
步骤Step203:令编号ID=1;
步骤Step204:如果编号ID大于Nm,则转步骤Step207,否则把第ID个计算机磁盘文件A002的数据加载到计算机的内存中,实现把第ID个几何对象模型分组A001的模型数据存放在计算机的内存中;
步骤Step205:对于数组ArrRay的每个元素B004,执行如下操作:
步骤Step205-1:计算元素B004在数组ArrRay中的行号nRow,计算元素B004在数组ArrRay中的列号mCol;
步骤Step205-2:判断由元素B004的光线起点rayBP成员变量表示的光线起点和元素B004的光线方向向量rayDir成员变量表示的光线方向确定的光线B005是否与第ID个几何对象模型分组A001包含的几何对象相交,如果不相交,转步骤Step205-3,否则计算离光线B005的光线起点最近的交点位置B006并创建一个数据结构SPOINT类型的变量B007,把变量B007的场景点位置sPos成员变量赋值为交点位置B006,把变量B007的场景点所在位置的表面法向量sNrm成员变量赋值为交点位置B006处的表面法向量,把变量B007的场景点材质参数sMAT成员变量赋值为交点位置B006处的几何对象材质参数,进一步判断数组ArrPoint的第nRow行、第mCol列元素存储的列表B003是否为空,如果为空,则把变量B007添加到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003中,否则进一步计算从视点到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量的场景点位置sPos成员变量表示的场景点位置的距离B008,计算从视点到交点位置B006的距离B009,如果距离B009大于距离B008,则转步骤Step205-3,否则清空数组ArrPoint的第nRow行、第mCol列元素存储的列表B003,把变量B007添加到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003中;
步骤Step205-3:对元素B004的操作结束;
步骤Step206:从计算机的内存中删除第ID个几何对象模型分组A001的模型数据;令ID=ID+1;转步骤Step204;
步骤Step207:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ILLUMIN,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ILLUMIN的每个元素用于存储点光源发出的光经场景点散射后进入虚拟相机的光亮度,令数组ILLUMIN的每个元素的值为0;
步骤Step208:对于数组ArrPoint的每个元素B010,执行如下操作:
步骤Step208-1:计算元素B010在数组ArrPoint中的行号nID,计算元素B010在数组ArrPoint中的列号mID;
步骤Step208-2:如果元素B010存储的列表B003为空,则转步骤Step208-3,否则令VSPT代表元素B010存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量,在不考虑几何遮挡的情况下,基于光在几何对象表面上的散射理论,根据VSPT的场景点位置sPos成员变量表示的场景点位置、VSPT的场景点所在位置的表面法向量sNrm成员变量表示的表面法向量、VSPT的场景点材质参数sMAT成员变量表示的场景点材质参数、点光源位置以及视点位置,计算点光源发出的光经VSPT的场景点位置sPos成员变量表示的场景点位置散射后入射到视点处的光亮度B011,把数组ILLUMIN的第nID行、第mID列元素赋值为光亮度B011的值;
步骤Step208-3:对元素B010的操作结束;
步骤Step209:令编号ID=1;
步骤Step210:如果编号ID大于Nm,则转步骤Step213,否则把第ID个计算机磁盘文件A002的数据加载到计算机的内存中,实现把第ID个几何对象模型分组A001的模型数据存放在计算机的内存中;
步骤Step211:对于数组ArrPoint的每个元素B010,执行如下操作:
步骤Step211-1:计算元素B010在数组ArrPoint中的行号nID,计算元素B010在数组ArrPoint中的列号mID;
步骤Step211-2:如果元素B010存储的列表B003为空,则转步骤Step211-3,否则令VSPT代表元素B010存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量,判断从VSPT的场景点位置sPos成员变量表示的场景点位置到点光源位置的线段是否与第ID个几何对象模型分组A001包含的几何对象相交,如果不相交,转步骤Step211-3,否则把数组ILLUMIN的第nID行、第mID列元素赋值为0;
步骤Step211-3:对元素B010的操作结束;
步骤Step212:从计算机的内存中删除第ID个几何对象模型分组A001的模型数据;令ID=ID+1;转步骤Step210;
步骤Step213:把数组ILLUMIN的每个元素存储的光亮度值转换成三维场景画面图像像素颜色值,并把三维场景画面图像显示在显示器上。
在本实施例中,Npixr=1024、Npixc=768、Nm=4。
Claims (1)
1.超大规模三维场景的直接光照效果绘制方法,其特征在于:在创建三维场景模型时把三维场景的几何对象模型划分成Nm个分组,每个几何对象模型分组包含三维场景的一部分几何对象模型,使单个几何对象模型分组的数据能够被一次性地从计算机的磁盘加载到计算机的内存中,按1,2,3,…,Nm的顺序对各个几何对象模型分组进行编号,把各个几何对象模型分组的数据保存在计算机的磁盘中;逐个地把各几何对象模型分组数据装入计算机的内存,并利用光线投射技术绘制几何对象模型分组中的几何对象,把结果保存在计算机的内存中,同时从计算机内存中删除几何对象模型分组数据;通过综合各次绘制得到的结果可以得到最终的三维场景画面绘制结果;具体实现步骤如下:
提供一种数据结构TRAY,用于存储光线相关信息;数据结构TRAY包含光线起点rayBP、光线方向向量rayDir共两个成员变量;
提供一种数据结构SPOINT,用于存储三维场景点相关信息;数据结构SPOINT包含场景点位置sPos、场景点所在位置的表面法向量sNrm、场景点材质参数sMAT共三个成员变量;
1)在创建三维场景模型时,对三维场景的几何对象模型进行分组建模并分别存放在不同的计算机磁盘文件中,具体方法如下:
步骤Step101:在创建三维场景模型时,把需要添加到三维场景中的所有几何对象模型划分成Nm个分组,按1,2,3,…,Nm的顺序对各个几何对象模型分组A001进行编号,使单个几何对象模型分组A001的数据能够被一次性地从计算机的磁盘加载到计算机的内存中;
步骤Step102:对第i个几何对象模型分组A001,i=1,2,3,…,Nm,执行如下操作:
设置第i个几何对象模型分组A001的所有几何对象在三维场景中的模型数据,把第i个几何对象模型分组A001的模型数据保存在第i个计算机磁盘文件A002中,计算机磁盘文件A002存放在计算机的磁盘中;
2)逐个地绘制各个几何对象模型分组A001的几何对象,并通过综合所有绘制结果得到最终的三维场景画面绘制结果,具体方法如下:
步骤Step201:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ArrRay,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ArrRay的每个元素存储一个数据结构TRAY类型的变量;根据虚拟相机参数,从视点发射穿过虚拟像素平面上的每个像素的光线B001,光线B001与虚拟像素平面上的像素一一对应;对于每条光线B001,做如下操作:
计算光线B001对应的虚拟像素平面上的像素在虚拟像素平面上所在的行号iRow,计算光线B001对应的虚拟像素平面上的像素在虚拟像素平面上所在的列号jCol,在计算机的内存中创建一个数据结构TRAY类型的变量B002,把光线B001的起点赋值给变量B002的光线起点rayBP成员变量,把光线B001的方向赋值给变量B002的光线方向向量rayDir成员变量,把变量B002赋值给数组ArrRay的第iRow行、第jCol列的元素;
步骤Step202:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ArrPoint,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ArrPoint的每个元素存储一个列表B003,列表B003的每个元素存储一个数据结构SPOINT类型的变量;令数组ArrPoint的每个元素存储的列表B003为空;
步骤Step203:令编号ID=1;
步骤Step204:如果编号ID大于Nm,则转步骤Step207,否则把第ID个计算机磁盘文件A002的数据加载到计算机的内存中,实现把第ID个几何对象模型分组A001的模型数据存放在计算机的内存中;
步骤Step205:对于数组ArrRay的每个元素B004,执行如下操作:
步骤Step205-1:计算元素B004在数组ArrRay中的行号nRow,计算元素B004在数组ArrRay中的列号mCol;
步骤Step205-2:判断由元素B004的光线起点rayBP成员变量表示的光线起点和元素B004的光线方向向量rayDir成员变量表示的光线方向确定的光线B005是否与第ID个几何对象模型分组A001包含的几何对象相交,如果不相交,转步骤Step205-3,否则计算离光线B005的光线起点最近的交点位置B006并创建一个数据结构SPOINT类型的变量B007,把变量B007的场景点位置sPos成员变量赋值为交点位置B006,把变量B007的场景点所在位置的表面法向量sNrm成员变量赋值为交点位置B006处的表面法向量,把变量B007的场景点材质参数sMAT成员变量赋值为交点位置B006处的几何对象材质参数,进一步判断数组ArrPoint的第nRow行、第mCol列元素存储的列表B003是否为空,如果为空,则把变量B007添加到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003中,否则进一步计算从视点到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量的场景点位置sPos成员变量表示的场景点位置的距离B008,计算从视点到交点位置B006的距离B009,如果距离B009大于距离B008,则转步骤Step205-3,否则清空数组ArrPoint的第nRow行、第mCol列元素存储的列表B003,把变量B007添加到数组ArrPoint的第nRow行、第mCol列元素存储的列表B003中;
步骤Step205-3:对元素B004的操作结束;
步骤Step206:从计算机的内存中删除第ID个几何对象模型分组A001的模型数据;令ID=ID+1;转步骤Step204;
步骤Step207:在计算机的内存中,创建一个包含Npixr行、Npixc列的二维数组ILLUMIN,Npixr表示虚拟相机的虚拟像素平面上的像素行数,Npixc表示虚拟相机的虚拟像素平面上的像素列数,数组ILLUMIN的每个元素用于存储点光源发出的光经场景点散射后进入虚拟相机的光亮度,令数组ILLUMIN的每个元素的值为0;
步骤Step208:对于数组ArrPoint的每个元素B010,执行如下操作:
步骤Step208-1:计算元素B010在数组ArrPoint中的行号nID,计算元素B010在数组ArrPoint中的列号mID;
步骤Step208-2:如果元素B010存储的列表B003为空,则转步骤Step208-3,否则令VSPT代表元素B010存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量,在不考虑几何遮挡的情况下,基于光在几何对象表面上的散射理论,根据VSPT的场景点位置sPos成员变量表示的场景点位置、VSPT的场景点所在位置的表面法向量sNrm成员变量表示的表面法向量、VSPT的场景点材质参数sMAT成员变量表示的场景点材质参数、点光源位置以及视点位置,计算点光源发出的光经VSPT的场景点位置sPos成员变量表示的场景点位置散射后入射到视点处的光亮度B011,把数组ILLUMIN的第nID行、第mID列元素赋值为光亮度B011的值;
步骤Step208-3:对元素B010的操作结束;
步骤Step209:令编号ID=1;
步骤Step210:如果编号ID大于Nm,则转步骤Step213,否则把第ID个计算机磁盘文件A002的数据加载到计算机的内存中,实现把第ID个几何对象模型分组A001的模型数据存放在计算机的内存中;
步骤Step211:对于数组ArrPoint的每个元素B010,执行如下操作:
步骤Step211-1:计算元素B010在数组ArrPoint中的行号nID,计算元素B010在数组ArrPoint中的列号mID;
步骤Step211-2:如果元素B010存储的列表B003为空,则转步骤Step211-3,否则令VSPT代表元素B010存储的列表B003的第一个元素存储的数据结构SPOINT类型的变量,判断从VSPT的场景点位置sPos成员变量表示的场景点位置到点光源位置的线段是否与第ID个几何对象模型分组A001包含的几何对象相交,如果不相交,转步骤Step211-3,否则把数组ILLUMIN的第nID行、第mID列元素赋值为0;
步骤Step211-3:对元素B010的操作结束;
步骤Step212:从计算机的内存中删除第ID个几何对象模型分组A001的模型数据;令ID=ID+1;转步骤Step210;
步骤Step213:把数组ILLUMIN的每个元素存储的光亮度值转换成三维场景画面图像像素颜色值,并把三维场景画面图像显示在显示器上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711175354.XA CN107749078B (zh) | 2017-11-22 | 2017-11-22 | 超大规模三维场景的直接光照效果绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711175354.XA CN107749078B (zh) | 2017-11-22 | 2017-11-22 | 超大规模三维场景的直接光照效果绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107749078A CN107749078A (zh) | 2018-03-02 |
CN107749078B true CN107749078B (zh) | 2020-10-27 |
Family
ID=61251712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711175354.XA Active CN107749078B (zh) | 2017-11-22 | 2017-11-22 | 超大规模三维场景的直接光照效果绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107749078B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6724384B2 (en) * | 2001-05-16 | 2004-04-20 | International Business Machines Corporation | System and method for organization and delivery of data for virtual walkthroughs |
US8249303B2 (en) * | 2009-06-15 | 2012-08-21 | Denso Corporation | Restoration apparatus for weather-degraded image and driver assistance system |
CN104008563A (zh) * | 2014-06-07 | 2014-08-27 | 长春理工大学 | 利用虚拟点光源实现动画三维场景的全局光照绘制的方法 |
CN105389850A (zh) * | 2015-11-03 | 2016-03-09 | 北京大学(天津滨海)新一代信息技术研究院 | 一种大规模三维场景的新型可见性生成方法 |
CN106776020A (zh) * | 2016-12-07 | 2017-05-31 | 长春理工大学 | 大型三维场景的计算机集群分布式路径跟踪绘制方法 |
CN106780704A (zh) * | 2016-12-07 | 2017-05-31 | 长春理工大学 | 基于可见性重用的三维场景直接光照效果近似绘制方法 |
CN107274474A (zh) * | 2017-07-03 | 2017-10-20 | 长春理工大学 | 三维场景立体画面绘制中的间接光照复用方法 |
-
2017
- 2017-11-22 CN CN201711175354.XA patent/CN107749078B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6724384B2 (en) * | 2001-05-16 | 2004-04-20 | International Business Machines Corporation | System and method for organization and delivery of data for virtual walkthroughs |
US8249303B2 (en) * | 2009-06-15 | 2012-08-21 | Denso Corporation | Restoration apparatus for weather-degraded image and driver assistance system |
CN104008563A (zh) * | 2014-06-07 | 2014-08-27 | 长春理工大学 | 利用虚拟点光源实现动画三维场景的全局光照绘制的方法 |
CN105389850A (zh) * | 2015-11-03 | 2016-03-09 | 北京大学(天津滨海)新一代信息技术研究院 | 一种大规模三维场景的新型可见性生成方法 |
CN106776020A (zh) * | 2016-12-07 | 2017-05-31 | 长春理工大学 | 大型三维场景的计算机集群分布式路径跟踪绘制方法 |
CN106780704A (zh) * | 2016-12-07 | 2017-05-31 | 长春理工大学 | 基于可见性重用的三维场景直接光照效果近似绘制方法 |
CN107274474A (zh) * | 2017-07-03 | 2017-10-20 | 长春理工大学 | 三维场景立体画面绘制中的间接光照复用方法 |
Non-Patent Citations (2)
Title |
---|
"Changes in orbital-angular-momentum modes of a propagated vortex Gaussian beam through weak-to-strong atmospheric turbulence";Chen C.etc;《Optics Express》;20160731;全文 * |
"基于手势的交互式三维场景并行光线跟踪绘制研究";蒋聪等;《长春理工大学学报(自然科学版)》;20160430;第39卷(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107749078A (zh) | 2018-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5977979A (en) | Simulated three-dimensional display using bit-mapped information | |
JP3490722B2 (ja) | 正しい隠面関係を決定する方法 | |
US6529207B1 (en) | Identifying silhouette edges of objects to apply anti-aliasing | |
CN107369200B (zh) | 一种3d场景特效处理方法及存储设备 | |
CN105354872A (zh) | 一种基于3d网页游戏的渲染引擎、实现方法及制作工具 | |
US11069130B2 (en) | Generating three-dimensional virtual scene | |
CN105046736A (zh) | 图形处理系统 | |
CN111161387A (zh) | 堆叠场景下合成图像的方法及系统、存储介质、终端设备 | |
CN110838166B (zh) | 特效数据检测方法、装置、设备及存储介质 | |
CN106502662A (zh) | 用于智能操作系统的多区域图形绘制方法及装置 | |
US20170287201A1 (en) | Texture generation system | |
CN106776020B (zh) | 大型三维场景的计算机集群分布式路径跟踪绘制方法 | |
CN1171853A (zh) | 复杂结构计算机生成屏幕显示中控制显示细节级别的方法 | |
JP2014505954A (ja) | 仮想環境における隠蔽の推定方法 | |
EP3306570A1 (en) | Method and apparatus for processing image data | |
CN106780704B (zh) | 基于可见性重用的三维场景直接光照效果近似绘制方法 | |
CN113546410B (zh) | 地形模型渲染方法、装置、电子设备和存储介质 | |
CN107749078B (zh) | 超大规模三维场景的直接光照效果绘制方法 | |
CN113129420B (zh) | 一种基于深度缓冲加速的光线追踪渲染方法 | |
CN107346558B (zh) | 利用面光源可见性空间相关加速三维场景直接光照效果绘制的方法 | |
CN116843816B (zh) | 用于产品展示的三维图形渲染展示方法及装置 | |
CN112802170A (zh) | 光照图像生成方法、装置、设备和介质 | |
CN112200899A (zh) | 一种采用实例化渲染实现模型业务交互的方法 | |
CN107909639B (zh) | 光源可见性复用范围的自适应3d场景绘制方法 | |
CN113126944B (zh) | 深度图的显示方法、显示装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |