一种计算机三维模型中全局光照的渲染方法

文档序号:6635154阅读:250来源:国知局
一种计算机三维模型中全局光照的渲染方法
【专利摘要】本发明公开了一种计算机三维模型中全局光照的渲染方法,包括了以下步骤:1)读入模型文件,并将其点和三角面信息存储于kd-tree划分的数据结构中。2)通过采样生成若干条从光源出发的光源路径。3)将最终渲染的图像平面分批采样,每次采样一部分点,在这些像素点处生成从视点出发的视点路径,并从2)中选择一条光源路径,采用双向路径跟踪的路径连接方法与之做连接计算得到当前像素的颜色值,重复该步骤直到整个图像上的像素点都被采样到。4)重复之前的2)和3)直到整个渲染结果在可接受的范围内。
【专利说明】一种计算机三维模型中全局光照的渲染方法

【技术领域】
[0001] 本发明涉及到一种计算机三维模型中全局光照的渲染方法,属于计算机图形学等 领域。

【背景技术】
[0002] 近年来,计算机技术飞速发展,而应用于现代娱乐生活的游戏,电影中的图形学也 是高速发展。在电影中,离线渲染技术中的全局光照渲染已经可以制造出以假乱真的效果。 全局光照计算是计算机图形学中一个核心的组成部分,它的任务是使预先组织好的三维场 景生成完全真实感的图像。为了达到这一目的,我们必须模拟光线在场景中进行传播时所 发生的各种物理现象,如相互的反射,焦散,阴影等。这不但需要我们对整个场景中的各个 物体的材质以及几何特性等有一个正确的描述,还需要我们对由于多次反射和折射所带来 的一个无穷维的积分进行求解。由于全局光照的数学模型过于复杂,在巨大的计算量面前, 算法的时间成本很难降下来。为了提高渲染算法效率,降低时间成本,很多全局光照算法被 提出来。
[0003] 在实际应用中,当前传统的方法是使用基于点的全局光照算法或者路径跟踪一类 的算法,基于点的全局光照能够很快速地处理漫反射场景,但是对于镜面,透明面的场景没 有很好的处理方法;另一方面,路径跟踪(包括双向路径跟踪)一系列的方法能很好地处理 镜面,透明面等各种材质,但其算法效率比较低。


【发明内容】

[0004] 发明目的:本发明所要解决的技术问题是针对现有方法效率的不足,提供一种更 为高效的计算机三维模型中全局光照的渲染方法。
[0005] 技术方案:本发明公开了一种计算机三维模型中全局光照的渲染方法,该方法的 特征在于能够在较短的时间内对一个给定的三维场景绘制出具有真实感的图像,并且能够 在最终结果出来之前多次看到其计算的中间结果,以便更好地调节渲染参数。具体包括以 下步骤:
[0006] 1.加载模型:读入三维模型场景的点坐标,三角形序列,点的法向量,点的纹理; 用kd-tree (k-dimensional树的简称,是一种分割k维数据空间的数据结构)对三维模型 场景空间进行划分,并将三角面存放于kd-tree中,同时从与该三维模型场景对应的材质 文件中读入材质属性;
[0007] 步骤1-1,加载模型文件:读入三维模型场景文件,获取点坐标V,点法向量vn,点 纹理vt,三角形f,以及材质对应项(描述对应于材质文件中的材质名称);其中点坐标V和 点法向量vn是一个三维向量,代表点在空间的位置,点纹理vt是一个二维向量,代表该点 的纹理在纹理贴图中的坐标,三角形f是一个三维向量,包含了一个三角面中三个点的信 息;
[0008] 步骤1-2,加载材质文件:加载与步骤1-1中的三维模型场景对应的材质文件,读 取每个面所用材质属性,包括漫反射系数,镜面反射系数,透明度以及纹理路径;
[0009] 步骤1-3,计算包围盒:首先计算出整个模型空间的最大范围,用一个轴对齐的长 方体将整个模型包围起来。这个长方体的计算公式如下:
[0010] Xmax = max {v0x,vlx,…vnx},Xmin = min {v0x,vlx,…vnx},
[0011] Ymax = max {v0y, vly, ··· vny}, Ymin = min {v0y, vly, ··· vny},
[0012] Zmax = max {v0z, vlz,…vnz},Zmin = min {v0z, vlz,…vnj ·
[0013] 其中长方体在x,y,z方向上的坐标为X,Y,Z,而Xniax和Xniin分别代表长方体在x方 向上的最大值和最小值,Yniax和Yniin分别代表长方体在y轴方向上的最大值和最小值,Z niax和 Zmin分别代表长方体在z轴方向上的最大值和最小值。vix,viy,Vi z分别表示点集V中第i 的点的X,y,Z坐标,其中i = 0, 1,......,η, (η是点集V所包含的点的数量)。
[0014] 步骤1-4,建立kd-tree并存储数据:将整个长方体空间利用kd-tree划分,并将 之前读取三维模型场景文件得到的三角形数据保存于kd-tree中。kd-tree在k维空间中 用轴对齐的子平面一次次地划分整个空间,最后得到一个二叉树的数据结构。Kd-tree的划 分基于SAH策略,SAH策略全称Surface Area Heuristic策略,是基于表面积启发的策略, 其核心思想是在划分子空间的时候尽量以最小的子空间表面积包围更多的三角形。假设对 于空间S选取剖分面P,把该空间划分为左右两个子空间&和S k,并且同时把场景中的三角 形面片划分成两个集合队和Νκ,上述的SAH优化函数公式为:

【权利要求】
1. 一种计算机三维模型中全局光照的渲染方法,其特征在于,包括以下步骤: 步骤1,加载模型:读入三维模型场景的点坐标,三角形序列,点的法向量,点的纹理; 用kd-tree对三维模型场景空间进行划分,并将三角面存放于kd-tree中,同时从与该三维 模型场景对应的材质文件中读入材质属性; 步骤2,采样光源:进行采样,得到若干条光源采样路径,使用分层采样的方法使得这 些路径在路径空间中分布均匀; 步骤3,采样视点并计算像素颜色值:对最终渲染结果的图像平面进行划分,每次根据 该划分选出一批像素,以视点到这些像素的方向作为初始方向采样路径,得到一组视点路 径;从步骤2的结果中选择一条光源路径,与所述视点路径相连接,得到完整的从光源到视 点的路径,计算整个路径对像素的颜色贡献值;重复直到对图像平面的采样点覆盖整个图 像平面,得到一次迭代后的渲染结果; 步骤4,使用渐进式的渲染方式,重复步骤2和步骤3直到渲染结果的误差小于一个预 先设定的值为止,生成最终的渲染结果。
2. 如权利要求1所述的一种计算机三维模型中全局光照的渲染方法,其特征在于,步 骤1包括以下步骤: 步骤1-1,加载模型文件:读入三维模型场景文件,获取点坐标v,点法向量vn,点纹理 vt,三角形f,以及材质对应项;其中点坐标V和点法向量vn是一个三维向量,代表点在空 间的位置,点纹理vt是一个二维向量,代表该点的纹理在纹理贴图中的坐标,三角形f?是一 个三维向量,包含了一个三角面中三个点的信息; 步骤1-2,加载与步骤1-1中的三维模型场景对应的材质文件,读取每个面所用材质属 性; 步骤1-3,计算包围盒:首先计算出整个三维模型空间的最大范围,用一个轴对齐的长 方体将整个模型包围起来,这个长方体的计算公式如下: Xmax = max {vOx, vlx, --? vnj , Xmin = min {vOx, vlx, --? vnj , Ymax = max {vOy, vly, --? vny}, Ymin = min {vOy, vly, --? vny}, Zmax = max {vOz, vlz, --? vnj , Zmin = min {vOz, vlz, --? vnj . 其中长方体在x,y,z轴方向上的坐标为X,Y,Z,而Xmax和Xmin分别代表长方体在x轴 方向上的最大值和最小值,Yniax和Yniin分别代表长方体在y轴方向上的最大值和最小值,Z niax和Zmin分别代表长方体在z轴方向上的最大值和最小值;vix,viy,Vi z分别表示点集V中第 i的点的X, y, z轴坐标,其中i = 0, 1,......,n, n是点集V包含的点的数量; 步骤1-4,建立kd-tree并存储数据:将整个长方体空间利用kd-tree划分,并将之前 读取三维模型场景文件得到的三角形保存于kd-tree中,kd-tree在k维空间中用轴对齐 的子平面一次次地划分整个空间,最后得到一个二叉树的数据结构; Kd-tree的划分基于SAH策略,假设对于空间S选取剖分面P,把该空间划分为左右两 个子空间&和Sk,并且同时把三维模型场景中的三角形面片划分成两个集合队和Nk,上述 的SAH优化函数公式为:
其中node是指当前空间节点,SA(S)表示空间S的表面积,Chit表示光线与每个三 角形的求交代价,Cwalk表示光线遍历当前node的代价,在划分每个节点的时候采用使得 SAHrast (node)最小的划分方式,且在满足以下任一条件的时候,终止划分,包括: 1) 当前节点的深度超出一个预先设定的阈值De印,I < Deep〈…,且为整数; 2) 当前节点中的三角形个数少于一个预先设定的阈值TN,0彡TN〈20 ; 最终得到一个包含了所有三维模型三角形的kd-tree数据结构,所述kd-tree只有叶 子节点有三角形数据,非叶子节点的三角形数据为空。
3. 如权利要求2所述的一种计算机三维模型中全局光照的渲染方法,其特征在于,步 骤2包含下列步骤: 步骤2-1,从光源上采样路径的起始点:从光源上随机采样一个点Ptl作为光源路径的 起始点,如果是点光源,那么路径起始点就是光源位置,如果是面光源或者是光源体,那么 路径的起始点是这个面光源或者光源体上的随机采样点; 步骤2-2,从路径起点Ptl随机产生路径:依次采样路径的下一个点,直到光线射出整个 三维模型场景,或者被三维模型场景表面吸收,或者是路径长度到达阈值d ;产生路径的方 式为:光线在场景空间传播,遇镜面发生镜面反射,遇漫反射面随机在表面法线方向上半球 面取下一反射方向,遇透明表面发生折射,这时将产生出一条采样得到的光源路径,计算这 条光源路径的贡献度,计算公式为:
其中4表示光源路径上光源位置的颜色贡献度,表示光源路径上第1个点位置的 颜色贡献度,表示光源路径上第r个点位置的颜色贡献度,PA(ytl)表示光源上采样到% 点的概率,K1Cvq)表示光源在y(!的亮度值,H3 - y^2 - yg)则表示在已得到点yi_2的 情况下,采样到点yg的概率;
其中p。(yrf - yn)表示采样yrf - yn方向的概率,而9表示采样方向与yrf点的 表面法向量的夹角。
4. 如权利要求3所述的一种计算机三维模型中全局光照的渲染方法,其特征在于,步 骤3包含下列步骤: 步骤3-1,划分图像平面,假设图像平面一共有N个像素,每次不重复地取出M个像素 点,M〈N,用以产生视点路径,总共分pV/Ml轮取完,每次取出的M个像素点和之前已经取出 的不重复;步骤3-2,从视点向选中的像素点发射光线,作为初始路径,依次产生出视点路 径,视点路径的贡献度计算公式为:
其中表示视点路径上视点位置的颜色贡献度,表示视点路径上第1个点位置的 颜色贡献度表示视点路径上第r'个点位置的颜色贡献度,Pa(Zci)表示在视点棱镜表 面上采样到Ztl点的概率,^广(%)表示Ztl点在视点棱镜表面的权值; 步骤3-3,路径连接:对每一个选中的像素点都产生一条视点路径后,从步骤2-2中选 择一条光源路径与它们连接,即连接视点路径和光源路径上的最后一个点,从而形成一条 完整的从光源到视点的路径; 依照如下公式求得该完整路径的贡献度: T F Cu^aiCujCij, 其中i是指光源路径的长度,j是指视点路径的长度,af与分别由步骤2-2以及步 骤3-2得到,Cu的计算公式如下: C0, j - Le (Zj-i - Zj_2),。込〇 - ffe (yi-2 Yi-l)) cu ^Myi-I yt-i ^ zj-i)Mzj-I ->->> 〇} Jt中i是栺光源路径的长庠,j是指视点路径的长度,G是形状因子函数,定义为:
,其中cos e。表示视点路径和光源路径上最后一个点相 连接得到的直线L与视点路径上最后一个点所在的三角形表面法向量的余弦值,cos 0 ' 表示该直线L与光源路径上最后一个点所在的三角形表面法向量的余弦值; V是可见性函数,如果点X和X '在场景中可见,那么= 1,反之 V{x ^ x') = 0 ; 步骤3-4,计算加权贡献度:加权贡献度的计算公式为:

步骤3-5,计算整个图像平面的像素颜色值:将步骤3-4中求出的路径加权贡献度作为 当前像素颜色值存放起来,然后重复进行步骤3-1到3-4,直到整个图像平面上的像素的颜 色值都被计算过一次为止,步骤3-3中选取光源路径的时候,之前计算中已经选择过的光 源路径不重复选取,最终生成了一张中间渲染图像。
5.如权利要求3所述的一种计算机三维模型中全局光照的渲染方法,其特征在于,步 骤4包含下列步骤: 步骤4-1,重复步骤2和步骤3,每次计算一整张新的平面颜色值,并与之前的结果相 融合;假设当前是第T轮计算,而前面T-I轮中得到的某像素点Pi的颜色值为fT_i (Pi) =b,第T轮得到的加权路径贡献度为Co,那么第T轮结束后,该点的颜色值被更新为:
步骤4-2,评价渲染结果:当渲染总轮数或时间达到阈值的时候,渲染结束。
【文档编号】G06T15/50GK104361624SQ201410669508
【公开日】2015年2月18日 申请日期:2014年11月20日 优先权日:2014年11月20日
【发明者】蓝自立, 董昭, 郭延文 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1