三维局部人体模型的生成方法、装置及设备与流程

文档序号:18401051发布日期:2019-08-09 23:53阅读:248来源:国知局
三维局部人体模型的生成方法、装置及设备与流程

本公开涉及虚拟现实领域,具体涉及一种三维局部人体模型的生成方法、装置及设备。



背景技术:

在游戏行业和虚拟现实的推动下,数字化虚拟角色得到了大量的应用。对于虚拟角色,已经从单一的虚拟形象演变为玩家自主设计的角色,包括创造出独具个性的形象、选择合适的脸部妆容等等。

目前在角色生成过程中,通常通过架设大量的骨骼来调节模型的外形,但是这种方法难以同时调节模型的整体形状和局部细节。



技术实现要素:

本说明书一个或多个实施例的目的,即提供一种三维局部人体模型的生成方法、装置及设备。

第一方面,提供一种三维局部人体模型的生成方法,所述方法包括:

获取包括局部人体骨骼参数的三维局部人体模型的骨骼参数调整信息;

根据所述骨骼参数调整信息,调整所述局部人体骨骼参数;

根据调整后的所述局部人体骨骼参数,生成三维局部人体模型。

结合本公开提供的任一实施方式,所述获取包括局部人体骨骼参数的三维局部人体模型的骨骼参数调整信息包括:

接收骨骼参数调整指令;

根据所述骨骼参数调整指令确定所述骨骼参数调整信息。

结合本公开提供的任一实施方式,根据所述骨骼参数调整信息,调整所述局部人体骨骼参数,包括:

获取所述局部人体骨骼参数中,与所述骨骼参数调整信息相关联的至少一根局部人体骨骼的骨骼参数,根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数。

结合本公开提供的任一实施方式,至少一根局部人体骨骼为多根局部人体骨骼,根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数,包括:

根据所述骨骼参数调整信息同时调整所述多根局部人体骨骼的骨骼参数。

结合本公开提供的任一实施方式,根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数,包括:

获取所述骨骼参数调整信息的调节范围;

获取与所述骨骼参数调整信息相关联的每个骨骼参数的调节范围;

根据所述骨骼参数调整信息在调节范围内的变化比例调整与所述骨骼参数调整信息相关联的所述至少一根局部人体骨骼的骨骼参数。

结合本公开提供的任一实施方式,根据所述骨骼参数调整指令确定所述骨骼参数调整信息,包括:

获取针对所述骨骼参数调整指令设置的控件的输出变化量,根据所述输出变化量确定所述骨骼参数调整信息。

结合本公开提供的任一实施方式,所述三维局部人体模型包括人脸模型,所述方法还包括:

基于所述人脸模型的骨骼参数生成脸部贴图,所述脸部贴图包括多个与妆容对应的区域;

针对所述区域的参数获取相应妆容的可更换部件贴图;

将针对各个妆容选择的可更换部件贴图与所述脸部贴图进行合并,得到合并后的贴图;

将所述合并后的贴图映射到所述人脸模型上,生成所述人脸模型的脸部妆容。

结合本公开提供的任一实施方式,所述区域为矩形区域,所述矩形区域的参数包括宽度和高度;

针对所述区域获取相应妆容的可更换部件贴图,包括:

获取与所述矩形区域的宽度和高度相同的可更换部件贴图。

结合本公开提供的任一实施方式,所述区域为矩形区域,所述矩形区域的参数包括坐标横向偏移值和坐标纵向偏移值;所述可更换部件贴图包括透明度信息;

将针对各个妆容选择的可更换部件贴图与所述脸部贴图进行合并,包括:

按照可更换部件贴图对应的矩形区域的坐标横向偏移值和坐标纵向偏移值,将所述可更换部件贴图拷贝到相应的矩形区域;

将脸部贴图与所述可更换部件贴图按照所述透明度信息进行混合以实现所述合并。

结合本公开提供的任一实施方式,所述可更换部件贴图包括透明度信息;

针对所述区域获取相应妆容的可更换部件贴图,包括:

获取针对所述可更换部件选择的纹理信息;

通过将所述可更换部件贴图的透明度信息和所述纹理信息进行混合,生成带有纹理的可更换部件贴图。

结合本公开提供的任一实施方式,将所述合并后的贴图映射到所述人脸模型上,生成所述人脸模型的脸部妆容包括:

按照所述人脸模型的纹理坐标uv,将所述合并后的贴图映射到所述人脸模型上。

第二方面,提供一种三维局部人体模型的生成装置,所述装置包括:

获取单元,用于获取包括局部人体骨骼参数的三维局部人体模型的骨骼参数调整信息;

调整单元,用于根据所述骨骼参数调整信息,调整所述局部人体骨骼参数;

生成单元,用于根据调整后的所述局部人体骨骼参数,生成三维局部人体模型。

结合本公开提供的任一实施方式,所述获取单元具体用于:

接收骨骼参数调整指令;

根据所述骨骼参数调整指令确定所述骨骼参数调整信息。

结合本公开提供的任一实施方式,所述调整单元具体用于:

获取所述局部人体骨骼参数中,与所述骨骼参数调整信息相关联的至少一根局部人体骨骼的骨骼参数,根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数。

结合本公开提供的任一实施方式,至少一根局部人体骨骼为多根局部人体骨骼;

所述调整单元在用于根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数时,具体用于:

根据所述骨骼参数调整信息同时调整所述多根局部人体骨骼的骨骼参数。

结合本公开提供的任一实施方式,所述调整单元在用于根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数时,具体用于:

获取所述骨骼参数调整信息的调节范围;

获取与所述骨骼参数调整信息相关联的每个骨骼参数的调节范围;

根据所述骨骼参数调整信息在调节范围内的变化比例调整与所述骨骼参数调整信息相关联的所述至少一根局部人体骨骼的骨骼参数。

结合本公开提供的任一实施方式,所述调整单元在用于根据所述骨骼参数调整指令确定所述骨骼参数调整信息时,具体用于:

获取针对所述骨骼参数调整指令设置的控件的输出变化量,根据所述输出变化量确定所述骨骼参数调整信息。

结合本公开提供的任一实施方式,所述三维局部人体模型包括人脸模型;

所述装置还包括妆容生成单元,用于对于所述人脸模型生成脸部妆容,具体用于:

基于所述人脸模型的骨骼参数生成脸部贴图,所述脸部贴图包括多个与妆容对应的矩形区域;

针对所述矩形区域的参数获取相应妆容的可更换部件贴图;

将针对各个妆容选择的可更换部件贴图与所述脸部贴图进行合并,得到合并后的贴图;

将所述合并后的贴图映射到所述人脸模型上,生成所述人脸模型的脸部妆容。

结合本公开提供的任一实施方式,所述区域为矩形区域,所述矩形区域的参数包括宽度和高度;

所述妆容生成单元在用于针对所述区域获取相应妆容的可更换部件贴图时,具体用于:获取与所述矩形区域的宽度和高度相同的可更换部件贴图。

结合本公开提供的任一实施方式,所述区域为矩形区域,所述矩形区域的参数包括坐标横向偏移值和坐标纵向偏移值;所述可更换部件贴图包括透明度信息;

所述妆容生成单元在用于将针对各个妆容选择的可更换部件贴图与所述脸部贴图进行合并时,具体用于:

按照可更换部件贴图对应的矩形区域的坐标横向偏移值和坐标纵向偏移值,将所述可更换部件贴图拷贝到相应的矩形区域;

将脸部贴图与所述可更换部件贴图按照所述透明度信息进行混合以实现所述合并。

结合本公开提供的任一实施方式,所述可更换部件贴图包括透明度信息;

所述妆容生成单元在用于针对所述区域获取相应妆容的可更换部件贴图时,具体用于:

获取针对所述可更换部件选择的纹理信息;

通过将所述可更换部件贴图的透明度信息和所述纹理信息进行混合,生成带有纹理的可更换部件贴图。

结合本公开提供的任一实施方式,所述合并单元具体用于:

按照所述人脸模型的纹理坐标uv,将所述合并后的贴图映射到所述人脸模型上。

第三方面,提供一种三维局部人体模型的生成设备,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现本说明书任一所述的三维局部人体模型的生成方法。

第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本说明书任一所述的三维局部人体模型的生成方法。

本说明书一个或多个实施例的三维局部人体模型的生成方法、装置和设备,通过骨骼参数调整信息,调整局部人体骨骼参数,实现对局部人体中至少一个骨骼参数的同时调整,从而能够实现对模型的整体形状和局部细节的同时调整,既可以达到快速调整的目的,同时也能够进行精细调整。

附图说明

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

图1为本说明书至少一个实施例提供的基于骨骼建立的人脸模型的示例;

图2为本说明书至少一个实施例提供的一种三维局部人体模型的生成方法的示例;

图3为本说明书至少一个实施例提供的调节参数的设置方法示例;

图4为本说明书至少一个实施例提供的调节参数的设置示例;

图5a为本说明书至少一个实施例提供的用于调节双眼整体大小的调节参数设置方法示例;

图5b为本说明书至少一个实施例提供的用于调节双眼整体大小的控件示例;

图5c和图5d为本说明书至少一个实施例提供的调整前的人脸模型示例和调整后的人脸模型示例;

图6为本说明书至少一个实施例提供的更新人脸模型对应的融合变形数据的方法示例;

图7为本说明书至少一个实施例提供的生成脸部妆容的方法示例;

图8a为本说明书至少一个实施例提供的脸部贴图示例;

图8b为本说明书至少一个实施例提供的可更换部件的贴图示例;

图8c为本说明书至少一个实施例提供的合并的脸部贴图和可更换部件贴图的示例;

图9a和图9b为本说明书至少一个实施例提供的生成妆容前的人脸模型和生成妆容后的人脸模型;

图10a为本说明书至少一个实施例提供的一种三维局部人体模型的生成装置示例;

图10b为本说明书至少一个实施例提供的一种三维局部人体模型的生成装置示例;

图10c为本说明书至少一个实施例提供的一种三维局部人体模型的生成装置示例;

图11为本说明书至少一个实施例提供的一种三维局部人体模型的生成设备示例。

具体实施方式

为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。

在基于骨骼(bones)生成的模型中,每个骨骼可以具有多个参数。例如,可以包括以下中的至少一种:位移参数t、旋转参数r、缩放参数s。对于三维局部人体模型,例如人脸模型来说,每个骨骼的骨骼参数通常包括x轴、y轴、z轴的数值,因而可以使用bi=(tx,ty,tz,rx,ry,rz,sx,sy,sz)来表示模型的骨骼参数,其中,i=1、2…nb,nb为模型中所包含的骨骼数目。

图1示出了基于骨骼建立的人脸模型的示意图。该人脸模型是基于48根骨骼建立的骨架,并且在骨架的基础上进行了蒙皮处理所得到的模型,图1中的白色线条表示骨骼。

通过调整骨骼参数bi,可以使骨骼的位置、方向、大小中的一项或多项发生变化,从而能够改变模型的骨骼结构。以图1中的人脸模型为例,其包含了48根骨骼,而每个骨骼具有9个参数,也即用户可以调节48*9个参数。

基于此,本说明书至少一个实施例提供了一种三维局部人体模型的生成方法,如图2所示为该生成方法的一个实施例流程,该方法可以包括:

在步骤201中,获取包括局部人体骨骼参数的三维局部人体模型的骨骼参数调整信息。

在本实施例中,可以通过接收骨骼参数调整指令,并根据所述骨骼参数调整指令确定所述骨骼参数调整信息。

获取的骨骼参数调整信息,至少可以是以下中的一种:一个变化量、或者相对变化量或者变化比例。

在步骤202中,根据所述骨骼参数调整信息,调整所述局部人体骨骼参数。

在本步骤中,基于所述骨骼参数调整信息中所包含的变化量、或者相对变化量或者变化比例,对局部人体骨骼参数进行调整,以使所述骨骼参数发生对应的变化,例如增加/减少相应的变化量或相对变化量,或者增加/减少相应的变化比例。在对局部人体骨骼参数进行调整后,可以得到调整后的一组骨骼参数。

在步骤203中,根据调整后的所述局部人体骨骼参数,生成三维局部人体模型。

局部人体骨骼参数得到了调整,也即三维局部人体模型的骨骼得到了调整,从而改变了模型的骨骼结构,得到了想要的三维局部人体模型。

本实施例的三维局部人体模型的生成方法,可以用于生成例如头部(人脸)、手部、躯干等局部人体模型,也可用于对人体模型进行局部的调整。

在本实施例中,通过骨骼参数调整信息,调整局部人体骨骼参数,实现对局部人体中至少一个骨骼参数的同时调整,从而能够实现对模型的整体形状和局部细节的同时调整,既可以达到快速调整的目的,同时也能够进行精细调整。

如下的描述中,将对三维局部人体模型的生成方法进行更详细的描述。其中,下文以人脸模型为例描述该方法。但是可以理解的是,其他场景同样可以应用该三维局部人体模型生成方法,例如,其他局部人体模型的生成、人体模型的生成、动物模型的生成,以及其他基于骨骼建立的模型。

在应用本实施例的方法进行三维局部人体模型的生成时,可以预先设置用于调节三维局部人体模型的骨骼参数的调节参数。该调节参数是上述骨骼参数调整信息的一种具体实施方式。

该调节参数是基于三维局部人体模型的骨骼参数设置的,因此,首先可以获得人脸模型的骨骼参数。

人脸模型的骨骼参数例如可以为bi=(tx,ty,tz,rx,ry,rz,sx,sy,sz),其中,i=1、2…nb,nb为人脸模型中所包含的骨骼数目。通过调整骨骼参数bi,可以使骨骼的位置、方向、大小中的一项或多项发生变化,从而能够改变模型的骨骼结构。但由于可调节参数的自由度过高时,会导致用户调节局部细节的难度过高。因此,在本实施中设置三维局部人体模型的骨骼参数的调节参数,以对骨骼进行调整。

该调节参数与局部人体中的至少一根骨骼的参数相关联。此处的相关联是指,改变调节参数时,所述至少一根骨骼的一个或多个参数可以同时发生变化。因此,该调节参数可以看作是与其相关联的骨骼参数的调节器(controller)。该至少一根骨骼,可以是属于局部人体中的其中一个局部区域的骨骼。

在一个示例中,可以通过以方法实现上述调节参数的设置。

如图3所示,该方法可以包括:

在步骤301中,获取与所述调节参数相关联的骨骼。

每一个调节参数与哪些骨骼相关联,可以是预先设定的。通过获取与该调节参数相关联的骨骼,也即可以确定在调节该调节参数时,哪些骨骼会同时得到调整。

对于每一个调节参数,可以将一个局部区域内的多根骨骼的参数与该调节参数建立关联。其可以是该局部区域内的全部骨骼,也可以将其中的部分骨骼。例如,对于用于调整双眼整体大小的眼部骨骼调节器,假设眼部区域共有e1个骨骼,但只需要对其中的e2个骨骼进行调整(e2<e1),即能够控制眼睛大小的变化,那么该眼部骨骼调节器只需控制这e2个骨骼。如图5a所示,通过将用于调整双眼整体大小的眼部骨骼调节器与骨骼eye_01、eye_02、eye_03(eye_01、eye_02、eye_03表示眼部区域的骨骼)的参数相关联,使该眼部骨骼调节器能够控制这三个骨骼。

在步骤302中,获取每个所述骨骼的骨骼参数中,与所述调节参数相关联的骨骼参数。

对于与上述调节参数相关联的每一个骨骼,调节参数可以控制其全部9个参数,也可以控制其中的一个或多个参数。对于各个骨骼的哪些参数与调节参数相关联,可以是预先设定的。

以图4所示为例,controller1,controller2,…,controllerm为各个调节器,其中,m是调节器的数目,其中的调节器controller1可以控制三个骨骼bone1、bone2、bone3,controller1可以控制的每个骨骼的参数如下:bone1的平移参数(tx,ty),bone2的缩放参数(sx,sy,sz),bone3的旋转参数(ry)。也即,通过调整controller1的调节参数,可以同时调整这三个骨骼的上述参数。

在步骤303中,将各个与所述调节参数相关联的骨骼参数设置为,根据所述调节参数的变化,同时调整所述骨骼参数。

在确定了与调节参数相关联的骨骼参数后,通过将每个骨骼参数设置为,根据该调节参数的变化而同时调整骨骼参数,从而实现了调节参数对相关联的骨骼参数的控制。根据该调节参数的变化而同时调整骨骼参数,可以是对于与该调节参数相关联的多个骨骼参数,以与调节参数相同的变化比例对其进行调整。例如,调节参数的值的调整幅度为增加1/10,与其相关联的多个调节参数的值的调整幅度也同时增加1/10。

在一个示例中,可以通过以下方法实现调节参数对骨骼参数的调整。该方法包括:

首先,获取所述调节参数的变化范围。该变化范围可以是预先设定的,由于该范围用于确定调节参数的相对变化量,因此其具体范围的设定对本公开技术方案的实现并没有影响。

接下来,获取与所述调节参数相关联的每个骨骼参数的变化范围。该变化范围可以是预先设定的,其可以根据实际需要调节的骨骼的位移、方向、距离等,具体设置骨骼参数的变化范围。如果一个骨骼参数的变化范围是0,则表明这个参数是不能调整的,也即不受该调节参数的控制。

之后,将各个与所述调节参数相关联的骨骼参数设置为,根据所述调节参数在其变化范围内的变化比例,在骨骼参数的变化范围内同时进行相同比例的变化。此处所说的变化比例,也可以用相对变化量来表示。举例来说,对于图4中的controller1,如果其调节参数的变化范围是[0,1],当调节参数值从0.2变化到0.3,那么相对变化量即为即是1/10,也即变化比例为1/10。那么,与controller1相关联的bone1、bone2、bone3的骨骼参数的值则同时上浮调整1/10。由此,实现调节参数对与其相关联的骨骼参数的同时调整。以上骨骼参数随调节参数的等比例变化,可以通过线性插值算法来实现。

本领域技术人员应当理解,也可以针对不同骨骼参数设置不同的变化方式,例如,当controller1的调节参数值从0.2变化到0.3,其可以将bone1的骨骼参数向上调整1/10,而将bone2和bone3的骨骼参数向上调整1/5。也就是说,可以使不同的骨骼参数产生不同的变化趋势。应当理解的是,当调节参数值从0变化到1时,各个骨骼参数也相应地在各自的变化区间内从最小值变化到最大值,只是各个骨骼参数的变化过程可以是不同的。以上不同骨骼参数随调节参数以不同趋势进行变化,可以通过非线性插值算法来实现。

在本公开的至少一个实施例中,获取所述骨骼参数调整信息包括:

接收骨骼参数调整指令;

根据所述骨骼参数调整指令确定所述骨骼参数调整信息。

其中,所述骨骼参数调整指令可以指对所述调节参数的调整指令。根据所述调节参数的调整指令,可以确定所述骨骼参数调整信息。

在本公开的至少一个实施例中,在获取所述骨骼参数调整信息后,获取与所述骨骼参数调整信息相关联的至少一根局部人体骨骼的骨骼参数,也即与所述调节参数相关联的至少一根局部人体骨骼的骨骼参数,根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数。

在所述至少一根局部人体骨骼为一根骨骼的情况下,根据所述骨骼参数调整信息调整该骨骼的骨骼参数;在所述至少一根局部人体骨骼为多根骨骼,例如可以是,多根头部骨骼,的情况下,根据所述骨骼参数调整信息同时调整所述多根局部人体骨骼的骨骼参数。

在一个示例中,根据所述骨骼参数调整信息调整所述至少一根局部人体骨骼的骨骼参数,可以包括:

获取所述骨骼参数调整信息的调节范围;

获取与所述骨骼参数调整信息相关联的每个骨骼参数的调节范围;

根据所述骨骼参数调整信息在调节范围内的变化比例调整与所述骨骼参数调整信息相关联的所述至少一根局部人体骨骼的骨骼参数。

在一个示例中,可以预先针对骨骼参数调整指令设置控件,例如滑杆,通过操作该控件来产生调节参数的调整指令。在生成模型时,通过获取该控件的输出变化量,即获取了与调整指令对应的骨骼参数调整信息,从而能够对相关联的骨骼参数进行调整。

下面以图5a调节双眼整体大小为例具体说明调节参数对人脸模型的控制。

例如,将用于调节双眼整体大小的调节器controller1_eye的参数变化范围设置为[0,1],也即其调节参数值可以是[0,1]间的任意值,通过操作滑杆可以使其调节参数值在此区间发生变化,如图5b所示。

调节器controller1_eye可以控制眼部区域的三个骨骼eye_01、eye_02、eye_03,调节器controller1_eye可以控制的每个骨骼的参数如下:骨骼eye_01的缩放参数(sx,sy,sz)、骨骼eye_02的缩放参数(sx,sy,sz)、骨骼eye_03的缩放参数(sx,sy,sz),每个参数的调节范围均为[-1,1],也即各个参数值可以是该区间内的任意数值。这三个骨骼的其他参数的调节范围为0,也即不能通过调节器controller1_eye进行调整,并且不显示在控制列表中。

通过操纵调节器controller1_eye的滑杆,使其调节参数值发生变化,并获取该数值。然后利用该数值将调节器controller1_eye对应的上述三个骨骼的参数在对应的调节范围内进行线性插值,得到每个参数调节后的数值。也即,基于调节器controller1_eye在其参数范围内的变化,使关联的骨骼参数值在其调节范围内发生等比例的变化。由此则实现了对双眼整体大小的调节。图5c示出了原双眼整体大小示意图,其中,左部各个边框表示骨骼参数,分别为头部整体参数(head_all_p_n)、左部脸颊整体参数(cheek_p_l)、左部脸颊参数(cheek_01_p_l、cheek_02_p_l、cheek_03_p_l)、右部脸颊整体参数(cheek_p_r)右部脸颊参数(cheek_01_p_r、cheek_02_p_r、cheek_03_p_r)、眼部整体参数(eye_p_l)、眼部参数(eye_01_p_l、eye_02_p_l、eye_03_p_l、eye_04_p_l、),右部为各个调节器的滑杆控件。例如通过操纵图5b所示的滑杆,使其调节参数值变小,得出了图5d所示的双眼整体变小的效果。本领域技术人员应当知晓,图5c~图5d显示的是在骨架图的基础上进行了蒙皮得到的三维模型,但从中可以体现出骨骼变化所产生的效果。

在一个示例中,在得到调整的骨骼是对称骨骼的情况下,与所调整的骨骼对称的骨骼的参数对应地变化。如图2所示,人脸的骨骼大部分是对称的,对于对称骨骼,在对一边进行调整的情况下,另一边的骨骼也会随之变化。也就是说,对称骨骼的参数之间是相关联的,其中一个的参数发生了变化,另一个的参数也会对应地变化。

通过使对称骨骼对应地变化,在减少了调节步骤的情况下,有利于保持人脸的对称性。

本公开中所说的区部区域,可以是一个区域,也可以是相应的调节器能够实现某一些效果需要控制的区域。可以将一个调节器的调节参数所能实现的效果,对该调节参数所对应的控件进行命名。如图5c~图5d所示,包含了“眉毛左右”、“眉毛上下”等命名的控件,直观地体现了该控件能够实现的效果,便于用户进行操作。

在基于调整后的骨骼参数生成了人脸模型后,存在能否适配标准融合变形(blendshape)数据,以正常运行表情的问题。blendshape可以被称为融合变形器,其是用于制作人脸模型的面部表情的工具。

由于标准融合变形数据是基于标准脸制作的,而本公开中对于初始的骨骼参数(可以是标准脸对应的骨骼参数)进行了调整。此处所说的标准脸,是指相关技术中通常使用的利用默认参数生成的标准脸模型。为了便于区分描述,在下文中,不妨将该标准脸模型对应的骨骼参数称为第一骨骼参数、其所对应的融合变形数据称为第一融合变形数据,并将本公开中利用上文所述方法生成的人脸模型对应的骨骼参数称为第二骨骼参数,其所对应的融合变形数据称为第二融合变形数据。

以下实施例中提出了一种人脸模型对应的融合变形数据更新的方法。

该方法主要包括:获取标准脸模型对应的第一骨骼参数和第一融合变形数据;获取调整后的人脸模型对应的第二骨骼参数;基于所述第二骨骼参数和所述第一骨骼参数之间的变换关系,通过所述第一融合变形数据,获得与所述调整后的人脸模型对应的第二融合变形数据。

在一个示例中,更新人脸模型对应的融合变形器数据的方法如图6所示,可以包括:

在步骤601中,基于所述第一融合变形数据和所述第一骨骼参数,获得所述第一融合变形数据相对应的第一网格数据。

首先,获得与所述标准脸模型的第一骨骼参数对应的标准网格数据,该标准网格数据可以包括标准脸模型的骨骼所对应的网格顶点数据。

由于融合变形器中存储的是表情所对应的网格数据与标准网格数据之间的差值,因此,在获得了标准网络数据之后,通过将其与第一融合变形器(第一融合变形数据所对应的融合变形器)中所存储的差值相加,即能够还原出第一融合变形器所对应的第一网格数据。

举例来说,假设标准脸模型所对应的标准网格数据,可以是向量[1,1,1,…,1,1];一个用于控制眼睛大小的融合变形器,其所存储的融合变形数据可以是向量[0,0,0.5,…,0,0](两个向量大小相同)。当运行该融合变形器时,通过将上述融合变形数据与标准网格数据相加,即能够在标准脸上得到眼睛变大的效果。也即,标准网络数据与融合变形数据相加所得到的向量[1,1,1.5,…,1,1]即是眼睛变大这一表情所对应的第一网格数据。本领域技术人员应当理解,以上网格数据格式仅用于示意,并不限止本公开中网格数据格式。

在步骤602中,基于所述第二骨骼参数与所述第一骨骼参数,获得所述调整后的人脸模型中所有骨骼的变换矩阵。

在前述人脸模型与标准脸模型之间遍历所有骨骼,可以获得相应的变换矩阵,也即人脸模型中每个骨骼的变换矩阵。

在一个示例中,可以通过以下方法获得每个骨骼的变换矩阵:

首先基于所述标准脸对应的第一骨骼参数,获取标准脸模型中每个骨骼的位置矩阵。

接下来,基于人脸模型所对应的第二骨骼参数,也即基于前述调整后的骨骼参数,获取人脸模型中每个骨骼的位置矩阵。

将上述标准脸模型对应的骨骼的位置矩阵除以上述人脸模型对应的骨骼的位置矩阵,即可以得到每个骨骼的变换矩阵。

例如,可以通过以下公式计算获得骨骼的变换矩阵:

t=tnew*inverse(tnormal)(1)

其中,t表示骨骼的变换矩阵,tnew表示标准脸模型对应的骨骼的位置矩阵,tnormal表示人脸模型对应的骨骼的位置矩阵,inverse()表示对矩阵求逆。

在步骤603中,将所述变换矩阵应用于所述第一网格数据,获得所述人脸模型对应的第二网格数据。

将骨骼的变换矩阵应用到步骤601中得到的第一网格数据,得到新的网格顶点数据。其主要利用了骨架蒙皮的思想,根据骨架的变化状态以及各网格顶点的绑定信息计算出新的网格顶点坐标,即人脸模型所对应的第二网格数据。例如可以利用如下公式进行计算:

其中,vertexnew,vertexori分别表示网格新的顶点和初始的顶点,k表示该顶点受k个骨骼影响,ti和weighti分别表示骨骼变换矩阵和对应的权重。

在步骤604中,将所述第二网格数据减去所述第一网格数据,得到所述调整后的人脸模型对应的第二融合变形数据。

仍以用于控制眼睛大小的融合变形器为例,在步骤601中所得到的第一网格数据,是获得眼睛变大效果所对应的网格数据。将步骤602中得到的骨骼的变换矩阵应用于该网格数据,所得到的第二网格数据,对应于获得眼睛变大效果的人脸模型。通过将该第二网格数据减去该第一网格数据,所得到的第二融合变形器数据,即是人脸模型所对应的融合变形器中存储的数据。

在本实施例中,在生成新的角色模型后,通过将骨骼的变换矩阵同步应用到标准脸模型对应的融合变形器进行更新,使其与新的角色模型相适配以能够运行,提高表情驱动的准确性。

本领域技术人员应当理解,本实施例中的更新融合变形数据的方法,不限于应用于前文所述的三维局部人体模型的生成方法所生成的人脸模型,其可以用于任意捏脸后模型、相对于捏脸前融合变形数据的更新。对于捏脸后模型的融合变形数据更新,在其变换矩阵中,tnew表示捏脸后模型对应的骨骼的位置矩阵,tnormal表示捏脸前模型对应的骨骼的位置矩阵。

对于所生成的人脸模型,通常采用模型分割的方式生成自定义妆容,在角色模型的基础上为每个可更换部件分离出一个单独的模型,但由于这种方式渲染阶段导致多个cpu调用图形编程接口(drawcall),因此会严重影响程序的性能。

基于此,以下实施例中,提出一种对于所生成的人脸模型生成脸部妆容的方法,如图7所示,可以包括:

在步骤701中,基于所述人脸模型的骨骼参数生成脸部贴图。

在本步骤中,可以根据所述人脸模型的骨骼参数生成脸部贴图。该脸部贴图可以包括多个与妆容对应的区域,对于不同的骨骼参数,各个矩形区域的大小和位置通常是不同的。此处所说的妆容,指对于人脸模型来说可更换的部分,例如,眉毛、腮红、嘴唇、胡子等等,而非所生成的模型中已具有的、不可替换的部分。本领域技术人员应当理解,可更换的部分不限于以上所述,还可以包括其他的脸部妆容。

本领域技术人员应当理解,该脸部贴图也可以是其他方式制作、生成的脸部贴图,并不限于基于上述人脸模型的骨骼参数生成。

如图8a所示,在该脸部贴图中包括了眉毛、腮红、嘴唇或嘴唇和胡子所对应的矩形区域。其中,每个矩形区域可以包括以下参数中的至少一个:宽度、高度、坐标横向偏移、坐标纵向偏移值。

本领域技术人员应当理解,该区域也可以是其他形状的区域,并不限于是矩形区域。

在步骤702中,针对所述区域获取相应妆容的可更换部件贴图。

以矩形区域为例,在本步骤中,可以根据矩形区域的参数制作、生成相应妆容的可更换部件贴图,也可调用、导入相应的贴图。贴图的示例参见图8b所示,其中,各个可更换部件的贴图与相应矩形区域的宽度和高度一致。

其中,各个可更换部件的贴图的颜色可以改变,并且,也可以使贴图附加一层细节纹理。

在一个示例中,可以通过将可更换部件贴图的透明度信息和纹理信息进行混合,生成所述可更换部件贴图的纹理。该纹理信息是针对可更换部件的贴图所选择的纹理信息,其混合公式如下:

其中,colorfinal表示贴图最终表现出的颜色,colorbase表示alpha!=1时显示脸部贴图的颜色,colordetail表示alpha==1时显示可更换部件贴图的颜色。

在步骤703中,将针对各个妆容选择的可更换部件贴图与所述脸部贴图进行合并,得到合并后的贴图。

在一个示例中,可以通过以下方式将各个妆容的可更换部件贴图与脸部贴图进行合并:

按照可更换部件贴图对应的矩形区域的坐标横向偏移值和坐标纵向偏移值,将所述可更换部件贴图拷贝到脸部贴图相应的矩形区域;将脸部贴图与所述可更换部件贴图按照按照透明度信息进行混合。所述透明度信息为所述可更换部件贴图的透明度信息。

在一个示例中,可以首先将脸部贴图拷贝到渲染纹理(rendertexture)中,之后将各个可更换部件贴图拷贝到脸部贴图相应的矩形区域,利用渲染纹理实现可更换部件贴图与脸部贴图的合并。

在一个示例中,可以将脸部贴图及其对应的光照模型(shader)共同拷贝到渲染纹理中。

可更换部件贴图与脸部贴图合并后的结果如图8c所示。

在步骤704中,将所述合并后的贴图映射到所述人脸模型上,生成所述人脸模型的脸部妆容。

在一个示例中,可以首先将所述脸部贴图渲染到一个帧缓冲对象(framebufferobject)上,根据所述人脸模型的纹理坐标uv,将该帧缓冲对象关联到gpu上人脸模型所对应的贴图对象上,从而实现所述合并后的贴图到所述人脸模型的映射。

图9a示出了初始的人脸模型,图9b示出了通过上述方法生成脸妆容后的人脸模型。

在本实施例中,通过生成脸部贴图和与脸部贴图各矩形区域对应的妆容的可更换贴图,利用先合并再绘制的方法,提高了渲染效率。

图10a提供了一种三维局部人体模型的生成装置,如图10a所示,该装置可以包括:

获取单元1001,用于获取包括局部人体骨骼参数的三维局部人体模型的骨骼参数调整信息;

调整单元1002,用于根据所述骨骼参数调整信息,调整所述局部人体骨骼参数;

生成单元1003,用于根据调整后的所述局部人体骨骼参数,生成三维局部人体模型。

图10b提供了另一种三维局部人体模型的生成装置,如图10b所示,该装置还可以包括:更新单元1006,用于基于预先获得的标准脸模型对应的第一骨骼参数和第一融合变形数据,以及所述人脸模型所对应的第二骨骼参数,获得所述人脸模型对应的第二融合变形数据。

图10c提供了另一种三维局部人体模型的生成装置,如图10c所示,该装置还可以包括:妆容生成单元1006,用于对于所述人脸模型生成脸部妆容,具体用于:

基于所述人脸模型的骨骼参数生成脸部贴图,所述脸部贴图包括多个与妆容对应的区域;

针对所述区域的参数获取相应妆容的可更换部件贴图;

将针对各个妆容选择的可更换部件贴图与所述脸部贴图进行合并,得到合并后的贴图;

将所述合并后的贴图映射到所述人脸模型上,生成所述人脸模型的脸部妆容。

图11为本说明书至少一个实施例提供的三维局部人体模型的生成设备,如图11所示,该设备可以包括存储器1101、处理器1102,所述存储器1101用于存储可在处理器上运行的计算机指令,所述处理器1102用于在执行所述计算机指令时实现本说明书任一实施例所述的三维局部人体模型的生成方法。

本说明书至少一个实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本说明书任一所述的三维局部人体模型的生成方法。

本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据处理设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的行为或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。

本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如fpga(现场可编程门阵列)或asic(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。

适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏操纵台、全球定位系统(gps)接收机、或例如通用串行总线(usb)闪存驱动器的便携式存储设备,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如eprom、eeprom和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及cdrom和dvd-rom盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

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