发明内容
本发明实施例提供了一种角色表情的驱动方法及装置、存储介质、电子装置。
根据本发明的一个实施例,提供了一种角色表情的驱动方法,包括:获取虚拟角色的面捕表情;解析所述面捕表情的表情类型;计算与所述表情类型匹配的表情肌参数,并计算与所述表情肌参数匹配的材质参数;采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体,以在所述虚拟角色上渲染所述面捕表情。
可选的,采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体包括:在所述虚拟角色的骨骼网格体上查找与所述表情肌参数和所述材质参数分别匹配的目标表情肌和目标材质球;采用所述表情肌参数驱动所述目标表情肌,以及采用所述目标材质参数配置所述目标材质球。
可选的,计算与所述表情肌参数匹配的材质参数包括:查找所述骨骼网格体的面部材质球;在所述面部材质球上查找与所述表情肌参数匹配的浮点类型参数;获取所述表情类型的遮罩贴图,以及获取所述面部材质球的皮肤颜色贴图集合和法线贴图集合;采用所述浮点类型参数将所述遮罩贴图和所述皮肤颜色贴图集合融合为第一融合参数,采用所述浮点类型参数将所述遮罩贴图和所述法线贴图集合融合为第二融合参数;将所述第一融合参数和所述第二融合参数确定为所述面部材质球的材质参数。
可选的,在所述面部材质球上查找与所述表情肌参数匹配的浮点类型参数包括:读取所述表情肌参数的参数标识,其中,所述参数标识与所述表情肌参数作用的面部区域对应;截取所述参数标识的指定字段;以所述指定字段为关键字,在所述面部材质球的材质参数集合中搜索命中所述指定字段的浮点类型参数。
可选的,采用所述浮点类型参数将所述遮罩贴图和所述皮肤颜色贴图集合融合为第一融合参数包括:将所述浮点类型参数转换为四维向量;将所述四维向量与所述遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断所述第二运算值是否大于预设阈值;若所述第二运算值大于预设阈值,选择输出所述第一运算值;获取基础皮肤颜色贴图的第一RGB向量和N张情绪皮肤颜色贴图的第二RGB向量,其中,所述皮肤颜色贴图集合包括所述基础皮肤颜色贴图和所述N张情绪皮肤颜色贴图,N为大于1的整数;针对每张情绪皮肤颜色贴图的第二RGB向量,采用对应的第二RGB向量减去所述第一RGB向量,得到N个第三运算值;针对所述N个第三运算值中的每个第三运算值,分别与所述第一运算值进行乘法运算,得到N个第四运算值;对所述N个第四运算值进行相加,得到第五运算值;将所述第五运算值与所述第一RGB向量进行相加运算,得到第一融合参数。
可选的,采用所述浮点类型参数将所述遮罩贴图和所述法线贴图集合融合为第二融合参数包括:将所述浮点类型参数转换为四维向量;将所述四维向量与所述遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断所述第二运算值是否大于预设阈值;若所述第二运算值大于预设阈值,选择输出所述第一运算值;获取基础法线贴图的第一法线向量和N张情绪法线贴图的第二法线向量,其中,所述法线贴图集合包括所述基础法线贴图和所述N张情绪法线贴图;针对每张情绪法线贴图的第二法线向量,采用对应的第二法线向量减去所述第一法线向量,得到N个第六运算值;针对所述N个第六运算值中的每个第六运算值,分别与所述第一运算值进行乘法运算,得到N个第七运算值;对所述N个第七运算值进行相加,得到第八运算值;将所述第八运算值与所述第一法线向量进行相加运算,得到第二融合参数。
可选的,在采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体之前,所述方法还包括:创建所述虚拟角色的表情模板,其中,所述表情模板包括多个表情肌;确定嘴部口型的音素集合;针对所述音素集合中的每个音素,分别配置口型音素表情肌;将所述口型音素表情肌添加至所述表情模板。
根据本发明的另一个实施例,提供了一种角色表情的驱动装置,包括:获取模块,用于获取虚拟角色的面捕表情;解析模块,用于解析所述面捕表情的表情类型;计算模块,用于计算与所述表情类型匹配的表情肌参数,并计算与所述表情肌参数匹配的材质参数;驱动模块,用于采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体,以在所述虚拟角色上渲染所述面捕表情。
可选的,所述驱动模块包括:查找单元,用于在所述虚拟角色的骨骼网格体上查找与所述表情肌参数和所述材质参数分别匹配的目标表情肌和目标材质球;处理单元,用于采用所述表情肌参数驱动所述目标表情肌,以及采用所述目标材质参数配置所述目标材质球。
可选的,所述计算模块包括:第一查找单元,用于查找所述骨骼网格体的面部材质球;第二查找单元,用于在所述面部材质球上查找与所述表情肌参数匹配的浮点类型参数;获取单元,用于获取所述表情类型的遮罩贴图,以及获取所述面部材质球的皮肤颜色贴图集合和法线贴图集合;融合单元,用于采用所述浮点类型参数将所述遮罩贴图和所述皮肤颜色贴图集合融合为第一融合参数,采用所述浮点类型参数将所述遮罩贴图和所述法线贴图集合融合为第二融合参数;确定单元,用于将所述第一融合参数和所述第二融合参数确定为所述面部材质球的材质参数。
可选的,所述第二查找单元包括:读取子单元,用于读取所述表情肌参数的参数标识,其中,所述参数标识与所述表情肌参数作用的面部区域对应;截取子单元,用于截取所述参数标识的指定字段;搜索子单元,用于以所述指定字段为关键字,在所述面部材质球的材质参数集合中搜索命中所述指定字段的浮点类型参数。
可选的,所述融合单元包括:转换子单元,用于将所述浮点类型参数转换为四维向量;第一运算子单元,用于将所述四维向量与所述遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断子单元,用于判断所述第二运算值是否大于预设阈值;选择子单元,用于若所述第二运算值大于预设阈值,选择输出所述第一运算值;第一获取子单元,用于获取基础皮肤颜色贴图的第一RGB向量和N张情绪皮肤颜色贴图的第二RGB向量,其中,所述皮肤颜色贴图集合包括所述基础皮肤颜色贴图和所述N张情绪皮肤颜色贴图,N为大于1的整数;第二运算子单元,用于针对每张情绪皮肤颜色贴图的第二RGB向量,采用对应的第二RGB向量减去所述第一RGB向量,得到N个第三运算值;第三运算子单元,用于针对所述N个第三运算值中的每个第三运算值,分别与所述第一运算值进行乘法运算,得到N个第四运算值;第四运算子单元,用于对所述N个第四运算值进行相加,得到第五运算值;第一融合子单元,用于将所述第五运算值与所述第一RGB向量进行相加运算,得到第一融合参数。
可选的,所述融合单元包括:转换子单元,用于将所述浮点类型参数转换为四维向量;第一运算子单元,用于将所述四维向量与所述遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断子单元,用于判断所述第二运算值是否大于预设阈值;选择子单元,用于若所述第二运算值大于预设阈值,选择输出所述第一运算值;第二获取子单元,用于获取基础法线贴图的第一法线向量和N张情绪法线贴图的第二法线向量,其中,所述法线贴图集合包括所述基础法线贴图和所述N张情绪法线贴图;第五运算子单元,用于针对每张情绪法线贴图的第二法线向量,采用对应的第二法线向量减去所述第一法线向量,得到N个第六运算值;第六运算子单元,用于针对所述N个第六运算值中的每个第六运算值,分别与所述第一运算值进行乘法运算,得到N个第七运算值;第七运算子单元,用于对所述N个第七运算值进行相加,得到第八运算值;第二融合子单元,用于将所述第八运算值与所述第一法线向量进行相加运算,得到第二融合参数。
可选的,所述装置还包括:创建模块,用于在所述驱动模块采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体之前,创建所述虚拟角色的表情模板,其中,所述表情模板包括多个表情肌;确定模块,用于确定嘴部口型的音素集合;配置模块,用于针对所述音素集合中的每个音素,分别配置口型音素表情肌;添加模块,用于将所述口型音素表情肌添加至所述表情模板。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,获取虚拟角色的面捕表情,解析面捕表情的表情类型,计算与表情类型匹配的表情肌参数,并计算与表情肌参数匹配的材质参数,采用表情肌参数和材质参数驱动虚拟角色的骨骼网格体,以在虚拟角色上渲染面捕表情,通过计算与表情肌参数匹配的材质参数,可以在驱动表情时关联表情肌参数和材质参数,提高人物面捕驱动过程中的细节层次,解决了相关技术中虚拟角色面捕过程中细节效果不足等技术问题,可以优化数字人面捕的细节驱动,使人物表情更生动真实。
实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例
本申请实施例一所提供的方法实施例可以在手机、平板、服务器、计算机或者类似的电子终端中执行。以运行在计算机上为例,图1是本发明实施例的一种角色表情的驱动计算机的硬件结构框图。如图1所示,计算机可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机的结构造成限定。例如,计算机还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种角色表情的驱动方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。在本实施例中,处理器102用于响应人机交互指令和游戏策略,控制目标虚拟角色执行指定操作以完成游戏任务。存储器104用于存储电子游戏的程序脚本,配置信息,虚拟角色的声音资源信息等。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
可选的,输入输出设备108还包括人机交互屏幕用于通过人机交互接口获取人机交互指令,还用于呈现虚拟场景中的画面;
在本实施例中提供了一种角色表情的驱动方法,图2是根据本发明实施例的一种角色表情的驱动方法的流程示意图,如图2所示,该流程包括如下步骤:
步骤S202,获取虚拟角色的面捕表情;
本实施例的虚拟角色也称为数字人,虚拟人,数字偶像等,可以应用在虚拟场景或者虚实结合的场景中,虚拟场景可以是虚拟游戏场景,虚拟教学场景,虚拟社交场景等。
步骤S204,解析面捕表情的表情类型;
可选的,表情类型包括微笑,生气,悲伤,愤怒,大笑等,与人类的表情类型相同。
步骤S206,计算与表情类型匹配的表情肌参数,并计算与表情肌参数匹配的材质参数;
其中,表情肌参数作用于虚拟角色的表情肌,用于驱动虚拟角色的骨骼产生形变,材质参数作用于虚拟角色的模型材质,用于调整虚拟角色的骨骼贴图或者蒙皮图案。
可选的,在计算与表情类型匹配的表情肌参数时,可以通过AI算法计算表情类型的表情肌参数,如通过AI图像识别将面捕表情的影像中人物面部数据转换为表情肌上对应的参数值,通过语音识别将面捕表情的音频数据转换为表情肌参数值等。
步骤S208,采用表情肌参数和材质参数驱动虚拟角色的骨骼网格体,以在虚拟角色上渲染面捕表情。
通过上述步骤,获取虚拟角色的面捕表情,解析面捕表情的表情类型,计算与表情类型匹配的表情肌参数,并计算与表情肌参数匹配的材质参数,采用表情肌参数和材质参数驱动虚拟角色的骨骼网格体,以在虚拟角色上渲染面捕表情,通过计算与表情肌参数匹配的材质参数,可以在驱动表情时关联表情肌参数和材质参数,提高人物面捕驱动过程中的细节层次,解决了相关技术中虚拟角色面捕过程中细节效果不足等技术问题,可以优化数字人面捕的细节驱动,使人物表情更生动真实。
在本实施例中,计算与表情肌参数匹配的材质参数包括:
S11,查找骨骼网格体的面部材质球;
在本实施中,虚拟角色的人物模型为骨骼网格体,人物模型的表情肌和材质球都跟模型自身相关联。
S12,在面部材质球上查找与表情肌参数匹配的浮点类型参数;
本实施例的浮点类型参数也叫浮点参数,值是在材质球中预先创建好的(browDownLeft,browDownRight,mouthStretchLeft,mouthStretchRight,noseSneerLeft,noseSneerRight,browInnerUp,cheekSquintLeft,cheekSquintRight,mouthSmileLeft,mouthSmileRight)材质参数,全部为浮点类型,在驱动虚拟角色的骨骼网格体时,首先需要在表情肌上作用这些参数值,表情肌上的参数名称与这些对应。
在一个实施方式中,在面部材质球上查找与表情肌参数匹配的浮点类型参数包括:读取表情肌参数的参数标识,其中,参数标识与表情肌参数作用的面部区域对应;截取参数标识的指定字段;以指定字段为关键字,在面部材质球的材质参数集合中搜索命中指定字段的浮点类型参数。
可选的,指定字段可以是全部字段,二者通过预先设定好的参数名来一一对应,表情肌与对应材质参数相关联,关联的参数名有多个。表1示意了11个与表情肌参数一一关联的材质参数的参数项:
表1
参数名称 |
标识 |
眉毛左下 |
browDownLeft |
眉毛右下 |
browDownRight |
眉心朝上 |
browInnerUp |
左斜视 |
cheekSquintLeft |
右斜视 |
cheekSquintRight |
嘴角左侧笑 |
mouthSmileLeft |
嘴角右侧笑 |
mouthSmileRight |
嘴角左侧拉伸 |
mouthStretchLeft |
嘴角右侧拉伸 |
mouthStretchRight |
鼻子左嘲讽 |
noseSneerLeft |
鼻子右嘲讽 |
noseSneerRight |
S14,获取表情类型的遮罩贴图,以及获取面部材质球的皮肤颜色贴图集合和法线贴图集合;
本实施例在人物模型材质上新增贴图融合,根据3种情绪,生气(angry),悲伤(sad),微笑(smile)类型划分出四张mask遮罩贴图,其中生气涉及到的人物面部区域较多,在划分生气情绪时使用了两张mask遮罩贴图,图3是本发明实施例各种情绪类型的遮罩贴图的示意图。在遮罩贴图的基础上,将人物4种颜色贴图与法线贴图相融合,提取出相对应的浮点类型参数用于关联上述部分表情肌参数。
如图3所示,四张遮罩贴图用于区分面部表情,图中的颜色区域为RGB颜色通道所对应的区域(每张遮罩贴图作用的区域),一张遮罩贴图中最多可以使用三个区域(以RGB来划分),由于生气表情作用的区域较多,所以使用了两张遮罩贴图(T_BS_Angry_mask_01,T_BS_Angry_mask_02),悲伤表情只涉及到了一个区域效果所以只是用R设定一个区域就可以(T_BS_Sad_mask),开心表情涉及到三个区域所以可以使用一张遮罩图(T_BS_Smile_mask)来划分。
S15,采用浮点类型参数将遮罩贴图和皮肤颜色贴图集合融合为第一融合参数,采用浮点类型参数将遮罩贴图和法线贴图集合融合为第二融合参数;
其中,第一融合参数为颜色材质参数,第二融合参数为法线材质参数,材质参数和材质参数用于驱动和渲染虚拟角色的模型纹理。
通过贴图融合技术在UE材质中编写相关蓝图节点,将人物材质中使用到的遮罩贴图,皮肤颜色贴图以及法线贴图三者进行计算融合。皮肤颜色贴图集合包括基础的皮肤颜色贴图SkinColorTex,以及三张涉及到情绪的皮肤颜色贴图(angery_color,sad_color,smile_color),法线贴图集合包括四张法线贴图(NormalTex,angery_normal,sad_normal,smile_normal),分别为基础法线,以及三张涉及到情绪的法线。
在一个示例中,采用浮点类型参数将遮罩贴图和皮肤颜色贴图集合融合为第一融合参数包括:将浮点类型参数转换为四维向量;将四维向量与遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断第二运算值是否大于预设阈值;若第二运算值大于预设阈值,选择输出第一运算值;获取基础皮肤颜色贴图的第一RGB向量和N张情绪皮肤颜色贴图的第二RGB向量,其中,皮肤颜色贴图集合包括基础皮肤颜色贴图和N张情绪皮肤颜色贴图,N为大于1的整数;针对每张情绪皮肤颜色贴图的第二RGB向量,采用对应的第二RGB向量减去第一RGB向量,得到N个第三运算值;针对N个第三运算值中的每个第三运算值,分别与第一运算值进行乘法运算,得到N个第四运算值;对N个第四运算值进行相加,得到第五运算值;将第五运算值与第一RGB向量进行相加运算,得到第一融合参数。
在另一个示例中,采用浮点类型参数将遮罩贴图和法线贴图集合融合为第二融合参数包括:将浮点类型参数转换为四维向量;将四维向量与遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断第二运算值是否大于预设阈值;若第二运算值大于预设阈值,选择输出第一运算值;获取基础法线贴图的第一法线向量和N张情绪法线贴图的第二法线向量,其中,法线贴图集合包括基础法线贴图和N张情绪法线贴图;针对每张情绪法线贴图的第二法线向量,采用对应的第二法线向量减去第一法线向量,得到N个第六运算值;针对N个第六运算值中的每个第六运算值,分别与第一运算值进行乘法运算,得到N个第七运算值;对N个第七运算值进行相加,得到第八运算值;将第八运算值与第一法线向量进行相加运算,得到第二融合参数。
本实施例采用材质函数算法实现材质参数的融合,在此以情绪类型为“生气”进行举例说明,在蓝图中选取其中一张做举例说明,在情绪函数分支,采用Material angryfunction,输入为browDownLeft,browDownRight,mouthStretchLeft,mouthStretchRight为模型材质球上的浮点类型参数(其命名根据人物表情肌参数名字一一对应,方便后期表情肌与这些材质参数相关联),采用MakeFloat4材质函数,输入节点为四个浮点类型参数(其他不足四个浮点类型参数的,用0来补充计算),输出节点为一个四维向量,之后对这个四维向量做范围限制,采用蓝图中的Saturate节点,把输入的数值转换到0~1之间,因为很多UE节点只能接收数值为0~1的输入,所以需要限制。之后将新输出的四维向量分别和遮罩贴图中的RGBA(四个通道的数值)和1(单位向量)做点乘运算,之后将和单位向量做点乘运算得出的值作为if输入节点的A,if节点中B没有赋值则默认为0,如果和单位向量得出的点乘运算值大于0(B节点),则将四维向量和遮罩贴图中的RGBA(四个通道的数值)的点乘作为输出节点。由于生气涉及到两张这招贴图所以需要将两张遮罩贴图分别进行计算将得出的节点求和,在贴图混合计算的函数分支(Material Texture Blend function),采用一张基础的皮肤颜色贴图SkinColorTex,以及三张涉及到情绪的皮肤颜色贴图(angery_color,sad_color,smile_color),使用三张动态的皮肤贴图中的RGB三维向量减去基础的皮肤颜色贴图的RGB三维向量得出的向量,与之前遮罩贴图通过计算得出的向量进行乘法计算,对三张情绪颜色贴图依次进行上述计算之后将得出的三个向量相加得出新的向量与SkinColorTex中的RGB三维向量进行贴图相加融合计算。同样的,对四张法线贴图(NormalTex,angery_normal,sad_normal,smile_normal)进行如上计算。
S16,将第一融合参数和第二融合参数确定为面部材质球的材质参数。
在本实施例的一个实施方式中,采用表情肌参数和材质参数驱动虚拟角色的骨骼网格体包括:在虚拟角色的骨骼网格体上查找与表情肌参数和材质参数分别匹配的目标表情肌和目标材质球;采用表情肌参数驱动目标表情肌,以及采用目标材质参数配置目标材质球。
由于人物模型的表情肌和材质球都跟模型(骨骼网格体)自身相关联,在通过AI算法驱动人物面部表情修改表情肌参数时,修改对应的模型上材质球上的参数,在驱动人物面捕的过程中,人物模型上获取到表情肌各个参数的值,在表情肌参数值发生变化时,通过人物模型获取到当前使用的材质球,修改材质球上与表情肌相同参数名的变量值。
在驱动人物表情肌参数的过程中调整对应的材质参数,根据情绪类型划分与表情肌参数,相关的参数有11种,如表1所示。
在UE的界面上,人物骨骼网格体右侧的变形器目标为表情肌,左侧的MaterialSlots中的元素5为人物面部材质球,在驱动人物进行面捕时,使用到UE中的动画蓝图。右侧eyeBlinkLeft参数由0变为1时,人物面部模型上眼睛部分会发生相应的形变。
人物面捕的驱动是通过人物图像识别进行AI计算,将计算得出的结果对应到表情肌参数上,通过角色动画蓝图(UE中用来驱动人物动画的蓝图控件)来对受影响的表情肌参数进行修改。在修改对应表情肌参数时,在动画蓝图中获取当前使用的骨骼网格体,找到骨骼网格体上的面部材质球,修改材质球中的参数值,两类参数的关联的方式是通过参数名称,参数名称在表情肌和材质上命名一致。
在本实施例的一个实施方式中,在采用表情肌参数和材质参数驱动虚拟角色的骨骼网格体之前,还包括:创建虚拟角色的表情模板,其中,表情模板包括多个表情肌;确定嘴部口型的音素集合;针对音素集合中的每个音素,分别配置口型音素表情肌;将口型音素表情肌添加至表情模板。
现有的数字人实时面捕驱动使用的是52个blendshapes表情模板,对于人物嘴部口型的细节驱动不足,例如:发音中的aa,oh,e等音节。本实施例通过在3D建模软件中,基于“线变形,Cluster变形和Lattice变形”等各种Deformer创建表情目标体,然后用BlendShape创建融合变形达到生成表情的目的。将带有表情肌的模型导入到UE等类似引擎中之后,可以通过修改模型上对应的表情肌参数来驱动模型变化。参考人物头骨的基本构造和日常人物表情制作出相对应的52个表情肌,在不区分吐舌头时只需要51个就可以,而这51个表情肌可以通过AI图像识别将影像中人物面部数据转换为表情肌上对应的参数值来进行面捕驱动,除此之外,本实施例还加入了15个口型音素表情肌,通过语音识别将音频数据转换为表情肌参数值来对人物模型嘴部进行语音播报驱动。表2-1至表2-3示意了本实施例的表情模板:
表2-1
表情描述 |
对应参数名称 |
表情模板 |
|
眨左眼 |
eyeBlinkLeft |
眨右眼 |
eyeBlinkRight |
左眼下看 |
eyeLookDownLeft |
右眼下看 |
eyeLookDownRight |
左眼内看 |
eyeLookInLeft |
右眼内看 |
eyeLookInRight |
左眼外看 |
eyeLookOutLeft |
右眼外看 |
eyeLookOutRight |
左眼上看 |
eyeLookUpLeft |
右眼上看 |
eyeLookUpRight |
表2-2
表情描述 |
对应参数名称 |
表情模板 |
|
左眯眼 |
eyeSquintLeft |
右眯眼 |
eyeSquintRight |
左眼睁大 |
eyeWideLeft |
右眼睁大 |
eyeWideRight |
左斜视 |
cheekSquintLeft |
右斜视 |
cheekSquintRight |
下巴向前 |
jawForward |
下巴向左 |
jawLeft |
下巴向右 |
jawRight |
下巴张开 |
jawOpen |
闭嘴 |
mouthClose |
嘟嘴 |
mouthFunnel |
噘嘴 |
mouthPucker |
左嘴角 |
mouthLeft |
右嘴角 |
mouthRight |
嘴角左侧笑 |
mouthSmileLeft |
嘴角右侧笑 |
mouthSmileRight |
嘴角左皱眉 |
mouthFrownLeft |
嘴角右皱眉 |
mouthFrownRight |
嘴角左酒窝 |
mouthDimpleLeft |
嘴角右酒窝 |
mouthDimpleRight |
嘴角左侧拉伸 |
mouthStretchLeft |
嘴角右侧拉伸 |
mouthStretchRight |
翻下嘴唇 |
mouthRollLower |
翻上嘴唇 |
mouthRollUpper |
怂下嘴唇 |
mouthShrugLower |
怂上嘴唇 |
mouthShrugUpper |
嘴左侧压下 |
mouthPressLeft |
嘴右侧压下 |
mouthPressRight |
下嘴唇坐下 |
mouthLowerDownLeft |
下嘴唇右下 |
mouthLowerDownRight |
左上嘴唇 |
mouthUpperUpLeft |
右上嘴唇 |
mouthUpperUpRight |
表2-3
表情描述 |
对应参数名称 |
表情模板 |
|
眉心左上 |
browOuterUpLeft |
眉心右上 |
browOuterUpRight |
眉心朝上 |
browInnerUp |
眉毛左下 |
browDownLeft |
眉毛右下 |
browDownRight |
脸颊鼓起 |
cheekPuff |
鼻子左嘲讽 |
noseSneerLeft |
鼻子右嘲讽 |
noseSneerRight |
15个口型音素(对应发音) |
|
|
aa |
|
Oh |
|
pp |
|
E |
|
DD |
|
kk |
|
FF |
|
ih |
|
ou |
|
SS |
|
CH |
|
RR |
|
nn |
|
TH |
|
tongueOut |
采用本实施例的方案,一方面通过材质贴图混合,一方面通过表情肌参数融合材质参数,配置多种与口型相关的表情肌,可以优化数字人面捕的细节驱动,解决数字人面捕过程中细节效果不足等问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例
在本实施例中还提供了一种角色表情的驱动装置,用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是根据本发明实施例的一种角色表情的驱动装置的结构框图,如图4所示,该装置包括:获取模块40,解析模块42,计算模块44,驱动模块46,其中,
获取模块40,用于获取虚拟角色的面捕表情;
解析模块42,用于解析所述面捕表情的表情类型;
计算模块44,用于计算与所述表情类型匹配的表情肌参数,并计算与所述表情肌参数匹配的材质参数;
驱动模块46,用于采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体,以在所述虚拟角色上渲染所述面捕表情。
可选的,所述驱动模块包括:查找单元,用于在所述虚拟角色的骨骼网格体上查找与所述表情肌参数和所述材质参数分别匹配的目标表情肌和目标材质球;处理单元,用于采用所述表情肌参数驱动所述目标表情肌,以及采用所述目标材质参数配置所述目标材质球。
可选的,所述计算模块包括:第一查找单元,用于查找所述骨骼网格体的面部材质球;第二查找单元,用于在所述面部材质球上查找与所述表情肌参数匹配的浮点类型参数;获取单元,用于获取所述表情类型的遮罩贴图,以及获取所述面部材质球的皮肤颜色贴图集合和法线贴图集合;融合单元,用于采用所述浮点类型参数将所述遮罩贴图和所述皮肤颜色贴图集合融合为第一融合参数,采用所述浮点类型参数将所述遮罩贴图和所述法线贴图集合融合为第二融合参数;确定单元,用于将所述第一融合参数和所述第二融合参数确定为所述面部材质球的材质参数。
可选的,所述第二查找单元包括:读取子单元,用于读取所述表情肌参数的参数标识,其中,所述参数标识与所述表情肌参数作用的面部区域对应;截取子单元,用于截取所述参数标识的指定字段;搜索子单元,用于以所述指定字段为关键字,在所述面部材质球的材质参数集合中搜索命中所述指定字段的浮点类型参数。
可选的,所述融合单元包括:转换子单元,用于将所述浮点类型参数转换为四维向量;第一运算子单元,用于将所述四维向量与所述遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断子单元,用于判断所述第二运算值是否大于预设阈值;选择子单元,用于若所述第二运算值大于预设阈值,选择输出所述第一运算值;第一获取子单元,用于获取基础皮肤颜色贴图的第一RGB向量和N张情绪皮肤颜色贴图的第二RGB向量,其中,所述皮肤颜色贴图集合包括所述基础皮肤颜色贴图和所述N张情绪皮肤颜色贴图,N为大于1的整数;第二运算子单元,用于针对每张情绪皮肤颜色贴图的第二RGB向量,采用对应的第二RGB向量减去所述第一RGB向量,得到N个第三运算值;第三运算子单元,用于针对所述N个第三运算值中的每个第三运算值,分别与所述第一运算值进行乘法运算,得到N个第四运算值;第四运算子单元,用于对所述N个第四运算值进行相加,得到第五运算值;第一融合子单元,用于将所述第五运算值与所述第一RGB向量进行相加运算,得到第一融合参数。
可选的,所述融合单元包括:转换子单元,用于将所述浮点类型参数转换为四维向量;第一运算子单元,用于将所述四维向量与所述遮罩贴图的RGBA通道和单位向量分别进行点乘运算,得到第一运算值和第二运算值;判断子单元,用于判断所述第二运算值是否大于预设阈值;选择子单元,用于若所述第二运算值大于预设阈值,选择输出所述第一运算值;第二获取子单元,用于获取基础法线贴图的第一法线向量和N张情绪法线贴图的第二法线向量,其中,所述法线贴图集合包括所述基础法线贴图和所述N张情绪法线贴图;第五运算子单元,用于针对每张情绪法线贴图的第二法线向量,采用对应的第二法线向量减去所述第一法线向量,得到N个第六运算值;第六运算子单元,用于针对所述N个第六运算值中的每个第六运算值,分别与所述第一运算值进行乘法运算,得到N个第七运算值;第七运算子单元,用于对所述N个第七运算值进行相加,得到第八运算值;第二融合子单元,用于将所述第八运算值与所述第一法线向量进行相加运算,得到第二融合参数。
可选的,所述装置还包括:创建模块,用于在所述驱动模块采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体之前,创建所述虚拟角色的表情模板,其中,所述表情模板包括多个表情肌;确定模块,用于确定嘴部口型的音素集合;配置模块,用于针对所述音素集合中的每个音素,分别配置口型音素表情肌;添加模块,用于将所述口型音素表情肌添加至所述表情模板。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例
本申请实施例还提供了一种电子装置,图5是本发明实施例的一种电子装置的结构图,如图5所示,包括处理器102、通信接口52、存储器104和通信总线54,其中,处理器102,通信接口52,存储器104通过通信总线54完成相互间的通信,存储器104,用于存放计算机程序;
处理器102,用于执行存储器104上所存放的程序时,实现如下步骤:获取虚拟角色的面捕表情;解析所述面捕表情的表情类型;计算与所述表情类型匹配的表情肌参数,并计算与所述表情肌参数匹配的材质参数;采用所述表情肌参数和所述材质参数驱动所述虚拟角色的骨骼网格体,以在所述虚拟角色上渲染所述面捕表情。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的角色表情的驱动方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的角色表情的驱动方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。