基于立体动画的人脸表情生成方法和装置与流程

文档序号:14992101发布日期:2018-07-20 22:27阅读:179来源:国知局

本发明涉及图像处理技术领域,尤其涉及一种基于立体动画的人脸表情生成方法和装置。



背景技术:

3d游戏,因其具有逼真的场景和角色,可以提升用户的代入感,因而广受用户欢迎。现有技术中,在制作3d游戏中的人物的表情时,通过骨骼动画技术,在人脸的3d模型上绑定骨骼,利用骨骼运动来驱动人脸的3d模型动画。或者,通过序列帧动画技术,绘画表情画面,将绘画好的画面进行合并,生成序列帧,而后从序列帧中确定目标画面,进而将目标画面组合成表情动画。

第一种方式下,由于3d模型由三角面组成,为了获取更好的展示效果,3d模型需要包含较多的三角面的个数,极大地增加了骨骼数,因此,利用骨骼动画技术生成人脸表情的效率较低。第二种方式下,利用序列帧动画技术生成人脸表情时,需要绘画较多的表情画面,同样导致人脸表情生成的效率较低。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明提出一种基于立体动画的人脸表情生成方法,以实现将立体模型与序列帧进行结合,只需在立体模型的一些区域上,例如五官区域上贴图序列帧中的表情画面,而无需构建较多的三角面的个数,在表现丰富的表情的基础上,能够提升人脸表情的生成效率。此外,立体模型便于连续展示的特性,可以弥补当序列帧中表情画面较少时而出现的跳帧现象,从而可以保证生成的表情的展示效果,用于解决现有技术中人脸表情生成效率较低的技术问题。

本发明提出一种基于立体动画的人脸表情生成装置。

本发明提出一种计算机设备。

本发明提出一种计算机可读存储介质。

本发明一方面实施例提出了一种基于立体动画的人脸表情生成方法,包括:

获取局部人脸的序列帧;其中,所述序列帧中包含的各画面分别呈现不同表情时的局部人脸;

获取人脸的立体模型;

从所述序列帧中获取所需表情对应的目标画面;

将所述人脸的立体模型中对应所述局部人脸的区域与所述目标画面进行融合,得到人脸表情。

本发明实施例的基于立体动画的人脸表情生成方法,通过获取局部人脸的序列帧以及人脸的立体模型,其中,序列帧中包含的各画面分别呈现不同表情时的局部人脸,而后从序列帧中获取所需表情对应的目标画面,将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。本实施例中,通过将立体模型与序列帧进行结合,只需在立体模型的一些区域上,例如五官区域上贴图序列帧中的表情画面,而无需构建较多的三角面的个数,在表现丰富的表情的基础上,能够提升人脸表情的生成效率。此外,立体模型便于连续展示的特性,可以弥补当序列帧中表情画面较少时而出现的跳帧现象,从而可以保证生成的表情的展示效果。

本发明又一方面实施例提出了一种基于立体动画的人脸表情生成装置,包括:

第一获取模块,用于获取局部人脸的序列帧,以及获取人脸的立体模型;其中,所述序列帧中包含的各画面分别呈现不同表情时的局部人脸;

第二获取模块,用于从所述序列帧中获取所需表情对应的目标画面;

处理模块,用于将所述人脸的立体模型中对应所述局部人脸的区域与所述目标画面进行融合,得到人脸表情。

本发明实施例的基于立体动画的人脸表情生成装置,通过获取局部人脸的序列帧以及人脸的立体模型,其中,序列帧中包含的各画面分别显现不同表情时的局部人脸,而后从序列帧中获取所需表情对应的目标画面,将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。本实施例中,通过将立体模型与序列帧进行结合,只需在立体模型的一些区域上,例如五官区域上贴图序列帧中的表情画面,而无需构建较多的三角面的个数,在表现丰富的表情的基础上,能够提升人脸表情的生成效率。此外,立体模型便于连续展示的特性,可以弥补当序列帧中表情画面较少时而出现的跳帧现象,从而可以保证生成的表情的展示效果。

本发明又一方面实施例提出了一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如本发明前述实施例所述的基于立体动画的人脸表情生成方法。

本发明又一方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明前述实施例所述的基于立体动画的人脸表情生成方法。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为3d模型中骨骼示意图;

图2为本发明实施例一所提供的基于立体动画的人脸表情生成方法的流程示意图;

图3a为本发明实施例中眼部的序列帧示意图;

图3b为本发明实施例中嘴部的序列帧示意图;

图4a为本发明实施例中骨骼示意图;

图4b为本发明实施例中创建骨骼动画形式的人脸的立体模型示意图;

图5为本发明实施例二所提供的基于立体动画的人脸表情生成方法的流程示意图;

图6为本发明实施例三所提供的基于立体动画的人脸表情生成方法的流程示意图;

图7a为表情动画管理器工具界面示意图一;

图7b为表情动画管理器工具界面示意图二;

图7c为表情动画管理器工具界面示意图三;

图8a为3dmax界面示意图一;

图8b为3dmax界面示意图二;

图9为本发明实施例中脸部的序列帧示意图;

图10为unity的界面示意图;

图11为本发明实施例中生成的人脸表情示意图;

图12为本发明实施例提供的一种基于立体动画的人脸表情生成装置的结构示意图;

图13为本发明实施例提供的另一种基于立体动画的人脸表情生成装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

现有技术中,在制作3d游戏中的人物的表情时,通过骨骼动画技术,在人脸的3d模型上绑定骨骼,利用骨骼运动来驱动人脸的3d模型动画。例如,参见图1,图1为3d模型中骨骼示意图。其中,虚线框为骨骼,可以通过骨骼运动来驱动3d模型中五官运动,从而生成不同的表情。或者,通过序列帧动画技术,绘画表情画面,将绘画好的画面进行合并,生成序列帧,而后从序列帧中确定目标画面,进而将目标画面组合成表情动画。

第一种方式下,由于3d模型由三角面组成,为了获取更好的展示效果,3d模型需要包含较多的三角面的个数,极大地增加了骨骼数,因此,利用骨骼动画技术生成人脸表情的效率较低。此外,当在电子设备侧(例如智能手机、pad等)生成人连表情时,由于3d模型需要包含较多的三角面的个数,将带来较大的性能消耗,导致电子设备卡顿、发热。

第二种方式下,利用序列帧动画技术生成人脸表情时,需要绘画较多的表情画面,同样导致人脸表情生成的效率较低。此外,由于性能限制,用户只能画出关键帧,而缺少中间帧,导致生成的表情动画跳帧明显,表现力不足,从而导致展示效果较差。

针对现有技术中人脸表情生成效率较低以及序列帧中表情画面较少时出现的跳帧现象的技术问题,本发明实施例中,通过获取局部人脸的序列帧以及人脸的立体模型,其中,序列帧中包含的各画面分别呈现不同表情时的局部人脸,而后从序列帧中获取所需表情对应的目标画面,将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。本实施例中,通过将立体模型与序列帧进行结合,只需在立体模型的一些区域上,例如五官区域上贴图序列帧中的表情画面,而无需构建较多的三角面的个数,在表现丰富的表情的基础上,能够提升人脸表情的生成效率。此外,立体模型便于连续展示的特性,可以弥补当序列帧中表情画面较少时而出现的跳帧现象,从而可以保证生成的表情的展示效果。

下面参考附图描述本发明实施例的基于立体动画的人脸表情生成方法和装置。

本发明实施例以该基于立体动画的人脸表情生成方法被配置于基于立体动画的人脸表情生成装置中来举例说明,该基于立体动画的人脸表情生成装置可以用于生成角色模型的脸部表情,例如可以生成3d游戏中角色模型的脸部表情。

图2为本发明实施例一所提供的基于立体动画的人脸表情生成方法的流程示意图。

如图2所示,该基于立体动画的人脸表情生成方法包括以下步骤:

步骤101,获取局部人脸的序列帧;其中,序列帧中包含的各画面分别呈现不同表情时的局部人脸。

可以理解的是,人脸的表情丰富,而人脸的表情主要通过五官来表现,因此,局部人脸可以包括五官,例如,人脸的表情主要通过脸、眼部、嘴部来表现,因此局部人脸可以包括:人脸、嘴部和眼部。当局部人脸包括五官时,序列帧为多个,且每一序列帧对应人脸五官中的一个。

本发明实施例中,序列帧中包含多个画面,每个画面分别显现不同表情时的局部人脸。例如,当局部人脸为眼部时,眼部对应的序列帧中可以包含多个呈现眼部不同表情时的画面。

作为一种示例,参见图3a,图3a为本发明实施例中眼部的序列帧示意图。其中,眼部的序列帧包括8个画面,每个画面分别显现不同表情时的眼部。

作为另一种示例,参见图3b,图3b为本发明实施例中嘴部的序列帧示意图。其中,嘴部的序列帧包括6个画面,每个画面分别显现不同表情时的嘴部。

可选地,对于五官中的每个器官,可以预先绘制该器官的关键帧画面,例如,绘制该器官在喜怒哀乐等表情下的关键帧画面,而后将绘制好的关键帧画面组合成序列帧。在绘制好序列帧后,本发明实施例的基于立体动画的人脸表情生成装置可以获取序列帧。

步骤102,获取人脸的立体模型。

本发明实施例中,可以获取人脸的立体模型,而后根据人脸的立体模型和序列帧,生成人脸表情。

作为一种可能的实现方式,可以创建骨骼动画形式的人脸的立体模型。可选地,为了减少立体模型的三角面的个数,从而提升表情的生成效率,本发明实施例中,可以仅在眼部周围以及下颌位置绑定骨骼,具体地,可以将脸部皮肤与对应骨骼绑定,得到人脸的立体模型。例如,参见图4a,图4a为本发明实施例中骨骼示意图。图4a中,仅在眼部周围以及下颌位置绑定骨骼,可以有效减少立体模型的三角面的个数。

作为一种示例,参见图4b,图4b为本发明实施例中创建骨骼动画形式的人脸的立体模型示意图。

作为另一种可能的实现方式,可以从预先绘制好的立体动画中选择一个立体动画,从而从该选取的立体动画中导出每一关键帧的人脸的立体模型。

步骤103,从序列帧中获取所需表情对应的目标画面。

本发明实施例中,由于同一个序列帧中包含的各画面分别对应同一局部人脸的不同表情。例如:眼部序列帧包含睁眼、闭眼等不同表情的画面,嘴部序列帧包含张嘴、闭嘴、吐舌头等多种不同表情的画面。而最终生成人脸表情时,针对每个局部人脸,只需使用各序列帧中的一个画面,本发明实施例中记为目标画面,进而利用目标画面生成人脸表情。

步骤104,将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。

本发明实施例中,在确定目标画面后,可以利用目标画面,生成人脸表情。具体地,将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。在融合过程中,通过将立体模型与序列帧进行结合,只需在立体模型的一些区域上,例如五官区域上贴图序列帧中的表情画面,而无需构建较多的三角面的个数,在表现丰富的表情的基础上,能够提升人脸表情的生成效率。此外,立体模型便于连续展示的特性,可以弥补当序列帧中表情画面较少时而出现的跳帧现象,从而可以保证生成的表情的展示效果。

本实施例的基于立体动画的人脸表情生成方法,通过获取局部人脸的序列帧以及人脸的立体模型,其中,序列帧中包含的各画面分别呈现不同表情时的局部人脸,而后从序列帧中获取所需表情对应的目标画面,将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。本实施例中,通过将立体模型与序列帧进行结合,只需在立体模型的一些区域上,例如五官区域上贴图序列帧中的表情画面,而无需构建较多的三角面的个数,在表现丰富的表情的基础上,能够提升人脸表情的生成效率。此外,立体模型便于连续展示的特性,可以弥补当序列帧中表情画面较少时而出现的跳帧现象,从而可以保证生成的表情的展示效果。

作为一种可能的实现方式,可以由用户根据自身的设计需求,从序列帧中选取目标画面。下面结合图5,对用户选取目标画面的过程进行详细说明。

图5为本发明实施例二所提供的基于立体动画的人脸表情生成方法的流程示意图。

如图5所示,在图1所示实施例的基础上,步骤103具体可以包括以下子步骤:

步骤1031,根据图片形式的序列帧中,横向和纵向所含的画面个数,将序列帧分割为多个图块。

本发明实施例中,由于序列帧中包含的各画面分别呈现不同表情时的局部人脸,而最终生成人脸表情时,针对每个局部人脸,只需使用各序列帧中的一个画面,本发明实施例中记为目标画面。因此,本发明实施例中,可以将包含多个画面的序列帧进行分割,得到对应局部人脸的不同表情的图块。

具体地,可以确定图片形式的序列帧中横向所含的画面个数以及纵向所含的画面个数,标记序列帧中横向所含的画面个数为x,纵向所含的画面个数为y,而后可以根据图片形式的序列帧中横向和纵向所含的画面个数,将序列帧分割为多个图块,其中,每个图块对应一个表情。

可选地,标记序列帧图片的宽度时w像素、高度为h像素,则序列帧中横向第i个且纵向第j个图块(简称图块[i,j])的坐标可以通过下述程序源代码得到:

box2(i*w/x)(j*h/y)(w/x)(h/y);

其中,(i*w/x,j*h/y)表示图块[i,j]的左上角坐标,(w/x,h/y)表示图块[i,j]的右下角坐标。可以理解的是,在已知矩形的左上角坐标以及右下角坐标后,即可确定该矩形的形状与位置。

在确定每个图块的坐标后,即可将序列帧分割为多个图块。

步骤1032,对每一个图块所展示的画面进行存储,并在界面中展示对应个图块对应的控件;控件用于指示对应图块的标识,并在控件显示有对应图块的画面。

本发明实施例中,在得到每个区块后,可以将每个区块所展示的画面进行存储,以便于后续利用不同区块所展示的画面,生成人脸表情。

可选地,可以创建一个临时的空白图片,标记为tempbmp,而后利用下述程序源代码,将图块[i,j]写入到tempbmp:

pasetbitmapbmpsourcetempbmpbox2(i*w/x)(j*h/y)(w/x)(h/y)[0,0]

接着可以调用dotnetobject"system.drawing.bitmap"函数,将图片tempbmp进行存储。

可选地,为了便于用户选取目标画面,可以提供用户选择的界面,该界面上可以具有对应图块的控件,每个控件上可以显示有对应图块的画面,进而用户可以根据控件上显示的画面,选取目标画面,可以有效提升用户选取目标画面的效率。

例如,可以在制图软件的卷帘栏上创建图块对应的控件,比如可以通过调用dotnetcontrol的"system.windows.forms.datagridview"组件创建的图块对应的控件,在创建好控件后,即可生成图块对应的标识,例如id。

步骤1033,当探测到用户操作时,读取用户所操作的控件指示的标识,并根据标识从序列帧中读取对应图块展示的画面作为目标画面。

本发明实施例中,当用户操作控件时,可以根据控件所指示的标识,确定对应图块展示的画面在帧序列中的位置,从而根据位置,从序列帧中读取对应图块展示的的画面作为目标画面。

可以理解的是,动画是由一系列关键帧组成的,针对动画的每一个关键帧,可以探测用户对每一个五官对应控件的操作,从而将用户所操作控件对应的画面,作为关键帧中相应五官的目标画面。

举例而言,假设眼部对应的目标画面在第f帧,且已知控件所指示的id,f帧的横向所含的画面个数为x,纵向所含的画面个数为y,目标画面在f帧中横向第i个且纵向第j个图块,则可以通过下述程序源代码计算得到i和j的数值:

i=mathf.floor(id/x);

j=id%y;

如果j=0,则i=i-1,j=x。

其中,mathf.floor(id/x)表示计算小于或者等于(id/x)的整数部分。

在确定目标画面在序列帧中的位置后,即可从序列帧中读取对应的画面作为目标画面。

本实施例的基于立体动画的人脸表情生成方法,通过用户根据自身的设计需求,从序列帧中选取目标画面,可以提升该方法的灵活性及适用性。此外,通过在界面中展示对应各图块对应的控件,并在控件显示有对应图块的画面,可以提升用户选取目标画面的效率,进而提升人脸表情的生成效率。

本发明实施例中,立体模型中每个区域均具有对应的材质,而不同区域的材质可以不同,为了使得目标画面与立体模型匹配,在利用目标画面生成人脸表情前,可以利用局部人脸在立体模型中对应的区域所采用的材质参数,对目标画面进行渲染,而后将渲染后的目标画面贴图至立体模型中对应局部人脸的区域,得到人脸表情,从而可以保障目标画面与立体模型匹配,进而保证生成的表情的展示效果。下面结合图5,对上述过程进行详细说明。

图6为本发明实施例三所提供的基于立体动画的人脸表情生成方法的流程示意图。

如见图6,在图1所示实施例基础上,步骤104具体包括以下子步骤:

步骤1041,根据局部人脸在立体模型中对应的区域,读取区域采用的材质的参数。

本发明实施例中,立体模型中不同区域采用的材质不同,例如,眼部在立体模型中对应的区域采用的材质可以玻璃状通透的材质,而鼻部在立体模型中对应的区域采用的材质可以为非通透的材质。可以理解的是,当材质不同时,不同的材质对应的参数则不同,因此,本发明实施例中,在确定局部人脸后,可以根据局部人脸在立体模型中对应的区域,读取区域采用的材质的参数。

步骤1042,根据材质的参数,对目标画面进行渲染。

可选地,在确定局部人脸在立体模型中对应的区域所采用的材质参数后,可以根据材质的参数,对目标画面进行渲染,从而可以使得目标画面与立体模型匹配。

步骤1043,将渲染后的目标画面贴图至立体模型中对应局部人脸的区域,得到人脸表情。

本发明实施例中,在对目标画面进行渲染后,将渲染后的目标画面贴图至立体模型中对应局部人脸的区域,得到人脸表情。

需要说明的是,当用户在制图软件中设计游戏场景时,对于一些默认的简单立体模型,比如正方体、圆柱体、茶壶等立体模型,由于其本身自带uv坐标,因此,在确定目标画面时,可以直接在立体模型上,对目标画面进行贴图,操作简单。但是,实际应用时,尤其在做角色模型时,例如人脸的立体模型时,由于人脸的立体模型是不规则和复杂的模型,因此将无法给立体模型自动指定uv坐标。而不指定uv坐标的话,将目标画面进行贴图时,可能发生目标画面未贴图在立体模型中对应局部人脸的区域的情况,举例而言,目标画面为眯眼时的眼部画面,如果不指定uv坐标的话,可能发生将目标画面贴图在立体模型的每一个面的情况。

为了避免发生目标画面未贴图在立体模型中局部人脸对应的区域的情况,保证目标画面精准贴图在立体模型中对应局部人脸的区域,本发明实施例中,可以将组成立体模型的各表面映射到预设纹理uv坐标系中,从而确定对应局部人脸的区域内的表面在uv坐标系中的uv坐标偏移量,而后对目标画面设置贴图的uv坐标偏移量,以将渲染后的目标画面贴图到uv坐标偏移量对应的立体模型表面。

举例而言,假设序列帧的横向所含的画面个数为x,纵向所含的画面个数为y,目标画面在序列帧中横向第i个且纵向第j个画面,且目标画面在立体模型中对应的部位的材质为b,可以通过下述程序源代码设定该材质b的"_maintex"属性偏移量为该uv偏移量:

b.settextureoffset("_maintex",uv);

其中,"_maintex"表示材质b的偏移量,数值为uv,uv为两个值,一个为在u坐标上的偏移量,一个为v坐标上的偏移量,由u坐标上的偏移量和v坐标上的偏移量共同定义材质b的偏移量,具体地,uv可以通过下述程序源代码确定:

b.settextureoffset("_maintex",vector2(1/x*(j-1),1/y*(y–i-1)))。

本发明实施例的基于立体动画的人脸表情生成方法,通过根据局部人脸在立体模型中对应的区域,读取区域采用的材质的参数,根据材质的参数,对目标画面进行渲染,将渲染后的目标画面贴图至立体模型中对应局部人脸的区域,得到人脸表情。由此,可以保障目标画面与立体模型匹配,进而保证生成的表情的展示效果。

作为一种示例,动画是由一系列关键帧组成的,假定第f帧为一个关键帧,用户可以在立体模型的第f帧贴图相应关键帧的目标画面。假设目标画面为眼部对应的画面,眼部在立体模型中对应的部位的材质为b。假设已知控件所指示的id,f帧的横向所含的画面个数为x,纵向所含的画面个数为y,目标画面在f帧中横向第i个且纵向第j个图块,则可以确定i=modidx,j=ceil(id/x),以及材质b在所述uv坐标系中的uv坐标偏移量,则可以通过下述程序源代码,在立体模型的第f帧贴图眼部对应的目标画面:

作为一种示例,首先用户可以在制图软件上设计人脸不同部位的序列帧,例如,用户设计的眼部的序列帧和嘴部的序列帧可以分别如图3a和3b所示。而后,用户可以采用3dmax软件,制作骨骼动画,生成人脸的立体模型,例如,创建骨骼动画形式的人脸的立体模型可以如图4b所示,并基于表情动画管理器工具制作关键帧动画。

具体地,可以基于序列帧中横向和纵向所含的画面个数,设置局部人脸在所述立体模型中对应的区域采用的材质的参数,例如可以设置材质的tiling值,从而可以使得在后续贴图时,只在立体模型上显示序列帧中的一个画面,即目标画面。

表情动画管理器工具可以将目标画面分成多个小格子贴图,用户每单击一次小格子时,表情动画管理器工具可以调整材质的偏移量(offset值),达到切换格子的效果,从而使得目标画面准确贴图在立体模型中对应局部人脸的区域。例如,可以通过如图7a所示的界面,调整材质参数(tiling值)和偏移量(offset值)。同时,可以在当前的时间轴上记录偏移量的关键帧,并将目标画面的id记录在材质的noise下面的amount属性的动画上,例如,可以通过如图7b所示的界面,记录id。然后可以利用表情动画管理器工具保存制作好的序列帧动画的关键帧,每个部位画面的id,导出成xml文件,例如,参见图7c,制作好的序列帧动画中的关键帧中每个部位画面均具有对应的id,例如起始关键帧中,脸部画面的id为0,眼部画面的id为1,嘴部画面的id为2,可以通过双击列表,将制作好的序列帧动画的关键帧,每个部位画面的id,导出成xml文件。

接着,可以选择3dmax里面的立体模型和骨骼动画,通过如图8a所示的界面,选择菜单export-exportselected,在跳出来的界面上,例如,参见图8b,在默认的参数基础上勾选animation,将立体模型和骨骼动画导出成fbx文件,如此,可以得到包含立体模型和骨骼动画的fbx文件和包含序列帧信息的xml文件。

而后可以将fbx文件和xml文件导入到unity3d引擎,导入脸部的序列帧,例如,脸部的序列帧可以如图9所示,按照脸部的序列帧中各个部位在所述立体模型中对应的区域采用的材质的参数,对各个部位进行渲染,而后对渲染后的部位进行贴图,从而可以使得脸部的序列帧在贴图后可以与立体模型匹配。

然后,可以复制fbx文件,将复制的文件的名称修改为与xml文件名称一致,接着给立体模型添加脚本emotioncontrol,将xml文件拖放到如图10所示的xmlfilearray下面,将包含animation组件的节点拖放到animcom下面。其中,

emotioncontrol脚本的原理为:读取xml文件的帧信息,获取当前播放的骨骼动画的当前帧,然后根据xml文件信息对应帧的中横向和纵向所含的画面个数,计算出画面对应的图片的tiling值和offset值,修改材质参数达到显示某一画面的贴图的目的。

需要说明的是,在电子设备的3d游戏中,本发明实施例的基于立体动画的人脸表情生成方法可以用于生成角色模型的脸部表情,包括但不限于unity3d游戏引擎。

完成上述步骤,即可播放动画。例如,在unity3d中截4帧动画可以如图11所示。

为了实现上述实施例,本发明还提出一种基于立体动画的人脸表情生成装置。

图12为本发明实施例提供的一种基于立体动画的人脸表情生成装置的结构示意图。

如图12所示,该基于立体动画的人脸表情生成装置100包括:第一获取模块110、第二获取模块120,以及处理模块130。其中,

第一获取模块110,用于获取局部人脸的序列帧,以及获取人脸的立体模型;其中,序列帧中包含的各画面分别呈现不同表情时的局部人脸。

作为一种可能的实现方式,第一获取模块110,具体用于创建骨骼动画形式的人脸的立体模型;或者,从立体动画中导出每一关键帧的人脸的立体模型。

可选地,第一获取模块110,具体用于将脸部皮肤与对应骨骼绑定,得到人脸的立体模型;其中,所述骨骼分布于眼周和下颌位置中的一个或多个组合。

第二获取模块120,用于从序列帧中获取所需表情对应的目标画面。

处理模块130,用于将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。

进一步地,在本发明实施例的一种可能的实现方式中,参见图13,在图12所示实施例的基础上,该基于立体动画的人脸表情生成装置100还可以包括:

本发明实施例中,处理模块130,包括:

读取子模块131,用于根据局部人脸在立体模型中对应的区域,读取区域采用的材质的参数。

渲染子模块132,用于根据材质的参数,对目标画面进行渲染。

贴图子模块133,用于将渲染后的目标画面贴图至立体模型中对应局部人脸的区域,得到人脸表情。

作为一种可能的实现方式,贴图子模块133,具体用于将组成立体模型的各表面映射到预设纹理uv坐标系中,以确定对应局部人脸的区域内的表面在uv坐标系中的uv坐标偏移量;对目标画面设置贴图的uv坐标偏移量,以将渲染后的目标画面贴图到uv坐标偏移量对应的立体模型表面。

本发明实施例中,第二获取模块120,包括:

分割子模块121,用于根据图片形式的序列帧中,横向和纵向所含的画面个数,将序列帧分割为多个图块。

展示子模块122,用于对每一个图块所展示的画面进行存储,并在界面中展示对应各图块对应的控件;控件用于指示对应图块的标识,并在控件显示有对应图块的画面。

处理子模块123,用于当探测到用户操作时,读取用户所操作的控件指示的标识,并根据标识从序列帧中读取对应图块展示的画面作为目标画面。

本发明实施例中,局部人脸包括五官,序列帧为多个,每一序列帧对应人脸五官中的一个;处理子模块123,具体用于针对动画的每一个关键帧,探测用户对每一个五官对应控件的操作;将用户所操作控件对应的画面,作为关键帧中相应五官的目标画面。

需要说明的是,前述对基于立体动画的人脸表情生成方法实施例的解释说明也适用于该实施例的基于立体动画的人脸表情生成装置100,此处不再赘述。

本实施例的基于立体动画的人脸表情生成装置,通过获取局部人脸的序列帧以及人脸的立体模型,其中,序列帧中包含的各画面分别呈现不同表情时的局部人脸,而后从序列帧中获取所需表情对应的目标画面,将人脸的立体模型中对应局部人脸的区域与目标画面进行融合,得到人脸表情。本实施例中,通过将立体模型与序列帧进行结合,只需在立体模型的一些区域上,例如五官区域上贴图序列帧中的表情画面,而无需构建较多的三角面的个数,在表现丰富的表情的基础上,能够提升人脸表情的生成效率。此外,立体模型便于连续展示的特性,可以弥补当序列帧中表情画面较少时而出现的跳帧现象,从而可以保证生成的表情的展示效果。

为了实现上述实施例,本发明还提出一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现如本发明前述实施例提出的基于立体动画的人脸表情生成方法。

为了实现上述实施例,本发明还提出一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明前述实施例提出的基于立体动画的人脸表情生成方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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