一种三维人脸动画的控制方法

文档序号:6586618阅读:238来源:国知局
专利名称:一种三维人脸动画的控制方法
技术领域
本发明涉及三维动画技术领域,具体涉及一种三维人脸动画的控制方法。

背景技术
三维人脸表情动画技术的开创性工作是Parke在20世纪70年代做的,由于真实感人脸建模及其动画技术具有很强的应用和研究价值,之后的30多年,全世界优秀的研究人员不断加入到这一研究领域,使三维人脸建模和动画技术得到显著的发展,但是由于人脸结构的复杂性和人脸表情的丰富性,目前所研究的3D人脸表情动画虚拟场景要么比较初级,其真实感、可信度、丰富性均较差;要么真实感强但计算量巨大,无法实时。以下是现有技术中所采用的动画方法技术。
关键帧动画关键帧动画是由熟练的动画师设计卡通片中的关键画面,也就是所谓的关键帧,然后利用计算机插值生成中间帧。所有影响画面图的参数都可成为关键帧的参数,如位置、旋转角、纹理等到参数。另外一种动画设置方法是样条驱动动画。在这种方法中,用户采用交互方式指定物体运动的轨迹样条。关键帧动画的最主要的缺点是由于关键帧之间的平滑过渡,导致精度的损失。另外,由于物体朝向一般是由Euler角来表示,因此对于物体朝向又简单化为三个欧拉角的插值问题,但由于欧拉角表示的局限性,导致旋转的不均匀和自由丧失。
物体变形动画该技术指对于由多边形表示的物体,物体变形可通过移动其多边形顶点来达到。目前已有多种技术来实现这种变形方法。比如Barr提出的整体和局变形方法、FFD(自由变形)方法以及Coquillart提出的拓广FFD方法等等。其中用得最多的是基于FFD变形的方法,该方法并不对物体直接进行变形,而是对物体所嵌入的空间进行变形。对于由这些方法产生的多边形之间渐变,则一般采用顶点之间的线性插值,即顶点位置的keyframe插值方法。但是该方法生成的多边形有可能产生自交和不应有的收缩。于是,人们又提出基于物理的二维形状渐变方法,即把形状看成由电线框构,然后求解所需能量最小的形变解。物体变形动画的参数选择以及变形过程仍然需要很多的人工参于,并且对于复杂变形的模拟仍然不是很理想。由于人脸不好嵌入FFD的外框,因此该方法仍然不能用来控制人脸动画。
过程动画过程动画指的是动画中物体的运动或变形由用一个过程来描述。在柔性物体的动画中,物体的形变是任意的,可由动画师任意控制的;在过程动画中,物体的变形则基于一定的数学模型或物理规律。最简单的过程动画是用一个数学模型去控制物体的几何形状和运动,如水波随风的运动。较复杂的如包括物体的变形、弹性理论、动力学、碰撞检测在内的物体的运动。另一类过程动画为粒子和群体的动画。该方法用来做人脸动画具有不避免甚至是不可攻破的复杂性。因为我们首先要分析出人脸结构,再分析人脸动机理,再抽象数学公式来进行模拟,由于这每一步目前都还没有完全成熟。所以该方法运用于人脸动画动画还有很长的路。
关节动画和人体动画该方法主要是针对人体和动物角色的。该类动画在脸部表情动画模拟方面,Bergeron提出用数字化仪将人脸的各种表情输入到计算机中,然后用这些表情的线性组合来产生新的脸部表情。另外,Waters提出了一个基FACS的脸部表情动画模拟方法,它是由一组肌肉模型组成,把人的脸用多边形网格来表示,并用肌肉向量来控制人脸的变形。这种方法的特别点在于可以用一定的数量参数对模的特征肌肉进行控制,并且不针对特定的脸部拓扑结构。为了产生一些更真实的表情,Reeves、Guenter、pighin等提出了一些针对肌肉模型的改进,但是这些方法,都需要昂贵的设备做支撑。
基于物理模型的动画顾名思义,该方法是对模拟对象的物理属性进行分析,然后再做数学建模来准确模拟物体运动,从而实现逼真的运效果。但是这种方法目前最主要是在刚体运动模拟、塑性物体变形运动以及流体运动模拟方面有比较好的效果。而且,该技术的计算机复杂度比较高。
基于MPEG4的FAP(facial animaiton parameter)人脸动画方法该方法的大意是把人脸分为多个(MPEG4标准规定了68个)FAP特征控制区域,每一个区域有一个特征点,当特征点的位置被改变时,对于区域内的其点则采用某种插值方式扩散过去,如线性插值,余弦插值等。通过对这些区域进行参数控制来实现各种各样的表情。该方法的特点是简单易行,但是简单易行,但是由于有大量的参数需要人来进行手工进行控制,并且对于不太熟练的动画师来控制来讲,做出来的表情容易失真,而且,它对于一些细微的表情也不能做到精确的模拟。
基于肌肉向量的动画控制方法1987年,Waters提出了一种基于肌肉向量的动画模拟方法,该方法的主要思想是首先对人脸肌肉的运动进行分析,然后利用数建模对肌肉的运动情况进行模拟。根据三维人脸解剖学,把网格模型对真实人脸进行模拟,然后对网格模型进行肌肉运动模拟从而做出各种各样的表情。该方法模拟了两种人脸肌肉(线性肌和拓约肌),其中括约肌主要用来模拟圆形肌肉(比如嘴巴和眼睛),线性肌用于模拟脸部的其区域。该方法的优点在于,计算机复杂度不是很高,控制起来也比较方便。但是它仍然不能做出比较细微的表情,比如嘟嘴和半眨的微笑闭眼效果,这个方法的模拟是不成功的。
体塑化模型的动画控制方法体塑化模型是指,模型的构造不是网格,而是近于实心化的,这是一个本质的区域。前面的几种方法都是在网格层面或者说是单表皮层面进行控制的,它们的模拟精度不可能像体塑化那么准确。对于这样的模型,比如基于物理的人脸肌肉模型,它首先是在三维人脸模型上模拟人脸配置好各种各样的肌肉,然后利用物理的方法来对肌肉进行数学建模,这样就可以利用肌肉移动来生成各种各样的表情。但是由于模型是实心的,需要计算的点太多,如果采用实时计算点位移的方式,就不可能达到实时性的要求。如果表情预存起来,采用插值方式生成中间表情,又会损失动画效果。


发明内容
本发明所要解决的问题是如何提供一种三维人脸动画的控制方法,该方法能克服现有技术所存在的缺陷,能根据各种表情需要对三维人脸模型变形,使三维人脸表现出真实感强的表情动画。
本发明所提出的技术问题是这样解决的提供一种三维人脸动画的控制方法,其特征在于,包括以下步骤 步骤1获取三维人脸特征网络模型 将具体的三维人脸特征信息网格化到基准三维人脸模型; 步骤2对步骤1所得的三维人脸特征网络模型进行功能区划分 对人脸肌肉进行受力分析后根据各功能区的运动特性进行区域划分,划分为扇形区域、椭球形区域、下巴和眼睛,其中椭球形区域对应嘴巴周围,用来生成嘴巴所能产生的各种形状,扇形区域配置在人脸其他区域,用来生成各种普通的人脸动作; 步骤3根据区域划分设置运动控制点并计算控制点对三维人脸特征模型运动的影响 ①扇形区域参考弹簧模型,给扇形区域内的每个点设定一个质量M、一个阻尼系数D,xi是区域内的任意点,mjAmjI构成区域配置向量,

和Rj用来确定区域的大小,lji是xi到mjA的距离,扇形区域的拉扯方向为

在这个区域里面的所有点都会由于区域内的向量

的拉动而产生移动,但是离

越远的点,移动就越小,再设置一个长度因子和角度因子

扇形区域内的点的受力公式为 其中a是扇形区域的收缩率,而xi是影响区域内的点,且影响因子函数θ1和θ2为


其中 根据牛顿定律,得到每个点的力平衡公式 在该微分方程进行计算机模拟计算的时候,采用Euler-Cromer方法 ②椭球形区域对于椭球形区域内点的移动,采用中心距离位移调节法,对于任意在区内的点v=(x,y,z),计算出然后对

的各个分量进行对应,用来计算移动后的点坐标v′
其中x z分别为

的x分量和z分量,a,b,c为椭球在三个轴上的半径; ③下巴下巴的动作采用旋转方法,对该区域内的点进行旋转,利用绕三维空间的任意一条线的旋转复合矩阵R 其中,α、β和θ为XYZ三个方向的旋转角度, 下巴越往上的区域受旋转影响的效果就越小,因此还需要为顶点设置一个权重,把下巴分为三个区域分别为

值的设置方式为
p.x,p1.x和p2.x分别为点p,p1和p2的坐标的x分量,对于空间内的任何一个点P,它位移后的点的坐标p′i为 p′=R*p*weight; ④眼睛眼睛的运动包括眨眼和眼球的转动,其中眼球的动作采用旋转的方法,以眼球中心cen做为放心转中心,旋转方法为 P′=p*Rx(α)*Ry(β) 其中Rx(α),Ry(β)分别是X和Y方向上的旋转矩阵,α和β是旋转方向在X和Y方向上的分量;眨眼的动作采用分层控制的方法,选中上眼皮的几层点,把每一竖排点做为一个区域li(i=1,2.........13),共13个区域,每一个区域的最下面一层点做为控制点pi(i=1,2.........13),共13个控制,每一个控制点又对应下眼皮上的一个点di(i=1,2.........13)做为其目的地,定义了对于控制点pi移动后的坐标p′i为 p′i=pi+ui*val 其中val为眨眼控制变量; 步骤4设置基本口型,根据时间点来播放相对应的口形①根据口形文件,载入各个基本口形;②读取当前时间应该播放的口形号;③根据口形号读取各条肌肉的contraction值;④如果设置了当前应该播放的表情,则利用表情、口形合成公式,生成各条肌肉的对应contraction值,否则跳过;⑤根据各条肌肉的类型调用各自对应的动画方法进行动画操作;⑥利用插值公式生成插值口形; ⑦转到步骤④播放插值口形;⑧如果到了下一个口形的播放时间,就转而到步骤②; 步骤5设置基本表情,设计表情合成并视频驱动首先对三维人脸特征模型做动动检测,得到特征点位移,然后利用这些特征点的位移来驱动三维人脸模型,对特征点为xi,它对应三维人脸特征模型上的肌肉为m,xi产生位移,对应肌肉m的收缩率为αm 其中θk为为扇形区域的长度因子和角度因子函数,对于椭球形区域则为1,Δxi为点xi的实际位移,这样视频驱动的步骤为①初始化模型和肌肉配置;②获取人脸特征点检测的结果;③根据特征点的位移,调用上面的收缩率计算方法计算各条对应的肌肉的收缩值;④根据各条肌肉的收缩值,调用相应肌肉类型的动画方法对模型进行驱动;⑤如果视频结束,则结束,否则转向步骤②。
本发明的有益效果 1、高模拟度,本发明首先是分析了人脸解剖学,得到人脸各个问的肌肉纤维的分布情况,继而根据肌肉分布分了人脸的运动学,得到人脸产生表情的力学起因,然后根据这些力学起原因来模拟人脸动画,这种基于物理的受力分析方法,决定了本方法的高模拟度,实际也证明了如此。在相比之下,弹簧模型和FAP动画,由于需要大量的人工参与,如果不是非常专业的动画来参与,是达不到这样高的模拟性能的。而且对FAP动画,很多时候还会由于配置的不佳,导致动画时网格变烂的现象。
2、较高的实时性,本方法不像利用体塑化方法来做动画方法那样需要有较的点需要计算,而只是对人脸网格(在物理模型中,也就是人的表皮)上的点进行计算,省去了很多不可见的内部肌肉纤维做计算,另外,利用这种方法,还可以在动画之前对网格做简化,从而进一步提高实时性。
3、基于物理分析的简易性和清晰性,由于本动画结合了人脸解剖学和人脸运动学,分析人脸的肌肉构成和形成各个表情的力学运动情况,因此就更加容易用物理的分析受力,得到简便又具有高真实感的动画。
4、表情的易生成性,由于其肌肉动画的本质特征,我们在生成各种一的时候,只需要对各条肌肉做不同程度的拉伸即可。相比较于MPEG4的FAP动画和弹簧模型来讲,具有更多的物理特性,更直观,便于生成各种表情动画。
5、该方法还在以前的肌肉模型上做了改进,比如嘴巴周边的一圈肌肉动作,换成了一种基于距离的坐标变换法,这种方法具有更强的控制灵活性,同时对动画效果又有更好的提升。



图1是扇形区域的示意图; 图2是椭球形区域的示意图; 图3是下巴区域划分结构图; 图4是三维人脸动画表情驱动流程图; 图5是离线语音驱动流程图。

具体实施例方式 下面结合附图对本发明作进一步描述 本发明根据人脸解剖学的知识,把三维人脸模型分为多个区域,然后再利用力学分析,得到区域内的各个点的移动。再通过各个区域的适当组合就形成了各种各样的动作和表情。其中椭球形区域是配置在嘴巴周边的,用来生成努嘴、O形嘴等人脸动画中高难效果的,而扇形区域是配置在人脸其它的区域的,通过对这些扇区域进行受力分析、拉扯可以形成各种普通的人脸动作,如笑、脸动等。
1、扇形区域 由于人脸是具有弹性的,因此对区域的受力分析参考了弹簧模型,首先给区域内的每个点指一个质量M、一个阴尼系数D。这样,对于扇形区域的示意图如图1所示,其中,xi是区域内的任意点,mjAmjI构成区域配置向量,

和Rj用来确定区域的大小,lji是xi到miA的距离。扇形区域的拉扯方向为

在这个区域里面的所有点都会由于区域内的向量

的拉动而产生移动,但是离

越远的点,移动就越小,因此还设置了一个长度因子和角度因子

于是扇形区域内的点的受力公式为 其中a是扇形区域的收缩率,而xi是影响区域内的点,且


其中 根据牛顿定律,得到每个点的力平衡公式 其中M为点的质量,D为点的阻尼系数。在该微分方程进行计算的时候,我们采用了Euler-Cromer方法,如下 2、椭球形区域 对于椭球形区域的移动,采用了另外的一种方法,称之为中心距离位移调节法,该方法的思是根据影响区域内的点到点心的距离做相应的调整(如图2所示),调整方法为对于任意在区内的点v=(x,y,z),计算出然后对

的各个分量进行相应,如dist′=(dist.x*(1.2-δ)*ux,-uy,dist.z*(1.2-δ*uz)),这样就可以用来计算移动后的点坐标v′
(x=dist.x,y=dist.y,z=dist.z。a,b,c为椭球在三个轴上的半径) 3、下巴旋转 在有了扇形区域和椭球形区域动作后,虽然可以做出一些动作,但在张嘴的时候,下巴却不能跟着一起张合,所以还必须做下巴的张合。根据人脸解剖学,人的头骨分为下颌骨和颅骨,下颌骨和头骨之间又有一个连接点,当下颌骨绕连接点转动就形成了下巴的转动。因此对于下巴的动作还是采用了旋转的方法。首先在三维网格上选中下巴区域,然后对该区域内的点进行旋转。利用绕三维空间中的任意一条线的旋转公式 旋转复合矩阵R 其中,α、β和θ为XYZ三个方向的旋转角度, 因为下巴越往上的区域受旋转影响的效果就越小,因此还需要为顶点设置一个权重。其中下巴的示意图如图3所示,权值的设置方式为
这样对于空间内的任何一个点P,它位移后的点的坐标 p′=R*p*weight 4、眼睛和眼球 眼睛的动作比较复杂,分为眨眼和眼球转动,为了避免眼皮在往下眨的时候和眼球发生碰撞产生的错误现象,还必须做碰撞检测和消除。眼球的转动也是利用了旋转的方法,以眼球中心cen做为放心转中心,旋转方法为 P′=p*Rx(α)*Ry(β) 其中Rx(α),Ry(β)分别是X和Y方向上的旋转矩阵,α和β是旋转方向在X和Y方向上的分量。而眨眼则是采用了控制点及其影响区域的方法选中上眼皮的几层点,把图中的每一竖排点做为一个区域li(i=1,2..........13),共13个区域,每一个区域的最下面一层点做为控制点pi (i=1,2..........13),共13个控制,每一个控制点又对应下眼皮上的一个点di(i=1,2..........13)做为其目的地。定义了于是,对于控制点pi移动后的坐标p′i为 pi=pi+ui*val 其中val为旋转控制量。对于碰撞检测的做法是,首先计算出眼球中心cen到眼球上的点的最大距离D,然后当眼皮眨下的时候,计算每一个p′i到cen的距离d,此时如果d<D我们就认为发生了碰撞,并调整p′i的Z分量 其中x,y,z为p′i的三个分量值,a,b,c为眼球球心到最远点形成的一个圆球的参数值,xc,yc,zc为cen的三个分量值。
5、头部转动 头部旋转方法是对于头的脸部采用正常旋转公式来进行旋转,保证其大体真实性;对于脸部模型的其它部份,如头发、脖子则采用了一种扩散公式,把脸部的位移扩散出去,以达到整体的微观旋转效果。具体表述为 首先设模型网格点集合为V,其中人脸的点集合为,背景面板的点集合为Vb(,且Vb∪Vf=V。对于人脸网格点Vf的旋转方法为 p′=Rx(α)Ry(β)Rz(γ)p 其中p为旋转前点的坐标,p′为放转后点的坐标,Rx(α)、Ry(β)和Rz(γ)分别为x,y,z三个方向的旋转矩阵。α、β和γ则为三个方向的角度分量。
对于背景网格点Vb的动画方法则是假设为人脸网格的边界点,每一个点p(p∈Vb)都有一个与人脸网格上对应最近的一个点pn(pn∈Vf)。首先得到点pn的位移

,然利用公式 求得背景模型上其它点的坐标。其中d为点p和pn的距离,

为点pn的位移。驱动设置 首先,脚本文件里面扇形区域的配置格式为 类型 名字 扇形区域中心点 扇形弧的中心点 扇形的半径 扇形的角度 区域内点的权值 椭球形区域的配置格式为 类型 名字 椭球中心 定义椭球大小的三个参数a,b,c 动作方向 三个方向的权重 因为对于语音驱动,语音是不可能给出十分形象地给出具体对应的嘴巴形状信息,只能是根据先验知识,确定一些基本口形,每一个基本口形代表发一个类型的语音。所以对于三维人脸模型,必须做出这些基本口形。这些基本口形的存储格式为 区域名字 收缩值 ……………… End 调整基本表情并设计表情合成方法。类似于基本口形,基本表情也是通过这手动调节的方式来生成的。表情合成的依据也是这些基本表情。基本表情的存储格式为 表情名 区域名 收缩值 ……………… 表情在表情圆中的位置 表情合成利用了表情圆的技术,其基本思想就是,根据前人研究发现,表情可以分为两个参数,即activation(从very passive到very active)和evaluation(从very negative到very positive),这两个参数分别从弱到强并分别映射成X、Y坐标就形成一个表情圆。在这个表情圆上不同的位置代表了不同的表情。该圆中同时也表现了各个基本表情的位置。这些基本表情是利用手工对模型进行编辑而得到的。对于基它的表情,假设Me是情感集E中的表情e的肌肉(包括下巴和眼睛)集合。利用极坐标的方式来合成其它的表情,极角为ω极径为γ。表情En成合成的方法为 上面ve(m)是对应肌肉e的收缩值。A+(m)和A-(m)代表肌肉m的相异和相同属性。相异、相同属性是指对于人脸的同一块区域,可能同时受几个肌肉的影响,对于肌肉m相对于点v的影响方向相同的称它与m具有相同属性,反之则称为具有相异属性。
语音驱动模块首先是要读取语音分析出来的口形序文件,其格式为 口形号该口形的开始时间持续时间 ………………… 因为每一个口形都有它在语音中出现的时间点,我们就可以根据时间点来播放相对应的口形,来达到语音和动画相同步的目的。在载入了口形序列后,我们就可以播放这些口形序列。其中图4说明了驱动初始化流程图,图说明了语音驱动的流程图。步骤如下 (1)根据口形文件,载入各个基本口形。
(2)读取当前时间应该播放的口形号。(当前应该播放的口形号是由语音分析的口形序列结果所定义,即每个口形有一个开始时间,就由这个开始时间来判断每个时刻应该播放的口形号。) (3)根据口形号读取各条肌肉的contraction值。
(4)如果设置了当前应该播放的表情,则利用表情、口形合成公式,生成各条肌肉(包括下巴和眼睛)的对应contraction值。否则跳过。
(5)根据各条肌肉(包括下巴和眼睛)的类型调用各自对应的动画方法进行动画操作。(即调用前面动画方法的各个部分)。
(6)利用插值公式生成插值口形。
(7)转到步骤(4)播放插值口形。
(8)如果到了下一个口形的播放时间,就转而到步骤(2)。
对于视频驱动,设计了两个方法 视频驱动方法一视频驱动的大体思想是,首先载入一个视频,然后利用ASM对人脸轮廓进行跟踪检测,根据检测结果得到人脸各个部份的运动信息,然后再利用这些运动信息对配置在模型上的各个区域进行收缩移动,从而达到视频驱动的效果。每个区域收缩率的计算方法为,首先假设视频刚开始的第一帧是人脸没有任何动作的中间状态,这一帧的检测结果也就作为收缩率计算的基准。首先设ASM检测结果的点集为X,令点集,在模型上选择点集Y,令点集,其中y′∈Y′和x′∈X′一一对应,并且每一个y′都是模型的一个区域内具有代表性的点。令每一帧中x′的位移为dist。这样视频驱动的伪代码描述为 ASM检测得到X′ Maxdist等于无穷小 For每一个x′∈X′ { If(Maxdisp<dist)Maxdisp=dist; Ratio=dist/Maxdisp; x′对应的区域move(Ratio);} Maxdisp代表每一个x′在各个方向的最大位移,把它对应的在各个区域的值设置为零,但是对于嘴角的点,因为一般来说,只有在做“o”口形的时候才能达到最大的位移,因此把向内移动的1/6的值设置为最大值。
视频驱动方法二首先对人脸做动动检测,得到特征点位移,然后利用这些特征点的位移来驱动三维人脸模型。假设特征点为xi,它对应三维人脸模型上的肌肉为m,xi产生位移,对应肌肉m的收缩率为αm。
其中θk为为线性肌(扇形区域)的长度因子和角度因子函数,对于括约肌(椭球形区域)则为1。Δxi为点xi的实际位移。
这样视频驱动的步骤为 (1)初始化模型和肌肉配置。
(2)获取人脸特征点检测的结果。
(3)根据特征点的位移,调用上面的收缩率计算方法计算各条对应的肌肉的收缩值。
(4)根据各条肌肉的收缩值,调用相应肌肉类型的动画方法对模型进行驱动。
(5)如果视频结束,则结束,否则转向步骤(2)。
权利要求
1.一种三维人脸动画的控制方法,其特征在于,包括以下步骤
步骤1获取三维人脸特征网络模型
将具体的三维人脸特征信息网格化到基准三维人脸模型,得到三维人脸特征网络模型;
步骤2对步骤1所得的三维人脸特征网络模型进行功能区划分
对人脸肌肉进行受力分析后根据各功能区的运动特性进行区域划分,划分为扇形区域、椭球形区域、下巴和眼睛,其中椭球形区域对应嘴巴周围,用来生成嘴巴所能产生的各种形状,扇形区域配置在人脸其他区域,用来生成各种普通的人脸动作;
步骤3根据区域划分设置运动控制点并计算控制点对三维人脸特征模型运动的影响
①扇形区域参考弹簧模型,给扇形区域内的每个点设定一个质量M、一个阻尼系数D,xi是区域内的任意点,
构成区域配置向量,
和Ri用来确定区域的大小,lji是xi到mjA的距离,扇形区域的拉扯方向为
在这个区域里面的所有点都会由于区域内的向量
的拉动而产生移动,但是离
越远的点,移动就越小,再设置一个长度因子λij和角度因子
扇形区域内的点的受力公式为
其中α是扇形区域的收缩率,而xi是影响区域内的点,且影响因子函数θ1和θ2为
0≤γij≤1,其中
根据牛顿定律,得到每个点的力平衡公式
在该微分方程进行计算机模拟计算的时候,采用Euler-Cromer方法
②椭球形区域对于椭球形区域内点的移动,采用中心距离位移调节法,对于任意在区内的点v=(x,y,z),计算出然后对
的各个分量进行对应,用来计算移动后的点坐标v′
其中xz分别为
的x分量和z分量,a,b,c为椭球在三个轴上的半径;
③下巴下巴的动作采用旋转方法,对该区域内的点进行旋转,利用绕三维空间的任意一条线的旋转复合矩阵R
其中,α、β和θ为XYZ三个方向的旋转角度,
下巴越往上的区域受旋转影响的效果就越小,为顶点设置一个权重,把下巴分为三个区域分别为
值的设置方式为
p.x,p1.x和p2.x分别为点p,p1和p2的坐标的x分量,对于空间内的任何一个点P,它位移后的点的坐标p′i为
p′=R(θ)*p*weight;
④眼睛眼睛的运动包括眨眼和眼球的转动,其中眼球的动作采用旋转的方法,以眼球中心cen做为放心转中心,旋转方法为
P′=p*Rx(α)*Ry(β)
其中Rx(α),Ry(β)分别是X和Y方向上的旋转矩阵,α和β是旋转方向在X和Y方向上的分量;眨眼的动作采用分层控制的方法,选中上眼皮的几层点,把每一竖排点做为一个区域li(i=1,2………13),共13个区域,每一个区域的最下面一层点做为控制点pi(i=1,2………13),共13个控制,每一个控制点又对应下眼皮上的一个点di(i=1,2………13)做为其目的地,定义了对于控制点pi移动后的坐标p′i为
p′i=pi+ui*val
其中val为眨眼控制变量;
步骤4设置基本口型,根据时间点来播放相对应的口形①根据口形文件,载入各个基本口形;②读取当前时间应该播放的口形号;③根据口形号读取各条肌肉的contraction值;④如果设置了当前应该播放的表情,则利用表情、口形合成公式,生成各条肌肉的对应contraction值,否则跳过;⑤根据各条肌肉的类型调用各自对应的动画方法进行动画操作;⑥利用插值公式生成插值口形;⑦转到步骤④播放插值口形;⑧如果到了下一个口形的播放时间,就转而到步骤②;
步骤5设置基本表情,设计表情合成并视频驱动首先对三维人脸特征模型做动动检测,得到特征点位移,然后利用这些特征点的位移来驱动三维人脸模型,对特征点为xi,它对应三维人脸特征模型上的肌肉为m,xi产生位移,对应肌肉m的收缩率为αm
其中θk为为扇形区域的长度因子和角度因子函数,对于椭球形区域则为1,Δxi为点xi的实际位移,这样视频驱动的步骤为①初始化模型和肌肉配置;②获取人脸特征点检测的结果;③根据特征点的位移,调用上面的收缩率计算方法计算各条对应的肌肉的收缩值;④根据各条肌肉的收缩值,调用相应肌肉类型的动画方法对模型进行驱动;⑤如果视频结束,则结束,否则转向步骤②。
全文摘要
本发明公开了一种三维人脸动画的控制方法,其特征在于,包括以下步骤获取三维人脸特征网络模型;对所得的三维人脸特征网络模型进行功能区划分;根据区域划分设置运动控制点并计算控制点对三维人脸特征模型运动的影响;通过驱动控制点的运动,来驱动三维人脸特征网络模型的运动,模拟真实的脸部运动。该方法能克服现有技术所存在的缺陷,能根据各种表情需要对三维人脸模型变形,使三维人脸表现出真实感强的表情动画。
文档编号G06T15/00GK101739709SQ20091026355
公开日2010年6月16日 申请日期2009年12月24日 优先权日2009年12月24日
发明者章毅, 王平安, 郑伯川, 吕建成, 张蕾, 彭德中, 于佳丽, 张海仙 申请人:四川大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1