掌桥专利:专业的专利平台
掌桥专利
首页

一种皮肤渲染方法及装置

文献发布时间:2023-06-19 11:29:13


一种皮肤渲染方法及装置

技术领域

本发明涉及图像处理领域,尤其涉及一种皮肤渲染方法及装置。

背景技术

近年来移动游戏中的模型,由于技术和画面风格的限制,绝大部分的游戏中的模型皮肤都为弱化光影对比的偏美化风格的皮肤,这样的皮肤看起来过于平滑,缺乏光感和生气,也就是使模型的皮肤显得非常的不真实,由此,当前如何提高皮肤的真实感,是皮肤渲染的一大难题。

发明内容

有鉴于此,本发明实施例提供了一种皮肤渲染方法,解决了现有技术汇总皮肤缺乏真实感的问题。

本发明实施例公开了一种皮肤渲染方法,包括:

获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

通过所述光方向和每个像素点的法线方向,获取多个第一索引值集合;

获取每个第一索引值集合对应的第一贴图与预设的索引值的映射关系;所述第一贴图为包含光的明暗强度渐变的图;

通过所述第一贴图与预设的索引值的映射关系,获取每个第一索引值集合中每个索引值在对应的第一贴图上的明暗强度值,并得到每个第一索引值集合对应的明暗强度值集合;

将每个明暗强度值集合与其对应的颜色进行叠加,得到多个光照值集合;

将多个光照值集合进行融合,将融合后的结果作用于所述模型的皮肤上。

可选的,所述通过所述光方向和每个像素点的法线方向,获取多个第一索引值集合,包括:

计算所述光方向和每个像素点的法线方向的点积,得到第二索引值集合;

响应于偏移指令,采用多个偏移量分别对所述第二索引值集合进行偏移处理,得到多个第一索引值集合。

可选的,所述与每个亮度值集合相对应的颜色分别包括:

第一预设颜色,所述第一预设颜色的RGB范围为预设的第一范围;

第二预设颜色,所述第二预设颜色的RGB范围为预设的第二范围;

第三预设颜色,所述第三预设颜色的RGB范围为预设的第三范围;

其中,第三预设颜色的RGB值大于第二预设颜色的RGB值,所述第二颜色的RGB值大于第一预设颜色的RGB值。

可选的,在所述每个第一索引值集合对应的第一贴图与索引值的映射关系相同时,其特征在于,

所述第一预设颜色对应于通过最大偏移量计算得到的明暗强度值集合;

所述第二预设颜色对应于通过中间偏移量计算得到的明暗强度值集合;

所述第三预设颜色对应于通过最小偏移量计算得到的明暗强度值集合。

可选的,还包括:

在模型进行了不透明物体的渲染后,确定模型的皮肤位置;

采用预设的卷积核对模型的皮肤位置进行至少一次横向采样;

将每次横向采样的结果与卷积核相乘,得到至少一个第一卷积结果,并对多个第一卷积结果并进行加权平均,得到横向的卷积结果;

采用预设的卷积核对所述横向的采样结果进行至少一次纵向采样;

将每次纵向采样的结果与预设的卷积核相乘,得到至少一个第二卷积结果,并将所有的第二卷积结果进行加权平均,得到纵向的卷积结果。

可选的,还包括:

调取阴影相机的参数;所述参数至少包括:阴影范围、颜色、方向;所述阴影范围是通过对不同模型的阴影范围进行统计后得到的;

若未检测到参数调整指令,将预设的阴影相机的参数作用于所述模型上。

可选的,还包括:

若检测到参数调整指令时,获取用户选择的阴影范围、用户选择的目标颜色和方向;所述目标颜色是预设的多种颜色中的一种,所述预设的颜色的RGB的值介于黑色的RGB值和白色的RGB值之间;

在黑色和所述目标颜色之间进行插值处理,得到调整后的颜色;

将调整后的阴影相机的参数作用在所述模型上。

可选的,还包括:

获取模型不同皮肤部位的厚度值;

通过不同皮肤部位的厚度值,对皮肤的光照的明暗强度进行调整。

可选的,所述通过不同皮肤部位的厚度值,对皮肤的光照的明暗强度进行调整,包括:

获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

通过光方向和模型皮肤部位每个像素点的法线方向,计算初始的光照强度,且所述初始的光照强度为处于0到1区间的值;

通过光照强度和皮肤厚度值的关系,将处于0到1区间的初始光照强度调整为大于零的光照强度;

将调整后的光照强度作用于所述模型的皮肤上。

可选的,还包括:

获取皮肤厚度小于预设厚度阈值的皮肤部位,作为目标皮肤部位;

若目标皮肤部位包含阴影,基于所述目标皮肤部位的厚度调整阴影的强度。

可选的,还包括:

获取模型所处的当前场景的光方向,并对所述光方向进行取反操作,得到反向的光方向;

将反向的光方向与视线方向进行点乘,并对反向的光方向与视线方向的点乘结果进行幂运算;

将幂运算的结果与皮肤的厚度相乘,得到皮肤的光照强度;

将所述皮肤的光照强度作用于所述模型上。

可选的,还包括:

响应于细节设置指令,获取细节法线混合贴图;所述细节法线混合贴图用于表示各个细节法线贴图的权重以及待设置细节的皮肤部位;

根据细节法线贴图的权重,对预设的各个细节法线贴图进行加权平均,得到目标细节法线贴图;

基于模型的分辨率和目标细节法线贴图的分辨率,将目标细节法线平铺到待设置细节的皮肤部位上;所述各个细节法线贴图的分辨率小于模型的分辨率。

可选的,还包括:

接收用户设置的Beckmann模型的第一粗糙度和第二粗糙度;通过第一粗糙度以及Beckman分布函数模型,模拟光照在皮肤上的反射表现;

通过第二操作度以及Beckman分布函数模型,模拟光照在皮肤上的反射表现。

本发明实施例还公开了一种皮肤渲染装置,包括:

光参数获取单元,用于获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

索引值集合获取单元,用于通过所述光方向和每个像素点的法线方向,获取多个第一索引值集合;

映射关系获取单元,用于获取每个第一索引值集合对应的第一贴图与预设的索引值的映射关系;所述第一贴图为包含光的明暗强度渐变的图;

明暗强度值获取单元,用于通过所述第一贴图与预设的索引值的映射关系,获取每个第一索引值集合中每个索引值在对应的第一贴图上的明暗强度值,并得到每个第一索引值集合对应的明暗强度值集合;

颜色叠加单元,用于将每个明暗强度值集合与其对应的颜色进行叠加,得到多个光照值集合;

融合单元,用于将多个光照值集合进行融合,将融合后的结果作用于所述模型的皮肤上。

本发明实施例提供了一种皮肤渲染方法及装置,该方法包括:通过光方向和模型皮肤部位每个像素点的法线方向,获取多个第一索引值集合,,根据包含明暗强度渐变的第一贴图与预设的索引值的映射关系,确定第一索引值集合中每个索引值对应的明暗强度,并得到多个明暗强度值集合,将每个明暗强度值集合与其相对应的颜色进行叠加,得到多个光照值集合,将多个光照值集合进行融合,并将融合后的结果作用于模型的皮肤上。由此,通过上述的方法模拟了皮肤的次表面散射,模拟出了光线到达皮肤后,除了在表面反射和被吸收的光外,还有一部分光进入了皮肤内部进行散射再从皮肤内射出的光照结果,使得皮肤接近真实的光照表现。并且通过在光照上叠加颜色,使得皮肤呈现不同的颜色,例如微微呈现泛红的颜色,使得皮肤颜色更加的趋于真实。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1示出了本发明实施例提供的一种皮肤渲染方法的流程示意图;

图2为包含明暗强度渐变的一种示意图;

图3为包含明暗强度渐变的另一种示意图;

图4为皮肤渲染前后的第一效果对比图;

图5示出了本发明实施例提供的一种皮肤渲染方法的又一流程示意图;

图6为皮肤渲染前后的第二效果对比图;

图7示出了本发明实施例提供的一种皮肤渲染方法的另一流程示意图;

图8示出了皮肤渲染前后的第三效果对比图;

图9示出了一种皮肤渲染方法的另一流程示意图;

图10示出了一种皮肤渲染方法的另一流程示意图;

图11示出了本发明实施例提供的一种皮肤渲染方法的另一流程示意图;

图12示出了本发明实施例提供的一种皮肤渲染装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参考图1,示出了本发明实施例提供的一种皮肤渲染方法的流程示意图,在本实施例中,该方法包括:

S101:获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

S102:通过所述光方向和每个像素点的法线方向,获取多个第一索引值集合;

本实施例中,第一索引值集合中包含多个索引值,其中计算索引值的主要参数是光方向和像素点的法线方向,在不考虑偏移的情况下,索引值可以为光方向和法线方向的乘积;或者若与第一贴图具有映射关系的索引值为在[0,1]范围内值,那么可以将光方向和法线方向的乘积调整为[0.1]范围内。

进一步的,模拟次表面散射的结果,本实施例中,通过模拟多层反射的,使得每层反射具备不同的明暗效果。

为了实现上述结果,本实施例中,可以采用多个偏移量对光方向和法线方向的乘积进行偏移,得到多个第一索引值集合,具体的,S102包括:

计算所述光方向和每个像素点的法线方向的点积,得到第二索引值集合;

响应于偏移指令,采用多个偏移量分别对所述第二索引值集合进行偏移处理,得到多个第一索引值集合。

进一步的,若与第一贴图具有映射关系的索引值为在[0,1]范围内值,那么,那么可以将对第一索引值集合调整为处于[0,1]范围内的索引值。

S103:分别获取每个第一索引值集合对应的第一贴图与预设的索引值的映射关系;所述第一贴图为包含光的明暗强度渐变的图;

本实施例中,预先设置了第一贴图与预设的索引值的映射关系,即不同的索引值可以对应于第一贴图上不同的光的明暗强度。

举例说明:如图2所示,为一张能够体现光的明暗程度渐变的贴图,其中,该图中从下往上看,体现了不同的明暗渐变程度,本实施例中,例如可以选取该图2中的一种明暗强度渐变的图作为第一贴图(如图3所示)。

其中,为了满足用户的需求,本实施例中,可以调整索引值与第一贴图的映关系,例如可以替换成能体现不同明暗渐变程度的第一贴图。

S104:根据所述第一贴图与预设的索引值的映射关系,获取每个第一索引值集合中每个索引值在对应的第一贴图上的明暗强度值,并得到每个第一索引值集合对应的明暗强度值集合;

本实施例中,第一索引值集合中包含多个索引值,每个索引值可以在第一贴图上找到相对应的光的明暗强度值,针对每一个第一索引值集合,得到的明暗强度值,可以构成一个明暗强度集合;

其中,通过上述介绍可知,可以根据用户的实际需求,调整索引值与第一贴图的对应关系,例如更换索引值对应的第一贴图。

由此,每个第一索引值集合对应的第一贴图可以是相同的,也可以是不同的。

S105:将每个明暗强度值集合与其相对应的颜色进行叠加,得到多个光照值集合;

本实施例中,为了表现不同的颜色,可以在光照上叠加上颜色。

其中,叠加的光的颜色可以是用户自定义的,或者为了展示出微微泛红的效果,叠加的颜色可以包括:第一预设颜色、第二预设颜色和第三预设颜色。其中,所述第一预设颜色的RGB范围为预设的第一范围,所述第二预设颜色的RGB范围为预设的第二范围,所述第三预设颜色的RGB范围为预设的第三范围,其中,第三预设颜色的RGB值大于第二预设颜色的RGB值,第三颜色的RGB值大于第一预设颜色的RGB值。

其中,RGB就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。

其中,第一预设颜色可以任何是偏白的颜色中的任何一种颜色,R、G、B的范围例如可以为(0,0,0)-(99,35,35);

第二预设颜色可以是任何一种偏红的颜色,R、G、B的范围例如可以为(99,35,35)-(243,185,185);

第三预设颜色可以是任何一种偏黑的颜色,其中,R、G、B的颜色可以为(243,185,185)-(255,255,255)。

其中,在每个索引值集合对应的第一贴图一致时,或者说,每个第一索引值对应的第一贴图与索引值的映射关系相同时,颜色和明暗强度集合的对应关系为:

所述白色对应于通过最大偏移量计算得到的明暗强度值集合;

所述红色对应于通过中间偏移量计算得到的明暗强度值集合;

所述黑色对应于通过最小偏移量计算得到的明暗强度值集合。

S106:将多个光照值集合进进行融合,并将所述多个光照值集合融合后的结果作用于所述模型的皮肤上。

本实施例中,将调整后的光照的结果作用于模型的皮肤上,使皮肤呈现出更加真实的光照效果。

本发明实施例提供了一种皮肤渲染方法及装置,该方法包括:通过光方向和模型皮肤部位每个像素点的法线方向,计算第一索引值集合,并通过多个偏移量对第一索引值集合进行偏移处理,根据体现明暗渐变程度的第一贴图与预设的索引值的映射关系,确定第二索引值集合中每个索引值对应的明暗强度,并得到多个明暗强度值集合,将每个明暗强度值集合与其相对应的颜色进行叠加,得到多个光照值集合,将多个光照值集合进行融合,并将融合后的结果作用于模型的皮肤上。由此,通过上述的方法模拟皮肤的次表面散射,模拟出光线到达皮肤后,除了在表面反射和被吸收的光外,还有一部分光进入了皮肤内部进行散射再从皮肤内射出的光照结果。并且通过在光照上叠加颜色,使得皮肤呈现不同的颜色,例如微微呈现泛红的颜色,使得皮肤更加的趋于真实。

进一步的,为了体现皮肤的真实颜色,还可以将光照值集合融合后的结果和预设的皮肤颜色相乘。

本实施例中,为了得到皮肤微微泛红的展示效果,可以执行如下的操作:

获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

计算所述光方向和每个像素点的法线方向的点积,得到第二索引值集合;

通过三个偏移量对第二索引值集合进行三次偏移处理,得到三个第一索引值集合;

根据预先设置的第一贴图与索引值的映射关系,获取每个第一索引值集合中每个索引值在第一贴图上的明暗强度值,得到三个明暗强度值集合;

将通过最小偏移量得到的明暗强度集合与白色进行叠加,得到第一光照值集合;

将通过中间偏移量得到的明暗强度集合与红色进行叠加,得到第二光照值集合;

将通过最大偏移量得到的明暗强度集合与黑色进行叠加,得到第三光照值集合;

将第一光照值集合、第二光照值集合和第三光照值集合进行融合,并将融合后的结果作用于所述模型的皮肤上。

本实施例中,可以认为皮肤最后的光照效果,为三层光照的结果,每层光照上叠加了不同的颜色,第一层叠加偏白的颜色,第二层叠加偏红的颜色,第三层叠加偏黑的颜色,这样使得皮肤能够展现出微微泛红的效果,使模型的皮肤更加接近真实的效果。

举例说明:如图4所示,右图展示了未执行上述操作之前的效果,左图为执行了上述操作之后的效果。

申请人发现,皮肤本身是需要细节的,如毛孔和皮肤纹路,但是有了细节就会导致皮肤整体发干,会有一种塑料感或者蜡的质感,为了改善这种效果,需要一种保持皮肤细节但又能让皮肤整体质感更加柔和滋润的方法。

参考图5,示出了本发明实施例提供的一种皮肤渲染方法的又一流程示意图,包括:

S501:在模型进行了不透明物体渲染后,确定模型的皮肤位置;

本实施例中,皮肤位置可以通过预先标记的结果确定,若相机开启了HDR,则需要额外提供一个渲染流程,生成皮肤标记。

S502:采用预设的卷积核对模型的皮肤位置进行至少一次横向采样;

本实施例中,横向采样的次数和卷积核的大小有关。

S503:将每次横向采样的结果与卷积核相乘,得到多个第一卷积结果,并将所有的第一卷积结果并进行加权平均,得到横向卷积结果;

本实施例中,在得到横向卷积结果后,将横向卷积结果输出,输出到一张RenderTexture上,使横向卷积结果作为纵向卷积的输入。

S504:采用预设的卷积核对所述横向的采样结果进行至少一次纵向采样;

本实施例中,纵向采样的次数与卷积核的大小有关。

S505:将每次纵向采样的结果与预设的卷积核相乘,得到至少一个第二卷积结果,并将所有的第二卷积结果进行加权平均,得到纵向的卷积结果。

本实施例中,为了降低运算量,本实施例中,将二维的卷积核拆分为两个一维的卷积核,通过横向、纵向两次单独的单项卷积操作,将原本需要m*n的采样降低为m+n。其中,可以通过可分离次表面散射模型Separable Subsurface Scattering将二维的卷积核拆分为两个一维的卷积核。

本实施例中,通过横向和纵向的两次采样,使得将一个像素点上的颜色发散影响到周围像素点上,模拟了真实光线进入皮肤后的散射的物理现象,因而整体会使皮肤看起来更加平滑滋润。

参考图6,示出了一种润效果的对比图,其中,左图为添加润效果之前,右图为添加润效果之后,可以看出,左图的皮肤显得非常的干燥,缺少光泽度,右图的皮肤显得比较水润。

申请人发现,游戏模型或者游戏场景中,通常会有一些阴影的效果,对于模型来说,如果缺少阴影,模型整体上会显得缺乏立体感,使画面偏平面,阴影可以让模型的光影对比更强,增强模型的立体效果。但是现有技术中,对阴影的设计通常需要兼顾场景的范围,这样,使得模型的锯齿感很强,使得模型皮肤看起来不真实。为了提升阴影的真实效果,参考图7,示出了本发明实施例提供的一种皮肤渲染方法的另一流程示意图,在本实施例中,该方法包括:

S701:调取阴影相机的参数;所述参数至少包括:阴影范围、颜色、方向;所述阴影范围时通过对不同模型的阴影范围进行统计后得到的;

S702:若未检测到参数调整指令,将预设的阴影相机的参数作用于模型上。

本实施例中,预先设置了阴影相机的参数,该参数是通过对不同模型的阴影范围进行分析统计后得到的,即阴影相机的参数仅包含模型的阴影范围,不再包含场景的阴影范围,这样缩小了模型的阴影范围,增强了模型自身自阴影的效果,使得模型的皮肤能够呈现更加真实的效果。

进一步的,为了满足用户的不同需求,还可以对阴影相机的参数进行调整,例如对阴影范围、颜色或者方向进行调整,具体的,还包括:

若检测到参数调整指令,获取用户选择的阴影范围、用户选择的目标颜色和方向;所述目标颜色是预设的多种颜色中的一种;

在黑色和所述目标颜色之前进行插值处理,得到调整后的颜色;

将调整后的阴影相机的参数作用在所述模型上。

其中,为了得到更加真实的效果,淡化阴影的颜色,由此选取的预设的颜色的RGB的值范围小于黑色的RGB的值的范围,优选的,预设的颜色可以为红色系的颜色。

在黑色和所述目标颜色之间进行插值处理,得到在黑色和目标颜色之间的渐变色。

参考图8,示出了一种阴影效果的示意图,其中左图1为未添加阴影效果的图,中间的图为现有技术中添加阴影后的效果,右图为通过本实施例的方法实现的阴影的效果。

申请人还发现,由于皮肤厚度不同,当皮肤处于光照情况下时,不同厚度的皮肤处会呈现出不同的效果,例如,在皮肤比较薄的位置,即使在较暗的光照下,也会有透光的情况,但是现有技术中,无法体现该种现象。因此,为了进一步增强皮肤的真实感,参考图9示出了一种皮肤渲染方法的另一流程示意图:

S901:获取模型不同皮肤部位的厚度值;

S902:通过对不同皮肤部位的厚度值,对皮肤的光照的明暗强度进行调整。

其中,根据皮肤厚度对皮肤进行调整的方法可以包括如下的三种方式:

方式一:

获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

通过光方向和模型皮肤部位每个像素点的法线方向,计算初始的光照强度,且所述初始的光照强度为处于0到1区间的值;

通过光照强度和皮肤厚度的关系,将处于0到1区间的初始光照强度调整为大于零的光照强度;

将调整后的光照强度作用于所述模型的皮肤上。

本实施例中,通过将光照强度和皮肤厚度的关系,将于0到1区间的初始光照强度调整为大于零的光照强度,这样,即使物体背光,也会有一定的颜色而不是纯黑。

举例说明,可以通过如下的公式1)表示皮肤厚度对光照强度的调整情况:

NdotL′=(NdotL+w)/((1.0+w)*(1.0+w));

其中,NdotL’表示调整后的光照强度,NdotL表示调整前的光照强度。

方式二:

获取皮肤厚度小于预设厚度阈值的皮肤部位,作为目标皮肤部位;

若目标皮肤部位包含阴影,基于所述目标皮肤部位的厚度调整阴影的强度。

本实施例中,可以认为皮肤厚度小于预设的厚度阈值的皮肤部位为皮肤比较薄的部位,该皮肤部位若存在阴影效果,由于比较薄的部位,皮肤的通透程度比较高,那么阴影的强度则比较弱,因此,本实施例中,通过皮肤厚度对阴影的强度进行调整,弱化阴影的强度。

由此可知,皮肤厚度的值越小,或者说皮肤越薄的部位,会将阴影的强度调整的越弱。

方式三:

获取模型所处的当前场景的光方向,并对所述光方向进行取反操作,得到反向的光方向;

将反向的光方向与视线方向进行点乘,并对反向的光方向与视线方向的点乘结果进行幂运算;

将幂运算的结果与皮肤的厚度相乘,得到皮肤的光照强度;

将所述皮肤的光照强度作用于所述模型上。

本实施例中,将光方向取反的方法包括多种,本实施例中不再赘述,例如可以在光方向上添加一个可以调制的偏移量,实现对光方向的取反。

本实施例中,为了进一步的提升通透感,可以将光方向取反,并和视方向进行点积后,将结果求幂,这样使得皮肤的边缘处的光比较强烈,进而增强了皮肤边缘部位的投射表现。

本实施例中,将幂运算后的结果与皮肤的厚度相乘,使得通透的表现只在皮肤比较薄的位置上表现。

申请人发现,不同的皮肤部位会有不同的细节表现,缺少细节的皮肤看起来过去完美和光滑,但是并不真实,为了能够体现真实的皮肤细节,需要采用细节法线设置皮肤细节,但是若想要展现出真实的皮肤细节,需要较高精度的细节法线,例如需要4096甚至更高精度的法线,并且单张的细节法线,也难以满足对皮肤不同部位细节的设置。

为了解决上述问题,本实施例中,参考图10,示出了一种皮肤渲染方法的另一流程示意图,包括:

S1001:响应于细节设置指令,获取细节法线混合贴图;所述细节法线混合贴图用于表示各个细节法线贴图的权重以及待设置细节的皮肤部位;

S1002:根据细节法线贴图的权重,对预设的各个细节法线贴图进行加权平均,得到目标细节法线贴图;

S1003:基于模型的分辨率和目标细节法线贴图的分辨率,将目标细节法线平铺到待设置细节的皮肤部位上;所述各个细节法线贴图的分辨率小于模型的分辨率。

其中,通过用户选择的细节法线和选中的皮肤位置,可以得到细节法线贴图,该细节法线混合贴图用于表示各个细节法线贴图的权重,例如每张细节法线对应混合贴图的一个通道,细节1对应混合图的R通道,细节2对应混合图的G通道,细节3对应混合图的B通道。其中,在实际应用中,当检测到用户触发在某个皮肤位置上设置细节的指令时,会把当前所选的细节图对应的通道填充,而清空其余通道。

在执行“根据细节法线混合贴图,对各个细节法线贴图进行加权平均”操作时,由于细节法线贴图在绘制的时候保证了互斥,那么可以保证根据细节混合图的RGB通道在对应的位置上表现出不同的细节。

本实施例中,将低分辨率的细节法线贴图应用于高分辨率的模型中,可以将低分辨率的细节法线在高分辨率的模型上进行平铺,例如可以对低分辨率的细节法线图进行多次采样,将多次采样的结果进行混合,从而实现高分辨率的细节效果。

本实施例中,预先设置的低分辨率的法线贴图,通过对法线贴图进行多次采样,从而实现高分辨率的贴图的细节效果。这样的话,在占用更小内存的情况下,实现了高分辨率细节的展示效果。申请人发现,皮肤的结构分为油脂层、表皮层和真皮肤,光线下油脂层发生较多的反射,但是由于油脂层较薄,会出现内层的反射,因此,为了呈现出更加真实的皮肤表现,可以通过模拟不同皮肤层的反射来展示更加真实的高光表现,具体的,参考图11,示出了本发明实施例提供的一种皮肤渲染方法的另一流程示意图,在本实施例中,该方法包括:

S1101:接收用户设置的Beckman分布函数模型的第一粗糙度和第二粗糙度;

S1102:通过第一粗糙度以及Beckman分布函数模型,模拟光照在皮肤上的反射表现;

S1103:通过第二操作度以及Beckman分布函数模型,模拟光照在皮肤上的反射表现。其中,第一粗糙度和第二粗糙度中,一个粗糙度大一个粗糙度小,其中,粗糙度小的模拟外层反射,粗糙度大的模拟内层反射,但是内层反射和外层反射的执行顺序本实施例中不进行限定。其中,外层反射可以认为模拟油脂层的反射,内层反射可以认为是模拟表皮层和真皮层的反射。

本实施例中,Beckman分布函数模型是一个用于进行光照反射模拟的模型,其中该模型可以通过如下的公式1)表示:

1)

其中,m=N dot H,其中,N表示法线,H表示介于光方向和视方向中间的半角向量,其中,H=L+V,其中,L表示光方向,V表示视方向,α表示粗糙度。

参考图12,示出了本发明实施例提供的一种皮肤渲染装置的结构示意图,在本实施例中,该方法包括:

光参数获取单元1201,用于获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

索引值集合获取单元1202,用于通过所述光方向和每个像素点的法线方向,获取多个第一索引值集合;

映射关系获取单元1203,用于获取每个第一索引值集合对应的第一贴图与预设的索引值的映射关系;所述第一贴图为包含光的明暗强度渐变的图;

明暗强度值获取单元1204,用于通过所述第一贴图与预设的索引值的映射关系,获取每个第一索引值集合中每个索引值在对应的第一贴图上的明暗强度值,并得到每个第一索引值集合对应的明暗强度值集合;

颜色叠加单元1205,用于将每个明暗强度值集合与其对应的颜色进行叠加,得到多个光照值集合;

融合单元1206,用于将多个光照值集合进行融合,将融合后的结果作用于所述模型的皮肤上。

可选的,所述索引值集合获取单元,包括:

计算单元,用于计算所述光方向和每个像素点的法线方向的点积,得到第二索引值集合;

偏移单元,用于响应于偏移指令,采用多个偏移量分别对所述第二索引值集合进行偏移处理,得到多个第一索引值集合。

可选的,所述与每个亮度值集合相对应的颜色分别包括:

第一预设颜色,所述第一预设颜色的RGB范围为预设的第一范围;

第二预设颜色,所述第二预设颜色的RGB范围为预设的第二范围;

第三预设颜色,所述第三预设颜色的RGB范围为预设的第三范围;

其中,第三预设颜色的RGB值大于第二预设颜色的RGB值,所述第二颜色的RGB值大于第一预设颜色的RGB值。

可选的,在所述每个第一索引值集合对应的第一贴图与索引值的映射关系相同时,所述第一预设颜色对应于通过最大偏移量计算得到的明暗强度值集合;所述第二预设颜色对应于通过中间偏移量计算得到的明暗强度值集合;所述第三预设颜色对应于通过最小偏移量计算得到的明暗强度值集合。

可选的,润效果渲染单元,用于:

在模型进行了不透明物体的渲染后,确定模型的皮肤位置;

采用预设的卷积核对模型的皮肤位置进行至少一次横向采样;

将每次横向采样的结果与卷积核相乘,得到至少一个第一卷积结果,并对多个第一卷积结果并进行加权平均,得到横向的卷积结果;

采用预设的卷积核对所述横向的采样结果进行至少一次纵向采样;

将每次纵向采样的结果与预设的卷积核相乘,得到至少一个第二卷积结果,并将所有的第二卷积结果进行加权平均,得到纵向的卷积结果。

可选的,还包括:第一阴影渲染单元,用于

调取阴影相机的参数;所述参数至少包括:阴影范围、颜色、方向;所述阴影范围是通过对不同模型的阴影范围进行统计后得到的;

若未检测到参数调整指令,将预设的阴影相机的参数作用于所述模型上。

可选的,还包括:第二阴影渲染单元,用于

若检测到参数调整指令时,获取用户选择的阴影范围、用户选择的目标颜色和方向;所述目标颜色是预设的多种颜色中的一种,所述预设的颜色的RGB的值介于黑色的RGB值和白色的RGB值之间;

在黑色和所述目标颜色之间进行插值处理,得到调整后的颜色;

将调整后的阴影相机的参数作用在所述模型上。

可选的,还包括:通透效果渲染单元,包括:

获取模型不同皮肤部位的厚度值;

通过不同皮肤部位的厚度值,对皮肤的光照的明暗强度进行调整。

可选的,所述通透效果渲染子单元,包括:第一通透效果渲染子单元,用于:

获取模型所处场景的光方向以及模型皮肤部位每个像素点的法线方向;

通过光方向和模型皮肤部位每个像素点的法线方向,计算初始的光照强度,且所述初始的光照强度为处于0到1区间的值;

通过光照强度和皮肤厚度值的关系,将处于0到1区间的初始光照强度调整为大于零的光照强度;

将调整后的光照强度作用于所述模型的皮肤上。

可选的,所述通透效果渲染子单元,包括:第二通透效果渲染子单元,用于:

获取皮肤厚度小于预设厚度阈值的皮肤部位,作为目标皮肤部位;

若目标皮肤部位包含阴影,基于所述目标皮肤部位的厚度调整阴影的强度。

可选的,所述通透效果渲染子单元,包括:第三通透效果渲染子单元,用于:

获取模型所处的当前场景的光方向,并对所述光方向进行取反操作,得到反向的光方向;

将反向的光方向与视线方向进行点乘,并对反向的光方向与视线方向的点乘结果进行幂运算;

将幂运算的结果与皮肤的厚度相乘,得到皮肤的光照强度;

将所述皮肤的光照强度作用于所述模型上。

可选的,还包括:细节设置单元,用于:

响应于细节设置指令,获取细节法线混合贴图;所述细节法线混合贴图用于表示各个细节法线贴图的权重以及待设置细节的皮肤部位;

根据细节法线贴图的权重,对预设的各个细节法线贴图进行加权平均,得到目标细节法线贴图;

基于模型的分辨率和目标细节法线贴图的分辨率,将目标细节法线平铺到待设置细节的皮肤部位上;所述各个细节法线贴图的分辨率小于模型的分辨率。

可选的,还包括:高光设置单元,用于:

接收用户设置的Beckmann模型的第一粗糙度和第二粗糙度;通过第一粗糙度以及Beckman分布函数模型,模拟光照在皮肤上的反射表现;

通过第二操作度以及Beckman分布函数模型,模拟光照在皮肤上的反射表现。

本实施例的装置,通过光方向和模型皮肤部位每个像素点的法线方向,获取多个第一索引值集合,,根据包含明暗强度渐变的第一贴图与预设的索引值的映射关系,确定第一索引值集合中每个索引值对应的明暗强度,并得到多个明暗强度值集合,将每个明暗强度值集合与其相对应的颜色进行叠加,得到多个光照值集合,将多个光照值集合进行融合,并将融合后的结果作用于模型的皮肤上。由此,通过上述的方法模拟皮肤的次表面散射,模拟出光线到达皮肤后,除了在表面反射和被吸收的光外,还有一部分光进入了皮肤内部进行散射再从皮肤内射出的光照结果。并且通过在光照上叠加颜色,使得皮肤呈现不同的颜色,例如微微呈现泛红的颜色,使得皮肤更加的趋于真实。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种皮肤渲染方法及装置
  • 一种基于皮肤缓存机制的界面渲染方法、装置及电子设备
技术分类

06120112939334