一种加速被面光源照射的3D虚拟场景的光线跟踪的方法技术

技术编号:5203191 阅读:468 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种加速被面光源照射的3D虚拟场景的光线跟踪的方法,属于真实感3D虚拟场景绘制技术领域。当前常用蒙特卡洛光线跟踪方法绘制被面光源照射的3D虚拟场景。由于蒙特卡洛光线跟踪方法需要执行大量的光源采样点可见性计算,因此其计算效率不高。本发明专利技术通过一个预计算过程获得面光源照射到的几何面片的深度数据,在光线跟踪过程中利用这些深度数据直接计算每个场景点处的光源采样点可见性,避免了可见性测试光线的创建、遍历、求交测试等运算,提高了光线跟踪效率。相对于蒙特卡洛光线跟踪方法,本发明专利技术方法可使光线跟踪的速度提高3~4倍。

【技术实现步骤摘要】

本专利技术属于真实感3D虚拟场景绘制
,涉及一种加速被面光源照射的3D 虚拟场景的光线跟踪的方法。
技术介绍
真实感3D虚拟场景绘制技术在数字娱乐、影视特效、建筑CAD、广告动画等领域受 到人们的广泛关注。目前3D虚拟场景绘制技术虽然已经得到深入的研究,但是如何快速绘 制具有高度真实感的3D虚拟场景画面仍然是一个有待进一步解决的难题。传统的光栅化 技术不支持全局光照计算,使用其绘制的3D虚拟场景画面往往缺乏真实感。光线跟踪方法 能够绘制出反射、折射、阴影等效果,是一种全局光照算法。使用光线跟踪绘制得到的3D虚 拟场景画面比使用光栅化技术绘制得到的3D虚拟场景画面的真实感更强。因此光线跟踪 方法在真实感3D虚拟场景绘制中得到了广泛应用。当要求高度的真实感时,3D虚拟场景通常使用面光源而非理想的点光源进行照 射。通常使用蒙特卡洛光线跟踪方法绘制被面光源照射的3D虚拟场景。蒙特卡洛光线跟踪 方法通过对面光源进行重要性采样实现全局光照计算。对每个需要计算光照值的场景点, 该方法都需要计算大量的光源采样点的可见性,即判断场景点与光源采样点之间是否存在 遮挡。在计算每个光源采样点的可见性时,需要产生一条从场景点出发,射向该光源采样点 的可见性测试光线,并用此可见性测试光线遍历场景加速结构,以便确定是否有几何图元 与此可见性测试光线相交,进而判断场景点与光源采样点之间是否存在遮挡。由于光线跟 踪需要跟踪大量光线的多次反射(或折射)过程,并且需要计算每个反射(或折射)点的 光照值,因此上述光源采样点的可见性计算量非常大。这使得蒙特卡洛光线跟踪的计算效 率并不高,导致绘制一幅3D虚拟场景画面的时间很长。所以人们迫切需要一种能够加速被 面光源照射的3D虚拟场景的光线跟踪的方法。
技术实现思路
本专利技术的目的在于提供一种加速被面光源照射的3D虚拟场景的光线跟踪的方 法。本方法在光线跟踪之前通过一个预计算过程获得面光源照射到的几何面片的深度数 据,在光线跟踪过程中利用这些深度数据直接计算每个场景点处的光源采样点可见性,避 免了可见性测试光线的创建、遍历、求交测试等运算,提高了光线跟踪效率。本专利技术的方法 所需的设备及其实现步骤如下1.所需设备主机系统(101)和GPU计算集群(102);如图1所示,主机系统(101) 包括CPU (103)、内存(104)和磁盘(105)。2.实现步骤本方法(010)部分,得到面光源照射到的几何面片的深度数据,具体步骤如下步骤(SOll)将3D虚拟场景模型数据(A001)从磁盘(105)加载到内存(104)中;步骤(S012)在CPU(103)上计算面光源轮廓线(201)的外切矩形(202);步骤(S013)如图2所示,在外切矩形(202)内均勻地选取m行、η列光源采样点, 得到一个二维采样点阵列(Α002),将其存放在内存(104)中;步骤(S014)在内存(104)中创建一个m行、η列的掩模矩阵Μ(Α003),掩模矩阵 Μ(Α003)中的各个元素与二维采样点阵列(Α002)中的各个光源采样点一一对应;掩模矩阵 Μ(Α003)的每个元素的数据结构如图3所示,其包含一个标识变量(301)(变量名为tag)、 一个深度图指针变量(302)(变量名为cbpthMapPtr)和一个坐标系变换矩阵变量(303) (变量名为transformMatrix);将掩模矩阵M(A003)的每个元素包含的标识变量(301)设 置为0;步骤(S015)任意选取一个与面光源平面平行的向量作为U方向向量(A004);步骤(S016)把3D虚拟场景模型数据(A001)送入GPU计算集群(102)的Global Memory 中;步骤(S017)对二维采样点阵列(A002)中的每个光源采样点Su(下标i为光源 采样点Su在二维采样点阵列(A002)中的行号,下标j为光源采样点Su在二维采样点阵列 (A002)中的列号),判断光源采样ASu是否在面光源轮廓线(201)之内,如果光源采样点 Sij在面光源轮廓线(201)之内,则①将掩模矩阵M(A003)的第i行、j列的元素的标识变量(301)设置为1 ;②以光源采样点Su为虚拟相机视点,以面光源平面法向量为虚拟相机视轴正方 向(面光源平面法向量与面光源的朝向相同),以U方向向量(A004)为虚拟相机向上方向 向量,根据3D虚拟场景与面光源的位置关系设置合适的虚拟相机视场角(A005),根据3D 虚拟场景的复杂程度设置合适的虚拟相机分辨率(A006),读取存储于GPU计算集群(102) 的GlobalMemory中的3D虚拟场景模型数据(A001),调用光栅化图形API在GPU计算集群 (102)上绘制3D虚拟场景,记录每个像素的深度值,从而得到以光源采样点Sij为虚拟相机 视点的深度图(A007);③把深度图(A007)传回内存(104),并将深度图(A007)的内存首地址赋值给掩模 矩阵M(A003)的第i行、j列的元素的深度图指针变量(302)。本方法的(020)部分,根据二维采样点阵列(A002)中的每个光源采样点的位置 及面光源平面法向量,计算从世界坐标系到以各光源采样点为原点的光源采样点坐标系 (B001)的变换矩阵,具体步骤如下步骤(S021):选取面光源平面法向量作为N方向向量(B002),定义V方向向量 (B003)为N方向向量(B002)与U方向向量(A004)的叉乘;步骤(S022)将U方向向量(A004)、N方向向量(B002)和V方向向量(B003)进 行归一化,得到归一化的U方向向量(B004)、归一化的N方向向量(B005)和归一化的V方 向向量(B006);步骤(S023)对于掩模矩阵M(A003)中的每个元素(B007),判断元素(B007)的标 识变量(301)是否为1,如果为1,则先计算元素(B007)所在的行号i和列号j,再计算二维 采样点阵列(A002)中第i行、j列光源采样点Sij在世界坐标系下的坐标Wij(BOOS),然后 按如下公式计算变换矩阵Tij T,,=其中Ux、Uy、Uz分别为归一化的U方向向量(B004)的三个分量,Vx、\、Vz分别为归一化的N万向向量(B005)的三个分量,Nx, Ny, Nz分 别为归一化的V方向向量(B006)的三个分量,最后将Tij赋值给元素(B007)的坐标系变换 矩阵变量(303)。本方法的(030)部分,在光线跟踪中利用本方法(010)部分计算出的深度图 (A007)来加速绘制被面光源照射的3D虚拟场景,具体步骤如下步骤(S031)将掩模矩阵M(A003)及其各元素的深度图指针变量(302)指向的所 有深度图(A007)送入GPU计算集群(102)的Global Memory中;步骤(S032)按照正常的光线跟踪流程,从虚拟相机视点发射穿过屏幕像素 (C001)的光线(C002),并判断光线(C002)与3D虚拟场景的几何面片(C003)是否相交,如 果相交,则计算出交点坐标P(C004),并转步骤(S033),否则屏幕像素(C001)的颜色设置为 背景色(C005),并结束对光线(C002)的跟踪;步骤(S033)对掩模矩阵M(A003)中的每个元素(C006),判断元素本文档来自技高网
...

【技术保护点】
一种加速被面光源照射的3D虚拟场景的光线跟踪的方法,其特征在于,所需的设备及实现步骤如下:所需设备:主机系统(101)和GPU计算集群(102);主机系统(101)包括CPU(103)、内存(104)和磁盘(105);实现步骤:本方法(010)部分,得到面光源照射到的几何面片的深度数据,具体步骤如下:步骤(S011):将3D虚拟场景模型数据(A001)从磁盘(105)加载到内存(104)中;步骤(S012):在CPU(103)上计算面光源轮廓线(201)的外切矩形(202);步骤(S013):在外切矩形(202)内均匀地选取m行、n列光源采样点,得到一个二维采样点阵列(A002),将其存放在内存(104)中;步骤(S014):在内存(104)中创建一个m行、n列的掩模矩阵M(A003),掩模矩阵M(A003)中的各个元素与二维采样点阵列(A002)中的各个光源采样点一一对应;掩模矩阵M(A003)的每个元素包含一个标识变量(301)(变量名为tag)、一个深度图指针变量(302)(变量名为depthMapPtr)和一个坐标系变换矩阵变量(303)(变量名为transformMatrix);将掩模矩阵M(A003)的每个元素包含的标识变量(301)设置为0;步骤(S015):任意选取一个与面光源平面平行的向量作为U方向向量(A004);步骤(S016):把3D虚拟场景模型数据(A001)送入GPU计算集群(102)的Global Memory中;步骤(S017):对二维采样点阵列(A002)中的每个光源采样点S↓[ij](下标i为光源采样点S↓[ij]在二维采样点阵列(A002)中的行号,下标j为光源采样点S↓[ij]在二维采样点阵列(A002)中的列号),判断光源采样点S↓[ij]是否在面光源轮廓线(201)之内,如果光源采样点S↓[ij]在面光源轮廓线(201)之内,则:第一,将掩模矩阵M(A003)的第i行、j列的元素的标识变量(301)设置为1;第二,以光源采样点S↓[ij]为虚拟相机视点,以面光源平面法向量为虚拟相机视轴正方向(面光源平面法向量与面光源的朝向相同),以U方向向量(A004)为虚拟相机向上方向向量,根据3D虚拟场景与面光源的位置关系设置合适的虚拟相机视场角(A005),根据3D虚拟场景的复杂程度设置合适的虚拟相机分辨率(A006),读取存储于GPU计算集群(102)的Global Memo...

【技术特征摘要】
一种加速被面光源照射的3D虚拟场景的光线跟踪的方法,其特征在于,所需的设备及实现步骤如下所需设备主机系统(101)和GPU计算集群(102);主机系统(101)包括CPU(103)、内存(104)和磁盘(105);实现步骤本方法(010)部分,得到面光源照射到的几何面片的深度数据,具体步骤如下步骤(S011)将3D虚拟场景模型数据(A001)从磁盘(105)加载到内存(104)中;步骤(S012)在CPU(103)上计算面光源轮廓线(201)的外切矩形(202);步骤(S013)在外切矩形(202)内均匀地选取m行、n列光源采样点,得到一个二维采样点阵列(A002),将其存放在内存(104)中;步骤(S014)在内存(104)中创建一个m行、n列的掩模矩阵M(A003),掩模矩阵M(A003)中的各个元素与二维采样点阵列(A002)中的各个光源采样点一一对应;掩模矩阵M(A003)的每个元素包含一个标识变量(301)(变量名为tag)、一个深度图指针变量(302)(变量名为depthMapPtr)和一个坐标系变换矩阵变量(303)(变量名为transformMatrix);将掩模矩阵M(A003)的每个元素包含的标识变量(301)设置为0;步骤(S015)任意选取一个与面光源平面平行的向量作为U方向向量(A004);步骤(S016)把3D虚拟场景模型数据(A001)送入GPU计算集群(102)的Global Memory中;步骤(S017)对二维采样点阵列(A002)中的每个光源采样点Sij(下标i为光源采样点Sij在二维采样点阵列(A002)中的行号,下标j为光源采样点Sij在二维采样点阵列(A002)中的列号),判断光源采样点Sij是否在面光源轮廓线(201)之内,如果光源采样点Sij在面光源轮廓线(201)之内,则第一,将掩模矩阵M(A003)的第i行、j列的元素的标识变量(301)设置为1;第二,以光源采样点Sij为虚拟相机视点,以面光源平面法向量为虚拟相机视轴正方向(面光源平面法向量与面光源的朝向相同),以U方向向量(A004)为虚拟相机向上方向向量,根据3D虚拟场景与面光源的位置关系设置合适的虚拟相机视场角(A005),根据3D虚拟场景的复杂程度设置合适的虚拟相机分辨率(A006),读取存储于GPU计算集群(102)的Global Memory中的3D虚拟场景模型数据(A001),调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景,记录每个像素的深度值,从而得到以光源采样点Sij为虚拟相机视点的深度图(A007);第三,把深度图(A007)传回内存(104),并将深度图(A007)的内存首地址赋值给掩模矩阵M(A003)的第i行、j列的元素的深度图指针变量(302);本方法的(020)部分,根据二维采样点阵列(A002)中的每个光源采样点的位置及面光源平面法向量,计算从世界坐标系到以各光源采样点为原点的光源采样点坐标系(B001)的变换矩阵,具体步骤如下步骤(S021)选取面光源平面法向量作为N方向向量(B002),定义V方向向量(B003)为N方向向量(B002)与U方向向量(A004)的叉乘;步骤(S022)将U方向向量(A004)、N方向向量(B002)和V方向向量(B003)进行归一化,得到归一化的U方向向量(B004)、归一化的N方向向量(B005)和归一化的V方向向量(B006);步骤(S023)对于掩模矩阵M(A003)中的每个元素(B007),判断元素(B007)的标识变量(301)是否为1,如果为1,则先计算元素(B007)所在的行号i和列号j,再计算二维采样点阵列(A002)中第i行、j列光源采样点Sij在世界坐标系下的坐标Wij(B008),然后按如下公式计算变换矩阵Tij其中Ux、Uy、Uz分别为归一化的U方向向量(B004)的三个分量,Vx、Vy、Vz分别为归一化的N方向向量(B005)的三个分量,Nx、Ny、Nz分别为归一化的V方向向量(B006)的三个分量,最后将Tij赋值给元素(B007)的坐标系变换矩阵变量(303);本方法的(030)部分,在光线跟踪中利用本方法(010)部分计算出的深度图(A007)来加速绘制被面...

【专利技术属性】
技术研发人员:陈纯毅杨华民范静涛丁莹冯欣底晓强韩成陈占芳张育力曲福恒权巍从立钢
申请(专利权)人:长春理工大学
类型:发明
国别省市:82[]

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

1