实现光贴图动态光照的方法、存储介质及计算设备与流程

文档序号:15400674发布日期:2018-09-11 17:25阅读:311来源:国知局

本发明涉及图像处理技术领域,特别是涉及一种实现光贴图动态光照的方法、存储介质及计算设备。



背景技术:

光贴图通常用于完全的静态光照,即光源位置、颜色、亮度固定,光照的结果也不随视点位置变化的漫反射结果,并且无法描述随视点变化的高光反射。由于磁盘和显存的容量限制,光贴图的分辨率通常较低,无法表现出高精度的法线贴图效果。

要实现光源颜色亮度的动态调节及高光反射,通常会对需要动态变化的光源设置一张独立的掩码图以标出受到该光源影响的区域(图中黑色区域相当于阴影)。另一种实现高精度的法线贴图效果的方法为,烘光贴图时将光照强度在切线空间分到三个正交的向量,实时渲染时用法线贴图中的法线与三个轴点乘求得各个轴上数据的权重,求和后得到光照结果。

上述方法均需要采用两张以上的贴图并且还需要专门的光贴图烘焙程序重新烘焙光贴图,制作过程十分繁琐,并且易于出错。



技术实现要素:

为了解决现有技术存在的不足,本发明的目的在于提供一种实现光贴图动态光照的方法、存储介质及计算设备,能够在单张光贴图上实现动态光照。

为实现上述目的,本发明提供的实现光贴图动态光照的方法,包括以下步骤:

剥离掉光贴图的主光源,分离出其它光源的光照结果;

分离出光贴图的环境漫反射;

重新计算主光源的光照结果;

将主光源的光照结果与其它光源的光照结果和环境漫反射相加;

所述主光源,为光贴图里已经烘焙且需要动态光照的光源。

所述剥离掉光贴图的主光源的步骤,进一步包括以下步骤:

剥离掉光贴图的环境漫反射,得到无环境漫反射的光照结果;

计算出无阴影的漫反射结果;

分离出光贴图的主光源的阴影;

无环境漫反射的光照结果减去无阴影的漫反射结果与主光源的阴影的乘积。

进一步地,所述剥离掉光贴图的环境漫反射,得到无环境漫反射的光照结果的步骤,是

将光贴图的原始颜色减去环境漫反射颜色得到的颜色的负值卡在0,得到无环境漫反射的光照结果。

进一步地,所述计算出无阴影的漫反射结果的步骤,是

将主光源方向向量与顶点法线点乘后,再与主光源颜色相乘得到无阴影的漫反射结果。

进一步地,所述分离出光贴图的主光源的阴影的步骤,是

取无阴影的漫反射结果与无环境漫反射的光照结果的比值结果的三个通道中最小的数值并且卡值在0-1之间,作为主光源的阴影。

进一步地,所述分离出光贴图的环境漫反射的步骤,是

用光贴图的原始颜色减去无阴影的漫反射结果与主光源的阴影的乘积,以及其它光源的光照结果,得到光贴图的环境漫反射。

进一步地,所述重新计算主光源的光照结果的步骤,是

使用法线贴图修改法线,并用材质参数进行主光源的实时光照并乘上主光源的阴影。

进一步地,所述的实现光贴图动态光照的方法,还包括步骤:调节主光源的光照结果、其它光源的光照结果或者环境漫反射。

为实现上述目的,本发明提供的计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。

为实现上述目的,本发明提供的计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述方法的步骤。

本发明的实现光贴图动态光照的方法、存储介质及计算设备,能够使3d场景无需重新烘焙光贴图而继续使用原单张光贴图,即可实现主光源的动态变化以及动态的高光反射与高精度的法线贴图效果,并且保留原光贴图的ao(环境遮挡)。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:

图1为根据本发明的实现光贴图动态光照的方法流程图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1为根据本发明的实现光贴图动态光照的方法流程图,下面将参考图1,对本发明的实现光贴图动态光照的方法进行详细描述。

主光源意思为光贴图里已经烘焙且需要动态光照的光源,并不限定类型与个数。

实施例中所述的光贴图是最常用的记录有所有光源漫反射结果的光贴图,即传统光贴图烘焙的方法得到的光贴图。

本实施例中,采用太阳光作为主光源进行具体说明。

在步骤110,剥离掉光贴图的环境漫反射。

该步骤中,将光贴图的颜色(原始颜色)减去环境漫反射颜色得到颜色l′,并让颜色l′中的负值卡在0,得到无环境漫反射的光照结果l,其中,l的含义为所有光源(主光源和其他光源)的光照结果。

在步骤120,计算出无阴影光照颜色。

该步骤中,将太阳方向向量与顶点法线点乘(ndotl)后,再与太阳光颜色相乘得到无阴影的漫反射结果d。

在步骤130,分离出光贴图的主光源的阴影。

该步骤中,无阴影的漫反射结果d与无环境漫反射的光照结果l,在只有太阳光直射时结果一致,即l与d的比值结果l/d为1。

比值结果l/d小于等于0时则为阴影内;比值结果l/d大于0小于等于1时则为太阳光下;比值结果l/d大于1则为有其它光源(如点光源、间接光源)的影响。

为了尽可能地排除其它光源的干扰,应压低颜色与太阳光照颜色不一致的部分,基于性能考量仅取比值结果l/d的三个通道中最小的数值并且卡值在0-1之间,作为主光源的阴影s。

在步骤140,剥离掉光贴图的主光源。

该步骤中,将步骤110中得到的无环境漫反射的光照结果l减去无阴影的漫反射结果d与主光源的阴影s的乘积,(即通过l-d*s)得到剥离了环境漫反射、太阳光后的其它光源的光照结果o。

优选地,若主光源不为太阳光,而是为其他光源,例如点光源,则可剥离点光源的阴影,当然,室外通常不必继续剥离其它光源的数据。

在步骤150,分离出光贴图的环境漫反射。

该步骤中,用光贴图的原始颜色减去无阴影的漫反射结果d与主光源的阴影s的乘积,以及其它光源的光照结果o,(即通过原始颜色-d*s-o)得到步骤110中被剥离的环境漫反射b,并作为当前场景的环境漫反射。

因为环境漫反射包含ao(环境遮蔽),所以不能直接使用步骤110中减去的环境漫反射颜色。

在步骤160,计算包含法线贴图和所有材质参数计算的主光源的实时光照n,将n乘以主光源阴影s后再与剥离主光源的其它光源的光照结果o和环境漫反射b相加,得到最终的光照结果。

该步骤中,首先,重新计算含有高精度法线与高光反射的主光源的光照效果,得到主光源的高质量的实时的光照结果。例如,使用法线贴图修改法线,并用完整的材质参数进行完整的太阳光的实时光照(包括漫反射、高光反射)并乘上主光源的阴影s。然后,将主光源的高质量的实时的光照结果加上剥离主光源的其它光源的光照结果o和环境漫反射b,得到最终的光照结果。

本实施例中,通过将主光源的光照结果、其它光源的光照结果o和环境漫反射b三种光照效果彼此分离,从而可以对这三种光照效果进行独立调节,实现阴天调暗太阳光、夜晚调暗太阳光与漫反射调亮其它光照的光照效果。

基于本发明的实现光贴图动态光照的方法,本发明提供的计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明所述方法的步骤。

基于本发明的实现光贴图动态光照的方法,本发明提供的计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明所述方法的步骤。

本发明的实现光贴图动态光照的方法、存储介质及计算设备,能够使3d场景无需重新烘焙光贴图继续使用原单张光贴图,即可实现主光源的动态变化以及动态的高光反射与高精度的法线贴图效果,并且保留原光贴图的ao(环境遮挡)。

本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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