基于虚拟球形光源的多光源渲染方法

文档序号:6621942阅读:255来源:国知局
基于虚拟球形光源的多光源渲染方法
【专利摘要】本发明公开了一种基于虚拟球形光源的多光源渲染方法,包括如下步骤:步骤1,根据场景建立各个虚拟球形光源;步骤2,利用虚拟球形光源计算采样面上各个点的光照强度;步骤3,建立虚拟球形光源在采样面上的光照强度矩阵,通过矩阵叠加得到采样面上每个点的光照强度,得到最终的渲染结果。本发明利用虚拟球形光源,将点光源的光能量进行分散处理,对光泽表面有良好的支持,避免了场景失真。另外,本发明利用GPU具有的阴影映射即着色器能力,借助GPU提供的计算能力,大大提升了渲染过程的效率。
【专利说明】基于虚拟球形光源的多光源渲染方法

【技术领域】
[0001]本发明涉及计算机图形领域,尤其涉及一种基于虚拟球形光源的多光源渲染方法。

【背景技术】
[0002]在具有多个光泽面的复杂场景中计算全局照明效果是渲染研究领域一个长期未解决的问题。一个通常的解决办法是将全景照明问题转化为多光源照明问题,基于多光源的渲染算法通过生成大量虚拟点光源(VPL)来拟合非直射照明以及这些光源对应的阴影面。在全局照明路径空间模式中,这些方法创建虚拟点光源对应的任意长度的光子路径和可见表面样本的一个对应长度的相机子路径。
[0003]计算相机与光子路径的连接就是多光源法与其他方法不同的地方。最初的多光源技术,立即辐射度,使用可见阴影映射将所有光源和所有表面样本连接。最近有一些改良方法被发表出来。针对动画序列Lainet al提出了增量立即辐射度,在每一帧中只有一部分阴影映射被计算。矩阵行列采样只从大的光表面连接矩阵对一小部分行和列进行采样。光切法对光或表面样本集上进行分层以获得连接计算的可扩展性。Ritschel等人使用近似阴影图来进行渲染加速。
[0004]现有技术的多光源法所采用的光源为点光源,使用点光源在某些场景下会引入失真的问题。导致失真的原因有两个,第一:生成的虚拟点光源只能是漫反射的,所以光泽表面的光反射被忽略了。第二,点光源的光束集中,多个点光源存在的情况下,会造成照度尖峰,导致某些位置的光照强度要显著大于其他地方,为了防止夹角引起的照度尖峰,虚拟点光源的贡献范围需要被限制。这些方法在漫反射场景下提供良好的视觉效果,但在有高光材料的场景下,使用虚拟点光源进行多光源照射法会造成照明效果的缺失。
[0005]因此,现有多光源法所带来的失真问题亟需得到解决。


【发明内容】

[0006]本发明提供了一种基于虚拟球形光源的多光源渲染方法,提高了针对场景中光泽(glossy)材料的渲染效果,提升了场景的整体渲染效果。
[0007]一种基于虚拟球形光源的多光源渲染方法,包括如下步骤:
[0008]步骤I,根据场景建立各个虚拟球形光源;
[0009]步骤2,计算每个虚拟球形光源在采样面上单个点的光照强度;
[0010]步骤3,将每个点在所有虚拟球形光源照射下的光照强度进行叠加,得到最终的渲染结果。
[0011]本发明通过建立球形光源,避免因点光源造成照度尖峰或者为避免照度尖峰而限制虚拟点光源的贡献范围,从而避免了照明效果失真。
[0012]建立虚拟球形光源需要确定球心以及各球体的半径,可选的,步骤I具体包括:
[0013]步骤1-1,采用双向路径追踪法确定各个虚拟球形光源模型的球心位置;
[0014]步骤1-2,根据场景中所设定的光的局部密度确定各个虚拟球形光源模型的半径。
[0015]其中光的局部密度是指在虚拟球形光源分布区域内虚拟球形光源的数量,其由场景本身决定,在建立好场景后,光的局部密度确定。
[0016]步骤1-2具体方法为,对于每个虚拟球形光源,将其球心作为搜索的球心,以预设的搜索步长作为初始搜索半径向周围进行搜索,不断按搜索步长扩展搜索半径,直至球体内包含预设数目的邻近虚拟球形光源球心,将最终所得的搜索半径乘以指定系数作为该虚拟球形光源的半径,其中包含在球体内的邻近虚拟球形光源球心数目根据场景所设定的光的局部密度设定。
[0017]其中搜索步长以及球体内所包含的邻近虚拟球形光源球心数目为预设数目,具体根据计算机的处理能力以及精确度需要确定。系数的指定需要综合考虑渲染效果与计算复杂度因素。
[0018]步骤2中,对于采样面上的点X,其在观察方向V上的光照强度^(Χ,ν)的计算公式为:

Φ| f
[0019](X, V) 二i'r(x, I V) cos(nx, l)fr(y, ij; ω)(||γ -pj|| < r))dl

rrrJ
[0020]其中,Φ]是虚拟球形光源的总能量,Pj为虚拟球形光源的球心位置,rj为虚拟球形光源的半径,I表示任意一个空间点,Ω j表示以点X到虚拟球形光源球心P」的连线为母线,以h为底半径的圆锥;f;为双向反射分布函数,nx是点X所在采样面的法线,Ij表示空间点I处的光线入射方向,ω表不空间点I的光线出射方向,I表不在点X处的光线入射方向,指示函数(I Iy-PjI I < Tj)在I Iy-PjI I <r」时值为I,否则值为O。
[0021]此处空间点表示在场景中的一点。对于虚拟球形光源,其光照模型为圆锥模型。对于单个虚拟球形光源,其光能量均匀分布在其球体范围内,对于单个点来说,受所有包含其在内的球形光源的影响。通过对单个虚拟球形光源在单个点上的光照强度的计算,可以叠加出单个像素的最终光照强度。单个虚拟球形光源对单个点的光照影响可以通过以下方式计算:将该球形光源的光能量均匀分布在一个圆面上,该圆面与点形成一个圆锥,光源通过该圆锥对点进行光照。通过建立圆面上的点对点的光照模型,通过积分可以获得整个圆面(即虚拟球形光源)对该点的光照强度。
[0022]在计算过程中,虚拟球形光源的可见性可以被看作是点与球心之间的可见性问题,即是说,点对球心是可见的(未被遮挡)则该点即被认为对虚拟球形光源是可见的,该方法对虚拟球形光源进行了简化处理,这样就可以利用GPU的阴影映射能力进行计算。为对光线与球面相交处进行修正,将指示函数(I Y-Pj I <rj)被替换成余弦因子
cos(npj,—I)。因此,优选的,步骤2中,对于采样面上的点X,其在观察方向V上的光照强度 (X, V)的计算公式为:
φ:Γ
[0023]Lj (χ, V) = ~^V(x,Pj) I fr(x; I, v) cos(nx, l)fr(pj, ij, -l) cos(np , -1) dl
πΓ] "
[0024]其中,Φ]是虚拟球形光源的总能量,Pj为虚拟球形光源的球心位置,rj为虚拟球形光源的半径,V(x, Pj)表示点X对虚拟球形光源球心的可见性系数,Ω ^表示以点X到虚拟球形光源球心P」的连线为母线,以&为底半径的圆锥;f;为双向反射分布函数,nx是点X所在采样面的法线,L表示空间点I处的光线入射方向,ω表示空间点y的光线出射方向,I表不在点X处的光线入射方向,cosCnPji —I)表不光源的法向量nPj,光线入射方向的反方向的夹角余弦值,当coshpj,-1)值小于或等于O时,规定cos(npj;-l) 二 0。
[0025]在步骤2中,对于采样面上的每个点,并行计算各个虚拟球形光源在该点的光照强度。在进行光照强度计算时,每个虚拟球形光源当作一个GPU着色器,对于每个点,各个虚拟球形光源同时进行GPU计算,从而使计算速度大幅提高。
[0026]步骤3具体方式为,为采样面上所有点建立光照矩阵,利用光线裁剪算法计算出采样面上各个点的光照强度,光照矩阵中每个元素表示一个虚拟球形光源在一个点上的光照强度。
[0027]其中,步骤3中的光照矩阵每一行表示各个虚拟球形光源在采样面的一个点上的光照强度,每一列表不一个虚拟球形光源在米样面上各个点上的光照强度。在建立光照矩阵之后利用 WALTER,B.,FERNANDEZ, S.,ARBREE,A.,BALA,K.,D0NIKIAN,M.,AND GREENBERG,D.P.2005.Lightcuts:ascalable approach to illuminat1n.ACM Transact1ns onGraphics24,3(Aug.),1098 - 1107.所提供的光线裁剪算法求得采样面上各点的光照强度。
[0028]本发明将普通多光照模型中的虚拟点光源转化为虚拟球形光源。每个球形光源影响其球体范围内的点。通过针对每个球形光源和单个点的对应关系,建立照射模型,获得每个球形光源对每个点的贡献值。最后通过叠加每个点上的光照值,可以获得完整场景的渲染效果。
[0029]与现有技术相比,本发明的有益效果为:
[0030](I)本发明将虚拟点光源转化成虚拟球形光源,所有光能量被计算在球形范围内,避免夹钳处理引起的光能量丢失。
[0031](2)本发明的光照模型中,虚拟球形光源对点的影响以圆锥模型存在,即可以完整计算单个光源对单个点的贡献,避免了全部通过漫反射进行处理而引起的光泽材料失真问题。
[0032](3)本发明在可见性计算中使用GPU阴影映射能力,提升了渲染计算效率。
[0033](4)本发明将每个虚拟球形光源当作一个GPU着色器,利用率GPU提供的计算能力,大大提升了渲染处理效率。

【专利附图】

【附图说明】
[0034]图1为本发明的方法流程图。

【具体实施方式】
[0035]现结合实施例及附图对本发明进行进一步的解释。
[0036]步骤I,根据场景建立各个虚拟球形光源。
[0037]使用双向路径追踪法确定各个虚拟球形光源的球心坐标,然后根据场景中所确定的光的局部密度确定虚拟球形光源的规格:对于每个虚拟球形光源,以其球心坐标为搜索球心,预设的搜索步长,本实施例中为I像素,向周围进行搜索,不断按搜索步长扩展搜索半径直至将指定数量的邻近虚拟球形光源的球心包含在球体范围内,本实施例中球体内需要包含8个邻近虚拟球形光源的球心,然后搜索半径乘以指定系数作为该虚拟球形光源的半径,系数的指定需要综合考虑渲染效果与计算复杂度因素。
[0038]步骤2,利用虚拟球形光源计算采样面上各个点的光照强度。
[0039]对于虚拟球形光源,为其建立光照模型。假设球形光源的球心位置为Pp球形光源半径为则虚拟球形光源即是以P」为中心,向以&为半径的球形范围内所有的向平面发射光能量的点,由光源发出的光能量通过最终聚集转移到采样平面上。对于空间点y,虚拟球形光源在方向ω上的辐射强度可以表示为:
[0040]L]plat(y, ω) = -^fr(y, Ij, ω)(||γ -pj|| < η)

nrj
[0041]其中是光源的总能量,Ttrf是球形光源内对空间点y进行照射的点的分布面积,指示函数(I Y-Pj I < rj)在符合条件I |y-pj I < r,-时值为1,不符合条件时值为O。
[0042]对上述辐射方程进行扩展,加入额外的光反弹因素,可以获得采样平面的点X在观察方向V上的光照强度,该步骤可以通过以下公式表示:
[0043]L? (x, v) = f fr(x, I, v) cos(nx, l)LjPlat(y, -l)dl

Jh2
[0044]其中H2是采梓干面所在的上半球,nx是点X所在的采样平面上的法线,cos (nx,I)表示I在nx方向上的分量。
[0045]当cos(nPj, -1)值小于或等于 O 时,规定cos(nPj, -1) = O。
[0046]将前述两个公式进行合并,可以获得完整的公式,表示球形光源在点X上形成的光照强度:

φ.r
[0047]L?(X, V) = ~2 fr(x, Iv) cos(nx, l)fr(y, ij,(0)(||y — Pj|| < rj)dl


Jilj
[0048]将H2替换为Ω j,Ω j表示从X到以球形光源中心所在点Pj,底半径为r」的一个圆锥,光能量圆锥之外的分布为零,当X在球体范围内时Ω j = H2,当X超出球体范围时,指示函数(I Iy-Pjl I < rp 值为 O。
[0049]为解决光线追踪法构建的多光源模型对光能量的遗漏,对以上公式进行修正:
[0050]虚拟球形光源的可见性被定义为采样点X与光子位置P」之间的可见性。这样就可以利用快速GPU阴影映射功能来计算可见性。
[0051]为对光线与球面相交处进行修正,将指示函数(I Iy-Pjl I <rj)被替换成余弦因子cos(np.,-l), V(x, Pj)表示点X对虚拟球形光源的球心Pj的可见性系数,可见时为1,不可见(被遮挡)时为O。
[0052]通过以上修正获得如下公式:
φ,r
[0053](χ, V) = ~jV(x, Pj) fr(x, I, V) cos(nx, l)fr(pj, ij, -1) cos(np , -1) dl
πΓ) \
[0054]在计算光照强度时,每个虚拟球形光源当作一个GPU着色器,各个虚拟球形光源在每个点上的光照强度并行计算。
[0055]步骤3,为步骤I中各个虚拟球形光源模型建立矩阵,利用光线裁剪算法计算出采样面上各个点的光照强度,得到最终的渲染结果。光照矩阵中每个元素表示一个虚拟球形光源在一个点上的光照强度。
[0056]为所有虚拟球形光源建立光照强度矩阵,光照强度矩阵中每一行表示各个虚拟球形光源在米样面的一个点上的光照强度,每一列表不一个虚拟球形光源在米样面上各个点上的光照强度。使用矩阵行列采样法对所有光源在采样面上的光照强度进行计算。
[0057]通过对光照强度矩阵中每行光照强度进行叠加,获得采样面上每个点受多光源照射的光照强度,获得最终的完整场景渲染结果。
[0058]本发明利用虚拟球形光源,将点光源的光能量进行分散处理,对光泽表面有良好的支持,避免了场景失真。
【权利要求】
1.一种基于虚拟球形光源的多光源渲染方法,其特征在于,包括如下步骤: 步骤I,根据场景建立各个虚拟球形光源; 步骤2,计算每个虚拟球形光源在采样面上单个点的光照强度; 步骤3,将每个点在所有虚拟球形光源照射下的光照强度进行叠加,得到最终的渲染结果O
2.如权利要求1所述基于虚拟球形光源的多光源渲染方法,其特征在于,步骤I具体包括: 步骤1-1,采用双向路径追踪法确定各个虚拟球形光源模型的球心位置; 步骤1-2,根据场景中所设定的光的局部密度确定各个虚拟球形光源模型的半径。
3.如权利要求2所述基于虚拟球形光源的多光源渲染方法,其特征在于,步骤1-2具体方法为,对于每个虚拟球形光源,将其球心作为搜索的球心,以预设的搜索步长作为初始搜索半径向周围进行搜索,不断按搜索步长扩展搜索半径,直至球体内包含预设数目的邻近虚拟球形光源球心,将最终所得的搜索半径乘以指定系数作为该虚拟球形光源的半径,其中包含在球体内的邻近虚拟球形光源球心数目根据场景所设定的光的局部密度设定。
4.如权利要求1或2所述基于虚拟球形光源的多光源渲染方法,其特征在于,步骤2中,对于采样面上的点X,其在观察方向V上的光照强度I^(x, V)的计算公式为:
其中,φ]是虚拟球形光源的总能量,Pj为虚拟球形光源的球心位置,rj为虚拟球形光源的半径,y表示任意一个空间点,Ω j表示以点X到虚拟球形光源球心P」的连线为母线,以rj为底半径的圆锥;f;为双向反射分布函数,nx是点X所在采样面的法线,Ij表示空间点y处的光线入射方向,ω表示空间点y的光线出射方向,I表示在点X处的光线入射方向,指示函数(I Iy-PjI I < rj)在I Iy-PjI I < rj时值为1,否则值为O。
5.如权利要求1或2所述基于虚拟球形光源的多光源渲染方法,其特征在于,步骤2中,对于采样面上的点X,其在观察方向V上的光照强度g(X, V)的计算公式为:
其中,Φ]是虚拟球形光源的总能量,Pj为虚拟球形光源的球心位置,rj为虚拟球形光源的半径,V(x, Pj)表示点X对虚拟球形光源球心的可见性系数,Ω ^表示以点X到虚拟球形光源球心P」的连线为母线,以&为底半径的圆锥;f;为双向反射分布函数,nx是点X所在采样面的法线,Ij表示空间点I处的光线入射方向,ω表示空间点y的光线出射方向,I表不在点X处的光线入射方向,cos(np.; 表不光源的法向量,光线入射方向的反方向的夹角余弦值,当cos(nPj,-l)值小于ο时,规定cos(npj,-l) = O。
6.如权利要求1或2所述基于虚拟球形光源的多光源渲染方法,其特征在于,在步骤2中,对于采样面上的每个点,并行计算各个虚拟球形光源在该点的光照强度。
7.如权利要求1或2所述基于虚拟球形光源的多光源渲染方法,其特征在于,步骤3具体方式为,为采样面上所有点建立光照矩阵,利用光线裁剪算法计算出采样面上各个点的光照强度,光照矩阵中每个元素表示一个虚拟球形光源在一个点上的光照强度。
【文档编号】G06T15/60GK104200512SQ201410369791
【公开日】2014年12月10日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】张根源 申请人:浙江传媒学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1