发明名称 三维虚拟人嘴部运动的实现方法
摘要 本发明公开了一种三维虚拟人嘴部运动的实现方法,用于解决现有虚拟人嘴部运动控制方法虚拟人嘴部运动粗放的技术问题。技术方案是首先获取三维人脸网格数据模型;其次根据嘴部的运动特性在模型的嘴部区域选择特征点作为运动控制点;最后采用柔性四杆机构模型,把嘴部区域的点看做从动杆上的一点,取曲柄的旋转角速度为控制参数,根据机架、曲柄、连杆、摇杆之间的位置关系和曲柄的初始安装位置,以及曲柄旋转角速度等输入参数,得到嘴部区域点的转动角度从而驱动嘴部区域网格点的运动,模拟真实的嘴部运动,并通过对顶点缓冲区域顶点的处理消除边界处的过拉伸现象。本发明通过调整柔性空间机构的位置关系,实现了更丰富的嘴部细腻运动。
申请公布号 CN103903294A 申请公布日期 2014.07.02
申请号 CN201410124428.7 申请日期 2014.03.28
申请人 西北工业大学 发明人 吴坚坚;吕国云;樊养余;郭哲;王毅;齐敏
分类号 G06T13/40(2011.01)I 主分类号 G06T13/40(2011.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 1.一种三维虚拟人嘴部运动的实现方法,其特征在于包括以下步骤:步骤一、采用Proser7.0导出三维人脸网格模型;在导出的模型中,以人物的鼻尖为基准,建立坐标系XYZ,水平向右方向为X轴正向,垂直向上方向为Y轴正向,Z轴垂直于XOY平面向外,三个轴方向符合右手法则;步骤二、根据嘴部的运动特性在模型的嘴部区域选择特征点作为运动控制点;在所得到的网格模型上,划分出与嘴部运动相关的区域,便于对嘴部运动控制点的选取;根据嘴部运动的实际情况,将嘴部张合运动看作是下颚围绕颧弓处进行的转动;按照MPEG-4中对嘴部区域特征点的定义,选取颧弓处的特征点FDP2.19和FDP2.20,两嘴角处的特征点FDP8.3和FDP8.4,下嘴唇上边界特征点FDP2.5、FDP2.9、FDP2.3、FDP2.8和FDP2.4及下颌边界处特征点FDP2.1、FDP2.11、FDP2.12、FDP2.13和FDP2.14作为嘴部区域的边界点,用来确定嘴部在XOY平面的区域;通过颧弓处特征点FDP2.19和FDP2.20来确定嘴部区域的侧面范围;选取人脸三维网格模型上落在嘴部区域正面范围内,并且Z值大于颧弓处特征点Z值的全部网格点作为嘴部区域的运动控制点;步骤三、采用柔性空间四杆机构模型,驱动嘴部区域网格点的运动,模拟真实的嘴部运动;柔性空间四杆机构由曲柄、连杆、摇杆、机架四个构件组成,在曲柄和摇杆上各安装一个短臂柔铰;其中,机架是机构中的固定部分,曲柄是能够作整周回转运动的原动件,它与机架相连接,摇杆作为从动杆,一端也与机架相连接,连杆是曲柄和摇杆各自不与机架相连的一端相互连接构成的杆件,摇杆只能实现往复摆动;曲柄与机架,曲柄与连杆,连杆与摇杆,摇杆与机架分别构成转动副,即组成转动副的能相对整周转动的两个转动副;在机构中能按照给定的已知运动规律独立运动的构件称为原动件,机构中其余杆件称为从动件,当满足机构中最短杆与最长杆的和小于或者等于其余两杆长度的和时,原动件能做整周的回转运动;设定曲柄为原动件,选择摇杆为从动件,则曲柄能够绕机架的固定铰链作整周转动,并将曲柄的连续转动,通过连杆带动摇杆实现往复摆动;根据嘴部张合为下颚骨围绕颧弓进行转动这一特性,把嘴部区域的点看作从动杆上的任意一点,选择曲柄的旋转角速度为控制参数,根据机架、曲柄、连杆、摇杆之间的位置关系和曲柄的初始安装位置,以及输入的曲柄转动角速度参数,计算出嘴部区域任意点在任意时刻的空间位置或者转过的角度,驱动嘴部区域网格点的运动,实现嘴部的张合运动;柔性空间机构的矢量封闭方程为:<maths num="0001"><![CDATA[<math><mrow><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><msup><mi>e</mi><mrow><mi>i</mi><msub><mi>&theta;</mi><mn>1</mn></msub></mrow></msup><mo>+</mo><msub><mi>L</mi><mn>2</mn></msub><msup><mi>e</mi><mrow><mi>i&theta;</mi><mn>2</mn></mrow></msup><mo>=</mo><mrow><mo>(</mo><msub><mi>L</mi><mn>3</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>2</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><msup><mi>e</mi><mrow><mi>i&theta;</mi><mn>4</mn></mrow></msup><mo>+</mo><msub><mi>L</mi><mn>4</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>展开后,得<maths num="0002"><![CDATA[<math><mrow><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>cos</mi><msub><mi>&theta;</mi><mn>1</mn></msub><mo>+</mo><msub><mi>L</mi><mn>2</mn></msub><mi>cos</mi><msub><mi>&theta;</mi><mn>2</mn></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>L</mi><mn>3</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>2</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>cos</mi><msub><mi>&theta;</mi><mn>4</mn></msub><mo>+</mo><msub><mi>L</mi><mn>4</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>sin</mi><msub><mi>&theta;</mi><mn>1</mn></msub><mo>+</mo><msub><mi>L</mi><mn>2</mn></msub><mi>sin</mi><msub><mi>&theta;</mi><mn>2</mn></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>L</mi><mn>3</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>2</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>sin</mi><msub><mi>&theta;</mi><mn>4</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>令<maths num="0004"><![CDATA[<math><mrow><mi>a</mi><mo>=</mo><mn>2</mn><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>L</mi><mn>3</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>2</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>sin</mi><msub><mi>&theta;</mi><mn>1</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><mi>b</mi><mo>=</mo><mn>2</mn><mrow><mo>(</mo><msub><mi>L</mi><mn>3</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>2</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mo>[</mo><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>cos</mi><msub><mi>&theta;</mi><mn>1</mn></msub><mo>-</mo><msub><mi>L</mi><mn>4</mn></msub><mo>]</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0006"><![CDATA[<math><mrow><mi>c</mi><mo>=</mo><msubsup><mi>l</mi><mn>2</mn><mn>2</mn></msubsup><mo>-</mo><msup><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><msup><mrow><mo>(</mo><msub><mi>L</mi><mn>3</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>2</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup><mo>-</mo><msubsup><mi>L</mi><mn>4</mn><mn>2</mn></msubsup><mo>+</mo><mn>2</mn><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><msub><mi>L</mi><mn>4</mn></msub><mi>cos</mi><msub><mi>&theta;</mi><mn>1</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>得asinθ<sub>4</sub>+bcosθ<sub>4</sub>+c=0(7)求解,并取θ<sub>3</sub>为锐角,得到<maths num="0007"><![CDATA[<math><mrow><msub><mi>&theta;</mi><mn>4</mn></msub><mo>=</mo><mn>2</mn><mo>&CenterDot;</mo><mi>arctan</mi><mrow><mo>(</mo><mrow><mo>(</mo><mi>a</mi><mo>+</mo><msqrt><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup><mo>-</mo><msup><mi>c</mi><mn>2</mn></msup></msqrt><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><mi>b</mi><mo>-</mo><mi>c</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,θ<sub>1</sub>=ω<sub>1</sub>t,得到<maths num="0008"><![CDATA[<math><mrow><msub><mi>&theta;</mi><mn>3</mn></msub><mo>=</mo><mfrac><mrow><mi>cos</mi><msub><mi>&theta;</mi><mn>4</mn></msub></mrow><mrow><mo>|</mo><mi>cos</mi><msub><mi>&theta;</mi><mn>4</mn></msub><mo>|</mo></mrow></mfrac><mrow><mo>(</mo><msub><mi>&theta;</mi><mn>4</mn></msub><mo>-</mo><mfrac><mi>&pi;</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths>从而得到控制点转过的角度为<maths num="0009"><![CDATA[<math><mrow><mi>&alpha;</mi><mo>=</mo><mfrac><msub><mi>&alpha;</mi><mi>max</mi></msub><mn>2</mn></mfrac><mo>+</mo><mfrac><mrow><mi>cos</mi><msub><mi>&theta;</mi><mn>4</mn></msub></mrow><mrow><mo>|</mo><mi>cos</mi><msub><mi>&theta;</mi><mn>4</mn></msub><mo>|</mo></mrow></mfrac><msub><mi>&theta;</mi><mn>3</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow></math>]]></maths>将式(1)两边对时间t求导数,得<maths num="0010"><![CDATA[<math><mrow><msub><mi>&omega;</mi><mn>3</mn></msub><mo>=</mo><msub><mi>&omega;</mi><mn>1</mn></msub><mfrac><mrow><mrow><mo>(</mo><msub><mi>L</mi><mn>1</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>1</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>sin</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mn>1</mn></msub><mo>-</mo><msub><mi>&theta;</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow><mrow><mrow><mo>(</mo><msub><mi>L</mi><mn>3</mn></msub><mo>+</mo><mfrac><msub><mi>l</mi><mn>2</mn></msub><mn>2</mn></mfrac><mo>)</mo></mrow><mi>sin</mi><mrow><mo>(</mo><msub><mi>&theta;</mi><mn>4</mn></msub><mo>-</mo><msub><mi>&theta;</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>11</mn><mo>)</mo></mrow></mrow></math>]]></maths>得到控制点的运动速度ω<sub>3</sub>;步骤四、使用柔性空间机构模型驱动嘴部区域转动时,上颚骨的顶点是静止的,而下颚骨关联的点是运动的,这样在两类顶点的交界处会出现纹理过拉伸现象;通过定义一个由P<sub>a</sub>、P<sub>b</sub>、P<sub>c</sub>三点组成的顶点缓冲区,其中P<sub>a</sub>为颧弓处FDP2.19或FDP2.20,P<sub>b</sub>为FDP8.3或FDP8.4,P<sub>c</sub>为控制点转过的角度α所在的直线与过P<sub>b</sub>做的垂线的交点,P<sub>m</sub>为线段P<sub>b</sub>P<sub>c</sub>的中点;在缓冲区中的任一点P与线段P<sub>a</sub>P<sub>b</sub>夹角为θ;取控制点转过的角度为<img file="FDA0000483837740000031.GIF" wi="454" he="119" />消去交界处的过拉伸现象,增强对嘴部运动的控制,生成具有真实感的嘴部动画。
地址 710072 陕西省西安市友谊西路127号