一种基于样本消除的渐进式光子映射优化方法与流程

文档序号:12472206阅读:229来源:国知局
一种基于样本消除的渐进式光子映射优化方法与流程

本发明涉及图形学真实感渲染领域,具体涉及一种基于样本消除的渐进式光子映射优化方法。



背景技术:

光子映射算法是全局光照算法的一种,主要用来实现真实感的渲染效果达到照片级别的渲染图像质量(Photorealistic Rendering)。追求真实的照片级图像质量的渲染是目前影视制动领域的最核心的一种技术,称为真实感渲染。真实感渲染可以使三维影视动漫作品更加的逼真,表现出与现实生活中同样的真实性效果。真实感渲染的主要包括了全局光照算法,特效模拟等关键技术。全局光照算法实现了不只渲染光源对物体的照射效果,还渲染了光能在物体与物体之间的传播效果,包括色溢、焦散、环境遮挡等。

渐进式光子映射算法[Progressive photon mapping]是一种优化的光子映射算法,通过把光子渲染分为多次迭代取得渐进式的渲染效果,并解决光子渲染中的存储和偏差问题。第一步是光线追踪阶段,从摄像机出发,通过屏幕空间向场景中发射光线,追踪光线和场景的交点,记录这些交点和对屏幕空间的贡献参数,这些交点也被称为着色点。然后进行光子渲染的迭代阶段。每一遍光子渲染分为光子发射预处理阶段和光子收集两个阶段。

现有的光子映射算法需要通过大规模的光子发射才能保证渲染精度,在光子跟踪阶段和渲染阶段都需要较大的系统执行时间和存储空间开销,使计算效率较低。而在选择发射一定数量的光子渲染时,光子的收集数目会影响渲染效果。在光子的收集数目的取值较小时,因为光子的随机分布出现噪声,而在光子的收集数目的取值较大时在特征边缘会出现偏差等问题。



技术实现要素:

本发明针对现有的光子映射算法由于光子的随机发射和反弹而出现的噪声问题,提供一种基于样本消除的渐进式光子映射优化方法。本发明能够加速渐进式光子映射,优化渲染效果。

为实现上述目的,本发明采用以下技术方案:

一种基于样本消除的渐进式光子映射优化方法,包括:

步骤一、光线跟踪阶段:追踪光线与场景的交点,记录这些交点和对屏幕空间的贡献参数;其中,这些交点为着色点;

步骤二、光子跟踪阶段:从场景中的光源出发,发射光子并进行正向光子跟踪,且将场 景中的漫反射物体表面的光子存储到光子图中,由光子图构建一棵KD-树;

步骤三、光子消除阶段:计算KD-树中每一个光子的消除权重,根据消除权重来构建最大堆,筛选出消除权重最大的光子,消除当前消除权重最大的光子并更新其邻居的消除权重,更新最大堆,再次筛选消除权重最大的光子且进行消除和更新,直到达到设定消除光子数目;

步骤四、渲染成像阶段:遍历着色点,在光子图中查询着色点的光子搜索半径范围内的光子,利用着色点对屏幕空间的贡献参数来计算着色点的贡献颜色,并将贡献颜色返回给屏幕空间以形成渲染图像;

步骤五、光子渲染迭代:缩小着色点的光子搜索半径范围,重复步骤二至步骤四,直至达到设定的迭代渲染次数,将所有形成的渲染图像累加后求平均,得到最终渲染图像。

所述步骤一光线跟踪阶段过程中,从摄像机出发,通过屏幕空间向场景中发射光线。

所述步骤一光线跟踪阶段过程中,当光线与漫反射表面相交时,保存着色点和对屏幕空间的贡献参数。

所述步骤一光线跟踪阶段过程中,当光线与非漫反射表面相交时,保存着色点和对屏幕空间的贡献参数,并继续追踪光线直至和漫反射表面相交。

所述步骤二中,场景中的各个光源发射一定数量的光子,利用随机算法来确定光子的出射方向,并在场景中追踪光子光线。

所述步骤二中,当光子在碰撞到非漫反射物体表面时,根据物体的属性被反射、折射、散射或吸收,同时保存光子的能量、方向、位置以及表面法向信息至光子图中。

所述步骤二中,当光子碰撞在漫反射表面时光子发生漫反射或吸收,同时保存光子的能量、方向、位置以及表面法向信息至光子图中。

所述步骤三中,KD-树中一个光子的消除权重为当前光子所有邻居的权重之和,其中,当前光子的任一邻居的权重的计算过程为:

步骤(3.1):计算当前光子的任一邻居光子之间的距离与2倍的光子密度的影响参数的比值;

步骤(3.2):利用1减去步骤(3.1)获得的比值,最后计算出当前光子的任一邻居的权重。

当前光子的所有邻居的权重计算公式为:

<mrow> <msub> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <mn>1</mn> <mo>-</mo> <mfrac> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mrow> <mn>2</mn> <msub> <mi>r</mi> <mrow> <mi>max</mi> <mo>,</mo> <mi>i</mi> </mrow> </msub> </mrow> </mfrac> </mrow>

<mrow> <msubsup> <mi>r</mi> <mrow> <mi>max</mi> <mo>,</mo> <mi>i</mi> </mrow> <mo>&prime;</mo> </msubsup> <mo>=</mo> <msqrt> <mfrac> <msub> <mi>A</mi> <mi>i</mi> </msub> <mrow> <mn>2</mn> <msqrt> <mn>3</mn> </msqrt> <msub> <mi>N</mi> <mi>i</mi> </msub> </mrow> </mfrac> </msqrt> </mrow>

其中,wij是当前光子i和j个邻居光子之间的权重,j为大于等于1的整数;dij为当前光子i的第j个邻居光子之间的距离;rmax,i是光子密度的影响参数;Ai是最近邻的搜索半径;Ni为最近邻数目,其为大于等于1的整数。

所述步骤四中,着色点对屏幕空间的贡献参数包括着色点的出射辐照度,着色点的出射辐照度的计算公式为:

<mrow> <msub> <mover> <mi>L</mi> <mo>^</mo> </mover> <mi>r</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mi>R</mi> </mfrac> <msubsup> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>k</mi> </msubsup> <msub> <mi>f</mi> <mi>r</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>w</mi> <mo>,</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mfrac> <msub> <mi>&phi;</mi> <mi>i</mi> </msub> <mrow> <msub> <mi>&pi;r</mi> <mi>t</mi> </msub> </mrow> </mfrac> </mrow>

rt=α*rt-1

其中,表示在着色点位置x处计算的出射辐照度;w为着色点x的入射光线方向;k为搜索半径内的光子数目,k为大于等于1的整数;wi为k个光子中第i个光子的方向;φi是第i个光子能量;fr(x,w,wi)是双向反射分布函数,即表示入射辐照度和出射辐照度之间的比重;R为光子消除比例,即光子消除后剩余的数目除以发射的光子数目;rt为搜索着色点附近光子的半径范围;t是当前的迭代渲染次数,t为大于等于1的整数;α为控制参数,为常数。

本发明的有益效果为:

(1)本发明提出了基于样本消除的渐进式光子映射优化算法,将样本处理方法应用到光子映射方法中,可以是光子分布在保存随机性的同时具有一定的蓝噪声属性,使渲染所得的图片中的噪声减少;由于光子发射过程的随机性,使光子分布中出现很多不均匀的现象,在光子发射和光子渲染两个步骤之间,本发明增加一步光子消除,通过计算光子之间相对距离的权重,消除与其他光子距离最近的光子,并选择一个最优的消除比例,使渐进式光子映射方法中每一次光子计算使用的光子图都具有蓝噪声特性,使每一步使用的光子的分布都更优化,从而加速了渐进式光子映射,优化渲染效果。

(2)本发明的优化光子样本处理方法,根据光子分布的密度来控制光子的消除权重,保证全局光照亮度,同时全局的光子消除使基于样本方法的光子映射算法可以应用到全局光照的所有渲染效果的计算中;本发明采样的基于消除的样本方法,在流程上可以和渐进式的光子映射紧密结合,使基于样本方法的光子映射优化方法扩展到渐进式光子映射方法中;通过优化每一步迭代的光子分布,加快收敛,可达到减少一半迭代次数的效果。

附图说明

图1为本发明的基于样本消除的渐进式光子映射优化方法流程图。

图2(a)为使用渐进式光子映射算法渲染Cornell Box场景64遍的渲染效果图。

图2(b)为使用本发明的渲染Cornell Box场景32遍的渲染效果图。

图2(c)为使用本发明的渲染Cornell Box场景64遍的渲染效果图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

样本消除的方法能够实现生产泊松样本几何,使样本具有更强的蓝噪声属性。样本消除的方法根据样本点之间的距离,为每两个样本点之间计算一个权重,相距越近的样本点之间权重越大,一个样本点的消除权重是他和周围邻居之间的权重的和。方法采用一种贪心策略每次从一些随机生成的样本中消除权重最大的那个样本点。并更新这个样本点周围邻居的消除权重。最后可以得到一个固定数目的有蓝噪声属性的样本点集。样本消除的方法作为一种新的样本处理方法,具有易实施,方法简单,蓝噪声属性好等特点。将光子映射方法中的光子集合看做是样本点集进行样本处理,处理后的光子集合可以一定程度上去除分布中的随机噪声。

对于一个渲染实例流程,即是将一个已经建模好的三维场景计算成图片的过程。在渲染任务开始前,将三维场景数据转化为渲染引擎可以识别的表达方式。一个包含完整信息的场景数据文件包中包含了渲染引擎可以识别的摄像机,几何体,光源,材质,贴图等信息。场景准备完毕后开始渲染。

Cornell Box场景(简称Box场景)是一个简单的渲染全局光照效果的实例。在这一场景中,这个盒子中放置了一个点光源在盒子的顶部位置,盒子的中间放置了两个小盒子。设置渲染变数为64遍,设置消除比例为30%,像素采样率为4。

图1为本发明的基于样本消除的渐进式光子映射优化方法流程图,如图所示,基于样本消除的渐进式光子映射优化方法,开始渲染后,具体步骤如下:

步骤1.光线跟踪阶段;从摄像机出发,通过屏幕空间向场景中发射光线,追踪光线和场景的交点,记录这些交点和对屏幕空间的贡献参数。

步骤1具体如下:

从盒子正前方的摄像机,向场景内发射光线,通过摄像机和屏幕空间的联系确定光线方向,由于一个像素采样4个采样点,通过一个像素发射4条光线,追踪这些光线,场景中的物体都是漫反射表面,在光线和场景的第一个交点保存这个交点,并保存表面的对屏幕空间的贡献参数,这些交点也被称为着色点。

步骤2.光子跟踪阶段;通过从光源发出一定数量的光子并进行正向的光子跟踪来追踪光 子,并且在漫反射物体表面存储光子到光子图中,构建一棵光子的KD-树。

具体如下:

从盒子上方的光源处向场景中发射2万个光子,然后为每个光子产生一个随机的方向,在场景中追踪光子的运动轨迹。将与平面发生碰撞的光子的能量、位置、方向、平面发现信息保存到光子图中,光子在与物体表面发射碰撞时被吸收或者发生漫反射,漫反射后的光子在场景中继续被追踪。最大反弹次数用来结束光子追踪过程,完成光子图的生成。

步骤3.光子消除阶段;计算每一个光子的消除权重,根据消除权重构建最大堆选择消除权重最大的光子,消除这个光子并更新这个光子的邻居的消除权重,更新最大堆,再次选择消除权重最大的光子消除和更新,重复这个过程直到达到设定的光子消除数目。

具体如下:

步骤(3.1):遍历每一个光子,搜素光子周围的最近10个邻居光子,按照公式(1)所示计算每个邻居光子和当前光子的权重,当前光子的消除权重为这些邻居权重的和;

当前光子的所有邻居的权重计算公式为:

<mrow> <msub> <mi>w</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <mn>1</mn> <mo>-</mo> <mfrac> <msub> <mi>d</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mrow> <mn>2</mn> <msub> <mi>r</mi> <mrow> <mi>max</mi> <mo>,</mo> <mi>i</mi> </mrow> </msub> </mrow> </mfrac> </mrow>

其中,wij是当前光子i和j个邻居光子之间的权重,j为大于等于1的整数;dij为当前光子i的第j个邻居光子之间的距离;rmax,i是光子密度的影响参数;Ai是最近邻的搜索半径;Ni为最近邻数目,其为大于等于1的整数。

在本发明中,采用一种低采样树来保存rmax,i,每次根据当前光子的位置选择离他最近的rmax,i;rmax,i的初始值可以根据公式(1)的第二个公式算出,Ai是最近邻的搜索半径,Ni为最近邻数目,第一次迭代中直接使用计算出的r′max,i为r′max,i;在剩余的迭代次数中,根据查询的低采样树中的rmax,i值和当前计算出的r′max,i的值的平均数作为rmax,i,并在计算后更新低采样树中的数据值;

步骤(3.2):根据所有光子的消除权重,建立一个最大堆;

步骤(3.3):选择出消除权重最大的光子;

步骤(3.4):更新步骤(3.4)中选出的消除光子的邻居光子的消除权重,做法是从消除权重中,减去消除光子的这个邻居光子的权重:

步骤(3.5):更新最大堆,重复步骤(3.3),步骤(3.4)和步骤(3.5)直到达到设定的 消除比例30%,即消除了6000个光子。

步骤4.渲染成像阶段;遍历步骤1记录的所有着色点,对每一个着色点查找光子图并找到这个着色点附近的半径为rt范围内的光子来估计光源的照射效果,其中包括了直接光照和间接光照的所有光子,t是当前迭代次数,并且通过控制参数,每次迭代缩小搜索半径来消除偏差。最后根据记录的着色点的贡献参数计算出颜色返回屏幕空间做累加。

具体如下:

步骤(4.1):遍历每一个着色点,在一个着色点处,搜索这个着色点附近的半径为rt范围内的光子;t是当前的迭代渲染次数,t为大于等于1的整数;α为控制参数,为常数,实例运行中取值0.9;

rt=α*rt-1公式(2)

步骤(4.2):根据射辐射度的公式(3)计算出当前着色点的出射辐照度;

其中,表示在着色点位置x处计算的出射辐照度;w为着色点x的入射光线方向;k为搜索半径内的光子数目,k为大于等于1的整数;wi为k个光子中第i个光子的方向;φi是第i个光子能量;fr(x,w,wi)是双向反射分布函数,即表示入射辐照度和出射辐照度之间的比重;R为光子消除比例,即光子消除后剩余的数目除以发射的光子数目。

步骤(4.3):利用着色点对屏幕空间的贡献信息计算出着色点的贡献颜色,将颜色返回给屏幕空间,和前次迭代的图像累加平均,形成图像,显示在渲染结果窗口中。

步骤5.光子渲染迭代,重复步骤2至步骤5,直至达到设定的迭代渲染次数64次,终止渲染。其中图2(c)是使用本方法渲染64遍得到的结果。

图2(a)为使用渐进式光子映射算法渲染Cornell Box场景64遍的渲染效果图;图2(b)为使用本专利的方法渲染Cornell Box场景32遍的渲染效果图。通过比较图2(a)~图2(c)可知:本发明得到的图像更清晰且渲染效果更好。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1