一种基于环境光照探针的实时渲染方法及装置与流程

文档序号:13558081阅读:354来源:国知局

本发明涉及一种图像的渲染方法,尤其涉及一种基于环境光照探针的实时渲染方法,属于计算机图像处理技术领域。



背景技术:

环境光照探针(lightprobe)是一种光照渲染技术,其基本原理顾名思义,是指在场景中布置一系列记录从四周各个方向接收到的光照强度的“采样点”(即环境光照探针),收集从四周各个方向接收到的光照强度(光照信息),将光照信息作用到被渲染的模型上。环境光照探针记录了周围环境中的光照信息,在实时渲染时用它记录的光照信息影响被渲染物体的最终光照效果。该技术由于不会像全局实时光照那样太多的耗损性能,从而实现了与静态物体,静态场景的实时融合效果。环境探针生成周围光照强度信息以及作用于被渲染物体的基本原理可以参考gpugems2中的chapter10.real-timecomputationofdynamicirradianceenvironmentmaps(中文译本:gpu精粹2——高性能图形芯片和通用计算编程技巧中的第10章动态辐照度环境映射实时计算)以及该文献后面附带的其他参考文献。

但是,现有环境光照探针实现方法没有考虑探针与被渲染物体间是否有遮挡。例如,有一个红色光源和被渲染物体之间隔了一堵墙,被渲染物体在墙的右侧,红色光源在墙的左侧,在墙左侧有一个探针,这个探针记录的光照数据里包含了红色光源的光照,导致被渲染物体受到了这个红色光源的影响,而在真实世界中,因为墙阻挡了红色光源的光线,红色光源应该无法照射到被渲染物体。

因此,有必要对现有基于现有环境光照探针的实时渲染技术进行改进,充分考虑遮挡的影响,使得基于光照探针的渲染结果更真实可信,并且满足实时渲染的性能要求。



技术实现要素:

本发明所要解决的技术问题在于克服现有技术不足,提供一种基于环境光照探针的实时渲染方法,根据遮挡情况对环境光照探针的光照信息进行修正,从而调整环境光照探针对被渲染物体的光照影响程度,使得最终渲染效果更趋近于真实环境。

本发明具体采用以下技术方案解决上述技术问题:

一种基于环境光照探针的实时渲染方法,利用一组环境光照探针分别获取被渲染物体的与环境光照探针一一对应的一组光照信息,然后对这一组光照信息分别进行遮挡影响修正,最后利用修正后的光照信息进行被渲染物的渲染计算;所述遮挡影响修正具体如下:对于每个环境光照探针,将该环境光照探针与被渲染物体上的多个预设不同位置点分别用直线段连接;根据直线段与其他物体是否相交来为每条直线段进行赋值:与其他物体相交,直线段赋值为0,否则,赋值为1;以该环境光照探针的直线段赋值之和与直线段总数量之比作为该环境光照探针的遮挡影响修正系数,该遮挡影响修正系数与该环境光照探针所获取的光照信息的乘积即为该环境光照探针遮挡影响修正后的光照信息。

进一步地,该方法还包括对遮挡影响修正后的光照信息进行距离影响修正,具体如下:设环境光照探针与被渲染物体间的平均距离为d0,第i个环境光照探针与被渲染物体间的距离为di,则以2d0/(d0+di)作为距离影响修正系数,用距离影响修正系数乘以第i个环境光照探针的遮挡影响修正后的光照信息;或者,设环境光照探针与被渲染物体间的最大距离为dmax,第i个环境光照探针与被渲染物体间的距离为di,则以(dmax-di)/dmax作为距离影响修正系数,用距离影响修正系数乘以第i个环境光照探针的遮挡影响修正后的光照信息。

优选地,所述被渲染物体上的多个预设不同位置点包括位于被渲染物体轮廓线上的多个不同位置点。

优选地,所述位于被渲染物体轮廓线上的多个不同位置点将以被渲染物的中心点为圆心的圆周基本等分。

优选地,所述被渲染物体上的多个预设不同位置点还包括被渲染物的中心点。

优选地,所述被渲染物体上的多个预设不同位置点包括被渲染物被拆分为多个分块后的每个分块的中心点。

优选地,在进行所述渲染计算时,利用以下公式计算被渲染物的光照信息e:

其中,m为环境光照探针的总数;wi为第i个环境光照探针的总的修正系数;e″为第i个环境光照探针的修正后光照信息。

根据相同的发明思路还可以得到以下技术方案:

一种基于环境光照探针的实时渲染装置,该装置包括:

一组环境光照探针,用于分别获取被渲染物体的与环境光照探针一一对应的一组光照信息;

遮挡影响修正模块,用于对环境光照探针所获取的这一组光照信息按照以下方法分别进行遮挡影响修正:对于每个环境光照探针,将该环境光照探针与被渲染物体上的多个预设不同位置点分别用直线段连接;根据直线段与其他物体是否相交来为每条直线段进行赋值:与其他物体相交,直线段赋值为0,否则,赋值为1;以该环境光照探针的直线段赋值之和与直线段总数量之比作为该环境光照探针的遮挡影响修正系数,该遮挡影响修正系数与该环境光照探针所获取的光照信息的乘积即为该环境光照探针遮挡影响修正后的光照信息;

渲染计算模块,用于利用修正后的光照信息进行被渲染物的渲染计算。

进一步地,该装置还包括:

距离影响修正模块,用于对遮挡影响修正后的光照信息按照以下方法进行距离影响修正:设环境光照探针与被渲染物体间的平均距离为d0,第i个环境光照探针与被渲染物体间的距离为di,则以2d0/(d0+di)作为距离影响修正系数,用距离影响修正系数乘以第i个环境光照探针的遮挡影响修正后的光照信息;或者,设环境光照探针与被渲染物体间的最大距离为dmax,第i个环境光照探针与被渲染物体间的距离为di,则以(dmax-di)/dmax作为距离影响修正系数,用距离影响修正系数乘以第i个环境光照探针的遮挡影响修正后的光照信息。

优选地,所述被渲染物体上的多个预设不同位置点包括位于被渲染物体轮廓线上的多个不同位置点。

优选地,所述位于被渲染物体轮廓线上的多个不同位置点将以被渲染物的中心点为圆心的圆周基本等分。

优选地,所述被渲染物体上的多个预设不同位置点还包括被渲染物的中心点。

优选地,所述被渲染物体上的多个预设不同位置点包括被渲染物被拆分为多个分块后的每个分块的中心点。

优选地,所述渲染计算模块利用以下公式计算被渲染物的光照信息e:

其中,m为环境光照探针的总数;wi为第i个环境光照探针的总的修正系数;e″为第i个环境光照探针的修正后光照信息。

相比现有技术,本发明技术方案及其进一步改进技术方案具有以下有益效果:

本发明充分考虑了环境光照探针所获取光照信息对于被渲染物体光照情况的影响程度与环境光照探针与被渲染物体之间遮挡情况的关系,利用简单便捷的算法对环境光照探针与被渲染物体之间遮挡情况进行准确探测,并根据探测结果对环境光照探针所获取的原始光照信息进行修正,从而使得最终渲染效果较大程度地趋近实际情况。

本发明还进一步根据环境光照探针与被渲染物之间的距离情况对光照信息进行距离影响修正,提升距离较近的环境光照探针所获取光照信息对渲染计算结果的影响程度,降低距离较远的环境光照探针所获取光照信息对渲染计算结果的影响程度,从而进一步提升了渲染效果的真实性。

本发明算法简单,易于实现,对系统的软硬件要求很低,几乎不产生额外的资源消耗,可充分满足渲染的实时性要求。

具体实施方式

本发明针对现有基于环境光照探针的实时渲染技术未考虑探针与被渲染物体之间遮挡情况的问题,利用简单便捷的方法对环境光照探针与被渲染物体之间遮挡情况进行准确探测,并根据探测结果对环境光照探针所获取的原始光照信息进行修正,从而使得最终渲染效果最大程度地趋近实际情况。

具体地,本发明利用一组环境光照探针分别获取被渲染物体的与环境光照探针一一对应的一组光照信息,然后对这一组光照信息分别进行遮挡影响修正,最后利用修正后的光照信息进行被渲染物的渲染计算;所述遮挡影响修正具体如下:对于每个环境光照探针,将该环境光照探针与被渲染物体上的多个预设不同位置点分别用直线段连接;根据直线段与其他物体是否相交来为每条直线段进行赋值:与其他物体相交,直线段赋值为0,否则,赋值为1;以该环境光照探针的直线段赋值之和与直线段总数量之比作为该环境光照探针的遮挡影响修正系数,该遮挡影响修正系数与该环境光照探针所获取的光照信息的乘积即为该环境光照探针遮挡影响修正后的光照信息。

所述被渲染物体上的多个预设不同位置点可根据实际情况灵活选取,一方面应尽可能使所有遮挡都能探测到,另一方面所选取的位置点应尽可能少,以免占用过多计算资源。例如,可以从被渲染物体的轮廓线上选取多个不同位置点,这些位置点最好将以被渲染物的中心点为圆心的圆周基本等分,这样,这些位置点基本平均地分布在被渲染物体的轮廓线上。此外,还可以在此基础上进一步加上被渲染物体的中心点。又或者,选取被渲染物被拆分为多个分块后的每个分块的中心点。例如,对于人物,可将其分为躯干、头部以及四肢这六个部分,分别取这六个部分的中心点作为预设位置点。

为了进一步提高渲染效果的真实性,本发明在遮挡影响修正的基础上,还根据环境光照探针与被渲染物之间的距离情况对光照信息进行距离影响修正,以提升距离较近的环境光照探针所获取光照信息对渲染计算结果的影响程度,降低距离较远的环境光照探针所获取光照信息对渲染计算结果的影响程度。具体的距离影响修正方式可以灵活构建,本发明给出两种优选方式如下:

第一种方式,设环境光照探针与被渲染物体间的平均距离为d0,第i个环境光照探针与被渲染物体间的距离为di,则以2d0/(d0+di)作为距离影响修正系数,用距离影响修正系数乘以第i个环境光照探针的遮挡影响修正后的光照信息,就得到距离影响修正后的该环境光照探针的光照信息。

第二种方式:设环境光照探针与被渲染物体间的最大距离为dmax,第i个环境光照探针与被渲染物体间的距离为di,则以(dmax-di)/dmax作为距离影响修正系数,用距离影响修正系数乘以第i个环境光照探针的遮挡影响修正后的光照信息,就得到距离影响修正后的该环境光照探针的光照信息。

为了便于公众理解,下面以一个具体实施例来对本发明的实时渲染方法进行进一步详细说明。

本实施例中的实时渲染装置包括:

一组环境光照探针,用于分别获取被渲染物体的与环境光照探针一一对应的一组光照信息;

遮挡影响修正模块,用于对环境光照探针所获取的这一组光照信息分别进行遮挡影响修正;

距离影响修正模块,用于对遮挡影响修正后的光照信息进行距离影响修正;

渲染计算模块,用于利用修正后的光照信息进行被渲染物的渲染计算。

该装置的实时渲染过程具体包括以下步骤:

步骤s1、环境光照探针获取周边光照信息,当被渲染物体在环境光照探针的影响范围内时,会触发遮挡影响修正模块对被渲染物体和探针之间的遮挡判断;

本实施例中的环境光照探针的设置采用现有技术,为节省篇幅起见,此处不再赘述。步骤s2、对于每个环境光照探针,遮挡影响修正模块将该环境光照探针与被渲染物体上的多个预设不同位置点分别用直线段连接;

假设在被渲染物体上预设了n个不同的位置点,包括被渲染物的中心点以及将以该中心点为圆心的圆周基本等分的被渲染物轮廓线上的n-1个位置点,则共产生n条直线段,分别记作l1,l2,l3,…,ln-1,ln。

步骤s3、遮挡影响修正模块根据直线段与其他物体是否相交来为每条直线段进行赋值;

如果有任意物体和这条直线段相交,则表示环境光照探针和被渲染物体之间在这条直线段的方向上被遮挡,将该直线段赋值为0;反之,如果这条直线段没有和任何物体相交,则表示环境光照探针和被渲染物体在这条直线段方向上没有被遮挡,将其赋值为1。每条直线段只有遮挡和未遮挡两种可能,因此其赋值要么是0要么是1。

步骤s4、遮挡影响修正模块计算出每个环境光照探针的遮挡影响修正系数;

对于这些环境光照探针中的第i个,假设其获取的原始光照信息用向量表示为ei,其n根直线段的赋值之和与n的比值即为该环境光照探针的遮挡影响修正系数,记为bi。可以看出,bi的值域为[0,1],当bi的值为0时,表示该环境光照探针与被渲染物之间完全被遮挡;当bi的值为1时,表示该环境光照探针与被渲染物之间完全无遮挡;当bi的值在0和1之间时,表示该环境光照探针与被渲染物之间存在部分遮挡,bi的值越小,表明遮挡程度越严重。

步骤s5、遮挡影响修正模块计算出每个环境光照探针的遮挡影响修正后的光照信息;

对于第i个环境光照探针,其遮挡影响修正后的光照信息为遮挡影响修正系数与该环境光照探针所获取的原始光照信息的乘积,即e′i=ei×bi。这样就可得到每个环境光照探针的遮挡影响修正后的光照信息。

步骤s6、距离影响修正模块计算出每个环境光照探针的距离影响修正系数并进行距离影响修正;

设环境光照探针与被渲染物体间的平均距离为d0,第i个环境光照探针与被渲染物体间的距离为di,则以2d0/(d0+di)作为距离影响修正系数hi;或者,设环境光照探针与被渲染物体间的最大距离为dmax,第i个环境光照探针与被渲染物体间的距离为di,则以(dmax-di)/dmax作为距离影响修正系数hi。

得到每个环境光照探针的距离影响修正系数后,用距离影响修正系数乘以相应环境光照探针的遮挡影响修正后的光照信息,就得到距离影响修正后的该环境光照探针的光照信息,即第i个环境光照探针经遮挡影响修正和距离影响修正后的光照信息向量。

e″i=e′i×hi=ei×bi×hi

步骤s7、渲染计算模块利用修正后的光照信息进行被渲染物的渲染计算;

利用环境光照探针的光照信息进行被渲染物的渲染计算是现有成熟技术,依据环境光照探针所使用的光照信息保存方式,利用现有标准基于光照纹理或球谐函数的渲染计算方法计算出被渲染物的最终光照结果。也可以利用现有各种改进的光照探针渲染技术,例如中国发明专利申请cn106210741a(公开日:2016/12/7)所公开的《一种基于光探针插值动态计算间接反射高光的渲染方法》。

在进行渲染计算时,可利用以下简单的加权公式计算出被渲染物的光照信息e:

其中,m为环境光照探针的总数;wi为第i个环境光照探针的总的修正系数,在本实施例中,由于同时进行了遮挡影响修正和距离影响修正,因此wi=bi×hi。

上述实施例中是使用遮挡影响修正系数和距离影响修正系数来对光照信息分别进行遮挡影响修正、距离影响修正,只要在原始光照信息上乘以相应的修正系数即可。因此遮挡影响修正系数和距离影响修正系数的计算并无先后次序关系,可以先后进行,也可以并行处理以提高总体的渲染效率。

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