一种重要度驱动的自适应光子密度控制方法

文档序号:2775276阅读:182来源:国知局
专利名称:一种重要度驱动的自适应光子密度控制方法
技术领域
本发明涉及真实感图像渲染中的全局光照解决方案。特别涉及对光子图算法的改进机制——是一种以重要度驱动的自适应光子密度控制方法。
背景技术
光子图算法由Henrik Jensen在1993年提出,它是一种非常优秀的全局光照解决方案,可以解决复杂场景中漫反射、颜色混合和焦散等效果,而且有着很好的灵活性和扩展性。自从该方法被提出以来,已经被大量应用各种商业渲染器中,如,MentalRay,RenderMan和PovRay等,这些商业渲染器将全局光照解决方法用于真实感图像的渲染。
光子图算法是一种两步的全局光照算法,首先由光源发射光子,并跟踪这些光子与场景物体的交互过程;然后使用光线跟踪算法计算象素点的光亮度值。光子图算法将照明解与场景几何解耦,并将该解存储在空间数据结构-光子图中。这种解耦过程为该算法提供了强大的功能,使得它能够分别计算渲染等式中不同的项并将计算结果保存在不同的光子图中。
但是传统的光子图对于稀疏场景的渲染效率并不高,因为稀疏场景使得大量光子并没有与场景中的物体相交,造成了光子的浪费,从而降低了渲染的效率。
内容发明本发明的目的是针对光子图算法在稀疏场景中光子发射效率不佳的缺点进行的改进,使用重要度驱动的自适应策略引导光子发射的过程,提高光子发射的效率。
重要度驱动(Importance-driven)的方法将视点的位置作为衡量场景各部分重要性的依据,它通过跟踪从视点发射的重要子(Importon)获取相关的重要度信息。首先,从视点穿过象素平面向场景中发射一定数量的重要子,如果重要子与物体相交则根据物体表明属性决定该重要子是被反射、折射还是吸收。如果被反射或者折射,还要继续跟踪被反射和折射的重要子,直到超过预设的最大跟踪深度。重要子存储在与光子图类似的重要图(Importance Map)中,使用K维树kd-tree(k-dimensional tree)作为其数据结构。
完成了重要度图的构造,然后根据重要度图为光源构造投射图(Projection Map)。首先,根据光源的特性以较低分辨率将光源的投射面划分成均匀的单元网格,然后使用随机过程的统计试验方法如蒙特卡罗Monte Carlo方法计算每个单元格的重要度,计算的过程如下(1)根据概率密度函数p∝Le,随机选取路径的起始点xo和方向ωo;(2)对于每条路径与物体的交点,使用Russian Roulette(一种类似俄罗斯轮盘赌的随机方法)方法确定是否继续跟踪。如果继续跟踪,根据p∝fr选取反射路径的方向,这里fr为物体的BRDF(双向反射分布函数);否则,根据下式计算重要度Iint=1πr2Σi=1Nimp(x,dr,ωi)]]>这里,r是交点x与重要子的最大距离,N是重要子的数目,d是重要度,w是该重要子的权值(取值范围
)。
完成了初始投射图的构造,然后根据该图中单元格重要度的分布情况决定该投射图的单元格是否需要细分。一个单元格是否被细分取决于它与周围单元格重要度的区分值,如果区分值大于某个预定的阈值则对其进行细分,否则仍然保留其原来的值。计算相邻单元格重要度时,可以采用相邻8单元格策略或者相邻4单元格策略,如下图所示。
当单元格C的重要度与其周围的Ni个单元格的重要度差异大于某个值(比如,0.05或者0.1)的时候,我们选择对其进行细分。
在相邻4单元格策略中,我们需要计算的是单元格C与相邻的四个单元格的重要度的差异,首先计算相邻的四个单元格的重要度均值I‾=14Σi=14Ni]]>通过上面的计算,如果单元格C的重要度与相邻四个单元格的差异大于了预设的阈值VARspec(比如,0.05或者0.1),即
|Ic-I|>VARspec则对这单元格C进行细分,细分后的子单元格重要度总和等于被划分单元格的重要度,如下图所示。
除了上面所讲的细分策略以外,我们还可以采用所谓的“单元块”细分策略,这里“单元块”指的是由几个单元格所组成的一块区域,单元格的数目可以是4或者9。这些单元格将作为细分的单位,即同时对这几个单元格进行细分,见图所示。
与上面所述的单元格细分过程不同,这里我们使用单元块的方差作为细分的依据,即Var(I)=14Σi=14(Ii-I‾)2]]>上式中,I是这四个单元格重要度的平均值。如果方差大于了预设的阈值VARspec则对这个单元块进行细分,即Var(I)>VARspec细分的子单元格数同样可以是4,9或者16。这样的细分过程继续在子单元块上进行,直到超出最大细分层次或者方差小于预设值为止。
单元块中单元格的数目选取策略可以是静态或者动态的,即使用固定的单元格数目或者在不同细分层次上使用不同的单元格数目。较大的数目可能减少细分的次数,造成细分的不准确,但是可以提高计算的速度,采用较小的数值则正相反。
完成了投射图的构造之后,我们根据该投射图引导光源发射光子。引导的过程仍然使用Monte Carlo方法,即使用均匀分布的随机变量生成根据特定概率密度的随机变量,过程如下如果一维概率密度f(x)的定义域为x∈[a,b],那么我们可以通过在
均匀分布的随机变量ξi生成服从f的随机变量ai。首先,我们定义概率分布函数F(x)=∫axf(x′)dμ(x′)]]>然后,定义从ξi到ai的映射函数ai=F-1(ξi)
上式中,F-1是F的反函数。由此,我们得到了服从f的随机变量ai,该随机变量作为光源投射面上的方向向量随机值,因为ai服从f,所以光源发射的光子方向也服从f,从而达到引导光子发射的目的。
最后一个步骤是构造光子图并使用传统的光子图算法渲染图像。在光子的发射过程中,使用上面构造的投射图引导光子的发射。这样,重要度高的方向将获得更多的光子数量,从而有效地提高了光子发射的效率。
发明优点本发明的优点在于能够有效地提高光子发射的效率和光子命中率。光子发射是光子图渲染算法中非常重要的一个步骤,光子的数量和分布情况直接影响到最终图像的渲染效果。本发明的算法可以根据视点位置有效地调整光子分布的密度,从而提高渲染的效率,尤其是提高光子图对于稀疏场景的渲染效率,使大量光子与场景中的物体相交,因此能得到较好的计算速度和效率。


错误!未找到引用源。为本发明计算相邻单元格重要度的策略图,采用相邻8单元格策略(左图)或者相邻4单元格策略(右图);错误!未找到引用源。为本发明计算单元格细分的示意图错误!未找到引用源。为本发明计算单元格细分时单元格的数目可以是4个(左图)或9个(右图)。
具体实施例本实施方案采用的是点光源,其投射图初始网格分辩率为2×4,单元格采样率为64,最大细分层次为2,然后计算每个单元格的重要度,重要度的取值范围为
。细分策略采取的是四单元格细分,阈值VARspec取的是0.05,预定义光子数目为20,000。
测试结果对比如下


权利要求
1.一种重要度驱动的自适应光子密度控制方法,其特征是从视点穿过象素平面向场景中发射重要子,如果重要子与物体相交则根据物体表明属性决定该重要子是被反射、折射还是吸收;如果被反射或者折射,还要继续跟踪被反射和折射的重要子,直到超过预设的最大跟踪深度;重要子存储在与光子图类似的重要图中,使用k维树作为其数据结构;再根据重要度自适应地构造光源特定的投射图;使用投射图引导光源发射光子;最后使用光子图算法渲染图像。
2.如权利要求1所述的重要度驱动的自适应光子密度控制方法,其特征是首先根据重要度图为光源构造投射图;先根据光源的特性以较低分辨率将光源的投射面划分成均匀的单元网格,然后使用随机过程的统计试验方法计算每个单元格的重要度,计算的过程如下(1)根据概率密度函数p∝Le,随机选取路径的起始点x0和方向ω0;(2)对于每条路径与物体的交点,使用俄罗斯轮盘赌的随机方法确定是否继续跟踪,如果继续跟踪,根据p∝fr选取反射路径的方向,这里fr为物体的双向反射分布函数;否则,根据下式计算重要度Iint=1πr2Σi=1Nimp(x,dr,ωi)]]>这里,r是交点x与重要子的最大距离,N是重要子的数目,d是重要度,W是该重要子的权值,取值范围

3.如权利要求2所述的重要度驱动的自适应光子密度控制方法,其特征是一个单元格是否被细分取决于它与周围单元格重要度的区分值,如果区分值大于某个预定的阈值则对其进行细分,否则仍然保留其原来的值;计算相邻单元格重要度时,采用相邻8单元格策略或者相邻4单元格的方法。
4.如权利要求2所述的重要度驱动的自适应光子密度控制方法,其特征是使用单元块的方差作为细分的依据,即Var(I)=14Σi=14(Ii-I‾)2]]>上式中,I是这四个单元格重要度的平均值;如果方差大于了预设的阈值VARspec则对这个单元块进行细分,即Var(I)>VARspec细分的子单元格数可以是4,9或者16;这样的细分过程继续在子单元块上进行,直到超出最大细分层次或者方差小于预设值为止。
5.如权利要求3或4所述的重要度驱动的自适应光子密度控制方法,其特征是单元块中单元格的数目选取策略可以是静态或者动态的,即使用固定的单元格数目或者在不同细分层次上使用不同的单元格数目。
6.如权利要求2或3所述的重要度驱动的自适应光子密度控制方法,其特征是根据该投射图引导光源发射光子;引导的过程仍然使用蒙特卡罗方法,即使用均匀分布的随机变量生成根据特定概率密度的随机变量,过程如下如果一维概率密度f(x)的定义域为x∈[a,b],那么通过在
均匀分布的随机变量ξi生成服从f的随机变量ai;首先定义概率分布函数F(x)=∫axf(x′)dμ(x′)]]>然后,定义从ξi到ai的映射函数ai=F-1(ξi)上式中,F-1是F的反函数;从而得到了服从f的随机变量ai,该随机变量作为光源投射面上的方向向量随机值,因为ai服从f,所以光源发射的光子方向也服从f。
7.如权利要求3或4所述的重要度驱动的自适应光子密度控制方法,其特征是使用根据投射图发射的光子构造光子图;光子与物体相交后,根据表面属性计算其光能量,然后插入到k维树中,反射光子和折射光子也按照同样的过程处理。
8.如权利要求5或6所述的重要度驱动的自适应光子密度控制方法,其特征是使用根据投射图发射的光子构造光子图;光子与物体相交后,根据表面属性计算其光能量,然后插入到k维树中,反射光子和折射光子也按照同样的过程处理。
全文摘要
一种重要度驱动的自适应光子密度控制方法,从视点穿过象素平面向场景中发射重要子,如果重要子与物体相交则根据物体表明属性决定该重要子是被反射、折射还是吸收;如果被反射或者折射,还要继续跟踪被反射和折射的重要子,直到超过预设的最大跟踪深度;重要子存储在与光子图类似的重要图(Importance Map)中,使用kd-tree(k-dimensional tree)作为其数据结构。再根据重要度自适应地构造光源特定的投射图;使用投射图引导光源发射光子;最后使用光子图算法渲染图像。
文档编号G02F1/00GK1584667SQ20041004128
公开日2005年2月23日 申请日期2004年6月15日 优先权日2004年6月15日
发明者潘金贵, 吕波 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1