[发明专利]一种加速被面光源照射的3D虚拟场景的光线跟踪的方法无效
申请号: | 201010527747.4 | 申请日: | 2010-11-02 |
公开(公告)号: | CN101982838A | 公开(公告)日: | 2011-03-02 |
发明(设计)人: | 陈纯毅;杨华民;范静涛;丁莹;冯欣;底晓强;韩成;陈占芳;张育力;曲福恒;权巍;从立钢 | 申请(专利权)人: | 长春理工大学 |
主分类号: | G06T15/50 | 分类号: | G06T15/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 130022 *** | 国省代码: | 吉林;22 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种加速被面光源照射的3D虚拟场景的光线跟踪的方法,属于真实感3D虚拟场景绘制技术领域。当前常用蒙特卡洛光线跟踪方法绘制被面光源照射的3D虚拟场景。由于蒙特卡洛光线跟踪方法需要执行大量的光源采样点可见性计算,因此其计算效率不高。本发明通过一个预计算过程获得面光源照射到的几何面片的深度数据,在光线跟踪过程中利用这些深度数据直接计算每个场景点处的光源采样点可见性,避免了可见性测试光线的创建、遍历、求交测试等运算,提高了光线跟踪效率。相对于蒙特卡洛光线跟踪方法,本发明方法可使光线跟踪的速度提高3~4倍。 | ||
搜索关键词: | 一种 加速 被面 光源 照射 虚拟 场景 光线 跟踪 方法 | ||
【主权项】:
1.一种加速被面光源照射的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)来加速绘制被面光源照射的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),判断元索(C006)的标识变量(301)是否为1,如果为1,则首先将元素(C006)的坐标系变换矩阵变量(303)赋值给变量T(C007),再计算元素(C006)所在的行号i和列号j,然后读取二维采样点阵列(A002)的第i行、j列光源采样点Sij(C008),并计算光源采样点Sij(C008)在世界坐标系下的坐标Wij(C009),最后将光源采样点Sij(C008)的行号i与列号j、交点坐标P(C004)、坐标Wij(C009)和变量T(C007)打包成一个结构体变量(C010)送入GPU计算集群(102)的Global Memory中;统计掩模矩阵M(A003)中标识变量(301)为1的元素个数(C011),将元素个数(C011)赋值给变量Ns;步骤(S034):在GPU计算集群(102)上创建Ns个并行线程,各线程分别从GPU计算集群(102)的Global Memory中读取一个结构体变量(C010),并行地做以下计算:第一,
其中Px、Py、Pz分别为存储于结构体变量(C010)中的交点坐标P(C004)的x、y、z坐标分量,T为存储于结构体变量(C010)中的变量T(C007);第二,
其中d为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时的投影面到虚拟相机视点的距离;第三,
其中θv为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机视场角(A005),N1为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机垂直分辨率,N2为步骤(S017)中调用光栅化图形API在GPU计算集群(102)上绘制3D虚拟场景时设置的虚拟相机水平分辨率;第四,根据结构体变量(C010)中保存的行号i与列号j,读取存储于GPU计算集群(102)的Global Memory中的掩模矩阵M(A003)的第i行、j列元素(C012)的深度图指针变量(302)指向的深度图的第l行、k列像素的深度值(C013);计算存储于结构体变量(C010)中的交点坐标P(C004)与存储于结构体变量(C010)中的坐标Wij(C009)之间的距离D(C014);如果深度值(C013)比距离D(C014)小,则表明存储于结构体变量(C010)中的交点坐标P(C004)处的场景点(C015)不能直接被光源采样点Sij照射,光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016)为0,否则计算光源采样点Sij对场景点(C015)的直接光照贡献Ld(C016);最后将直接光照贡献Ld(C016)传回内存(104);步骤(S035):在CPU(103)上将步骤(S034)中的各线程传回内存(104)的所有直接光照贡献Ld(C016)相加,以得到面光源对交点坐标P(C004)处的场景点的直接光照值;步骤(S036):按照正常的光线跟踪流程递归地跟踪交点坐标P(C004)处的反射光线(或者折射光线),以便计算交点坐标P(C004)处的场景点的间接光照值;在递归过程中,所有场景点处的直接光照值也按上述过程进行计算;最后根据交点坐标P(C004)处的场景点的直接光照值、间接光照值以及材质数据计算出屏幕像素(C001)的颜色。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于长春理工大学,未经长春理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010527747.4/,转载请声明来源钻瓜专利网。