于金辉 浙江大学CAD&CG国家重点实验室 计算机动画 于金辉 浙江大学CAD&CG国家重点实验室 2018/9/19 浙江大学
基于Quaternion的变形技术 三维曲面变形实际上是要把组成曲面面片的四个边按照需要对其长度和角度进行变化。 变形思路:把四边形每个边看成一个向量,在三维空间对四个边的长度和角度进行插值。 2018/9/19 浙江大学
三维空间中的角度插值 在直角坐标系中,一个向量OA的方向用其和x轴,y轴,z轴的正向所夹的角𝜶, 𝜷, 𝜸表示, 其中0<=𝜶, 𝜷, 𝜸<𝝅,� 叫做向量的方向角. 在这种向量角度表示下, 若计算 向量OA到向量OB之间的角度插 值非常麻烦. 所以希望引进一个 方便的数学工具. 2018/9/19 浙江大学
Quaternion(四元数) Quaternion由英国数学家Willianm Hamilton在1843年提出. 设Q是实数域上的四维向量空间,其正交基底(1,0,0,0), (0,1,0,0),(0,0,1,0),(0,0,0,1)分别用e, i, j, k表示,则Q中的元素q可以写成 q=[S,V]=a0e + a1i +a2j + a3k 这里S=a0是标量部分(实部), V=a1i+a2j+a3k矢量部分(虚部), 2018/9/19 浙江大学
Quaternion的运算法则 q1+q2=[S1,V1]+[S2,V2]=[S1+S2, V1+V2] kq=k[S,V]=[kS, kV] i, j, k按i->j->k->i次序,相邻两单元按箭头顺序相乘等于第三单元,与箭头相反方向相乘等于第三单元的负元,即 ij=k=-ji , i*i=-1 jk=i=-kj, j*j=-1 ki=j=-ik, k*k=-1. 2018/9/19 浙江大学
Quaternion的运算法则 设 它们相乘 上述乘法满足结合率 但不满足交换率 (为什么?) 2018/9/19 浙江大学
Quaternion的共轭,模和逆 像复数一样,quaternion有共轭。如果q=[S,V],则其共轭可写成 q*=[S,-V]. 2018/9/19 浙江大学
Quaternion弧形插值 c = (1-t) a + t b 设有两个单位Qauaternion a和b, 其实部为0, 则单位Quaternion c 可以表示成 c = a + b 经过求解得到 =sin(-)/sin(), =sin()/sin() (见Animating Rotation with Quaternion Curves,SIG85) 设参数0<=t<=1, 令=t*, 有: Slerp(a, b, t) = sin(-t*)/sin() a + sin(t*)/sin() b = sin((1-t)*)/sin() a + sin(t*)/sin() b 注意上式和线性插值的区别! c = (1-t) a + t b 2018/9/19 浙江大学
Quaternion弧形插值 把上述公式应用到面片的4个边线上,我们有: pt,i’=p0,i’*sin[(1-t)i]/sin(i)+p1,i’*sin(t i)/sin(i) |pt,i|=(1-t)|p0,i| + t |p1,i| 这里(i=1,…4),且0<=t<=1. 2018/9/19 浙江大学
几个结果 海绵变形 2018/9/19 浙江大学
从平面到曲面变形 2018/9/19 浙江大学
进一步的控制 非线性旋转与线性长度缩放. 游泳时胳膊的运动即如此。 线性旋转与非线性长度缩放. 如悬挂在屋顶上的一个重物,屋顶和重物之间用弹簧连接,重物被拉向一端,然后放开。重物弹跳着摆动,最后趋于静止。 非线性旋转与非线性长度缩放. 与上述例子相似,不过重物被推向一个弧形,然后放开。 2018/9/19 浙江大学
弹簧与重物 2018/9/19 浙江大学
面部动画 面部动画是计算机动画中的难题之一。 面部肌肉复杂,形变,而且存在较大个体差异。 对话时有唇部运动以及唇部周围的面部运动。 一个好的面部模型应能够在几何上表现某个特定的人。 本课介绍MPEG-4面部动画模型以及其应用. 2018/9/19 浙江大学
MPEG4动画模型 MPEG-4面部动画模型包括 注:在文献中”面部动画”与”人脸动画”通用. 面部特征点; 中性面部; 面部动画参数以及其归一化. 注:在文献中”面部动画”与”人脸动画”通用. 2018/9/19 浙江大学
MPEG-4的面部定义参数(FDP) FDP(Face Definition Parameters)定义了84个面部特征点, 如嘴角,鼻尖等. 这些点既定义了相貌,也能用于表情动画控制. 2018/9/19 浙江大学
中性面部(neutral face) 中性脸表现一个合成脸的初始位置,嘴闭合,双眼沿着与屏幕垂直的方向看,眼睛自然张开. 所有的描述面部动画的FAP都是相对于中性面部而言. 中性脸也用来归一化FAP参数值. 2018/9/19 浙江大学
人脸动画参数(FAP) 人脸动画参数(Facial Animation Parameters, FAP) 用来产生人脸运动,表情,情绪等 FAP建立在人脸微小运动基础上,非常接近脸部肌肉的运动,因而几乎每种表情都可以用FAP描述. 2018/9/19 浙江大学
FAP分组 MPEG-4定义了68个FAP,分成10组。66个与嘴唇,下颚,嘴部,脸颊,鼻子等有关低级FAP, 2个与视位和表情有关的高级FAP, 唇型(visemes)和表情(expression). 它们用于复杂的,不规则的唇动和表情. 2018/9/19 浙江大学
一些FAP的编号与描述 2018/9/19 浙江大学
2018/9/19 浙江大学
2018/9/19 浙江大学
FAP参数值归一化 通过对FAP归一化能使前面定义的面部特征点FDP用在从合成人脸或者真实人脸上获取的FAP上. 这种归一化是通过人脸动画参数单元(Facial Animation Parameter Unit, FAPU)进行的. 一个FAPU是一些面部特征点的距离(如鼻尖和嘴中间的距离,两眼之间的距离等). 2018/9/19 浙江大学
FAPU的定义 MPEG-4定义了6个FAPU: 它们值的定义: IRISD=IRISD0/1024; ES=ES0/1024; 虹膜直径 (Iris Diameter, IRISD) 眼间距(Eye Separation, ES) 眼-鼻间距(Eye Nose Separation, ENS) 嘴-鼻间距(Mouth Nose Separation, MNS) 嘴巴宽度(Mouth Width, MW) 角度单位(AU) 它们值的定义: IRISD=IRISD0/1024; ES=ES0/1024; ENS=ENS0/1024; MNS=MNS0/1024; MW=MW0/1024, 除以1024是为了保证FAP的值为整数。AU=10^(-5)弧度. 注意! ! FAPUs计算必须在中性无表情模型数据(即所有FAP 集合为0)上进行,否则计算上述参量会有误差. 2018/9/19 浙江大学
FAP参数值的计算 这里 表示当前面部模型特征点的x坐标以及在中性面部上的对应x坐标, 分别为对应特征点的y坐标. 2018/9/19 浙江大学
FAP:从A脸应用到B脸 即该表情在B脸上也移动半个嘴到鼻尖的距离(注意: MNS∈B) 已知A脸上FAP4(lower_t_lip)在某表情上的位移是𝝙y∈A,用A脸的FAPU对其归一化得到: FAP4=𝝙y∈A/MNS∈A (1) 即FAP4为𝝙y∈A 中包含多少个MNS∈A。 注意:MNS∈A =MNS0∈A /1024。如果FAP4的值是512,意 味着𝝙y ∈A位移大小是半个嘴到鼻尖的距离。 设B脸上FAP4在同样表情上的位移是𝝙y∈B,用B脸FAPU对其归 一化得到: FAP4=𝝙y∈B/MNS∈B, 把(1)式中的FAP4带入有: 𝝙y∈B =FAP4*MNS∈B. 即该表情在B脸上也移动半个嘴到鼻尖的距离(注意: MNS∈B) 2018/9/19 浙江大学
应用例子: Multi-level Performance-driven Stylised Facial Animation System overview (Fabian Di Fiore Frank Van Reeth,Hasselt University, Computer animation and Social Agents 2005) 2018/9/19 浙江大学
3D动态捕捉系统 3D Dynamic Capture System (3D-DCS) 由24个照相机和8个微机组成.其中有16个黑白相机,8个彩色相机, 装配到 8个吊舱内(pods). 3D Performance Capture for Facial Animation, Proc of the 2nd International Symposium on 3D Data Processing, Visualization, and Transmission (3DPVT’04) 2018/9/19 浙江大学
3D-DCS 每个吊舱内有2个黑白相机,1个彩色相机. 它们安装在一个四方平面的4个角上,每个角内有2个吊舱. 彩色相机 黑白相机(成对) 彩色相机 彩色相机 2018/9/19 浙江大学
立体配对(Stereo pair) 两个黑白相机可以生成1个立体配对的图像, 对其处理可以获得深度信息. 彩色相机用来获得真实感的纹理, 该纹理用于生成3D模型的纹理. 2018/9/19 浙江大学
双目立体视觉立体重建原理 从两个不同的视点来观察同一个场景,从而获得同一个目标物在不同的观察角度下的一对图像. 通过两张图片之间的匹配点,可以恢复出场景中的目标物体的位置和几何形状等三维信息。 2018/9/19 浙江大学
双目立体视觉立体重建原理 设两台照相机完全相同,沿x轴相距为b的位置上并列放置,并且具有互相平行的光轴,并且x轴相互重合。xy平面与图像平面平行,设摄像机光轴在z轴方向上,如图所示。 2018/9/19 浙江大学
设左右两个相机分别为 C1与 C2,b为C1与 C2之间的距离,f为相机焦距。 设P1、P2分别为点P在左右两个相机图像的平面上的对应投影点,d为P到C1 C2间连线的距离, 过点C1,C2分别向图像的平面作垂足分别为点A1,A2垂线,过P向图像的平面作垂足为点B的垂线,令|P2B|=a ,|A1P1|=Ia ,|A2P2|=Ib, 2018/9/19 浙江大学
Ia-Ib为点P在左右两幅图像平面上形成的视差. 因为B和f已知,故可通过视差估计d. 视差大的像素对, 其对应距离近, 反之远. 由三角形相似原理可得: 通过整理上式可得 Ia-Ib为点P在左右两幅图像平面上形成的视差. 因为B和f已知,故可通过视差估计d. 视差大的像素对, 其对应距离近, 反之远. 2018/9/19 浙江大学
一般的双目三维重建流程 在两幅照片上检测特征点 在两幅照片之间匹配特征点 在匹配特征点之间计算视差 根据计算的视差估计该点的深度 漏洞修补 2018/9/19 浙江大学
High Resolution Passive Facial Performance Capture 用多视角拍摄的立体对照片,然后进行面部三维重建 SIGGRAPH2010 2018/9/19 浙江大学
高分辨率面部表情获取与重建(视频) 2018/9/19 浙江大学
3D-DCS的输出 3D-DCS生成一系列的3D模型, 视频中的每一帧对应1个模型. 每个模型由3D几何和纹理构成. 2018/9/19 浙江大学
模型标记(Model Mark-up) 要跟踪特征点的位置, 这些点必须准确影射以保证获取动画的质量. 要跟踪特征点的位置, 这些点必须准确影射以保证获取动画的质量. 采用MPEG-4面部动画标准中定义的特征点,为了稳定帧间同类网格的结果,还需在一些相对静止的地方引进一些特征点,如图所示. 2018/9/19 浙江大学
系统标注界面 需要设计一个界面, 使得MPEG4所需特征点位置能在视频序列中每帧上恢复出来. 在界面内用户选取VRML模型作为特征的”基准(base)”位置用户可以在上面拖拽任何特征点,等到所有特征点对位后再移到下一帧. 为减少工作量,可将本帧的特征点影射到下一帧, 然后用户再进行调整对位. 在系统中完成这样的交互操作大约需3分钟/帧. 2018/9/19 浙江大学
系统转换步骤 通过特征点测量FAPUs. 确定获取数据首帧上头部的初始方向,将其旋转到一个中性(neutral)位置,面部朝前. 在其后续的各帧中,确定相对于中性位置的头部方向. 在每帧上旋转和移动头部,使它与中性头部位置排列一致. 基于面部运动在全局直角坐标轴上的正交分解计算FAPs. 2018/9/19 浙江大学
确定初始方向 在3D空间中控制头部方向涉及到围绕三个坐标轴的旋转,而且头部有脖子引起的旋转运动(如左右摇晃)以及扭转运动(如转头). 选取两耳之间的中点作为支点(pivot point),具体在每只耳朵上标记5个点,然后左右耳朵上标记的10个点求平均值得到(取平均值是为了减少误差). 用上述支点可以控制头部的位置.首帧上的支点位置作为头部的缺省位置. 2018/9/19 浙江大学
初始旋转估计 对直角坐标系中的任何一个轴,在面部上找到一个或多个矢量, 这些矢量与该坐标轴平行, 对这些矢量求和并归一化得到一个单位矢量 ,作为所选坐标轴的估计. 用同样方法 得到另外一个坐标轴的估计 . 计算 和 的叉积得到和第一个矢量垂直的矢量 由于 不一定和 垂直(见下页),所以再用 得到垂直于其它两个轴的第二个轴估计. 2018/9/19 浙江大学
初始旋转估计 见图, 用两只耳朵中央的点可以得到 用两眼内角之间的点可以得到 p1和p2大致指向X轴方向 用左眼的外角和左耳的顶部得到 用右眼的外角和右耳的顶部得到 q1和q2大致指向Z轴方向 2018/9/19 浙江大学
用上述方法可以得到一组互相垂直的坐标轴 , 和 ; 该坐标轴相对于全局直角坐标系的方向就是头部的初始旋转. 用上述方法可以得到一组互相垂直的坐标轴 , 和 ; 该坐标轴相对于全局直角坐标系的方向就是头部的初始旋转. 2018/9/19 浙江大学
确定后续帧的方向 选取3个以上的特征点, 这些点在不同表情中基本不变, 如两只眼睛的内角和外角, 以及耳朵上部和面部相交的点. 这些点构成一个刚性物体(rigid body), 用其可以计算和调整头部的旋转, 然后再确定面部动画. 2018/9/19 浙江大学
计算某帧上的旋转矩阵 在当前帧和关键帧之间, 用上述刚性物体特征点xi减去支点xc, 得到 ; 用N个刚性特征点构建一个相关矩阵 这里 是关键帧上的一个特征点, 是当前帧上的相等(equivalent)特征点. 是3X1矩阵, 是1X3矩阵,故c是3X3矩阵. 对矩阵c进行奇异值分解, 得到正交矩阵u和v以及对角矩阵w 把当前帧头部旋转到中性关键帧位置上的旋转矩阵 这里D是对角矩阵 2018/9/19 浙江大学
确定FAPs 每个FAP与某个特征点有关,并且用一个相应的FAPU作为单位沿着一个坐标轴测量。 再用相关的FAPU除以该值并四舍五入得到与所计算面部无关的整数FAP。 2018/9/19 浙江大学
一个例子 有两个控制上嘴唇右角的FAP,分别叫做stretch_r_cornerlip_o 和 raise_r_cornerlip_o; 这两个参数都是用嘴唇右角的特征点位置,再用嘴的宽度度量计算。 stretch_r_cornerlip_o描述了右嘴角沿X轴方向的运动, raise_r_cornerlip_o描述了右嘴角沿Y轴方向运动。 2018/9/19 浙江大学
风格化建模与表情动画 面部各个部分(如面部轮廓,嘴,鼻子,左眼,左眼眉等等),都需要单独绘制, 这些部分也叫做channels, 将它们安排到一个等级结构中得到Hierarchical Display Model (HDM). 2018/9/19 浙江大学
手绘动画角色的三个极端姿态(pose) 在极端姿态模型构建之后,获取的面部动画数据可以应用到风格化的面部上。 2018/9/19 浙江大学
风格化面部动画系统 动画师把绘画面部的点与获取的MPEG-4特征点关联起来; 每个面部channel可以用获取的FAPs来驱动。 2018/9/19 浙江大学
一些结果 上面是输入的FAPs数据画出来的结果,中间和下面是用其驱动其它两个面部形象的结果 2018/9/19 浙江大学
动画视频 该模型即能驱动真实脸表情,也能驱动卡通脸表情, 注意:脸部可有三维运动 2018/9/19 浙江大学
京剧脸谱表情动画 2018/9/19 浙江大学
京剧脸谱表性系统框图 2018/9/19 浙江大学
京剧脸谱绘制 先在脸上打上红底色; 然后画出眉和眼窝处的白色纹样; 在其上面画出黑色眉纹和眼窝纹; 最后添加额头纹以及嘴角纹。 2018/9/19 浙江大学
矢量纹样库 将脸谱分为眉纹、眼窝纹、额头纹、嘴窝纹等种类。 用Bezier曲线手工分层构造出各部分脸谱纹样。 2018/9/19 浙江大学
用FFD构建40个表情动作单元库 系统中的40个动作单元一共包含152个纹样动作,此外还有10个眼睛和牙齿的配套动作的运动单元库。 2018/9/19 浙江大学
FFD纹样变形 用FFD队纹样进行变形(左图),得到不同的纹样动作(右图)。 2018/9/19 浙江大学
京剧脸谱表情动画系统界面 在生成脸谱表情时,用户可以直接通过选择一个系统预置的表情模板直接作用于脸谱来生成相应的表情(见图). 还可以对其进行简单的整体表情幅度调控,以便产生同一表情的不同幅度结果。 2018/9/19 浙江大学
结果图例 若要得到一个悲伤的表情,需调节的动作单元有:抬右内眉端、抬左内眉端、压低右眉、压低左眉、下拉右嘴角、下拉左嘴角。 右图为系统生成的正常、 高兴、悲伤和愤怒的表情 状态。 2018/9/19 浙江大学
引进面部深度 京剧脸谱表情往往和表演紧密结合在一起,京剧演员在演唱时不仅有表情变化,还有头部的运动。所以需要引进面部深度来进一步表现脸谱表情的伴随动作。 用二维网格和面部深度图相结合方法,得到一个有深度信息的面部网格,可以在一定范围内自由转动。 2018/9/19 浙江大学
眼睛的控制 眼部运动是京剧表演中非常重要的部分。眼部表情主要通过眼球注视移动、上眼皮的眨眼、头部运动三者协调产生。 通过眼球网格移动、眼皮网格拉伸的方法来实现眼球转动和眨眼,同时结合眼球运动数学模型和眼睛运动规律,实现眼球转动、头部转动间的调整。 2018/9/19 浙江大学
眼球的合成 通过四张图片合成眼球(见图A),这四张图从上到下分别控制高光、瞳孔、虹膜和眼白部分。 2018/9/19 浙江大学
眼皮运动 眼皮运动包括上眼皮运动和下眼皮运动,但是通常运动比较明显的是上眼皮,所以只对上眼皮进行处理,对于下眼皮可以通过眼部肌肉粗略的控制。 眨眼过程是上眼皮最下层点带动整块上眼皮上的点向下眼皮移动,到达下眼皮之后再回到原来位置的过程。这一过程同时伴随着与上眼皮粘连的睫毛和上眼皮阴影的相应运动。 2018/9/19 浙江大学
眼皮阴影 由于大部分京剧脸谱角色都为男性,其睫毛较短,所以在系统里只绘制上眼皮阴影,而不绘制睫毛(见图C)。 由于上眼皮是整个脸谱网格的一部分,眨眼的过程需要实时重绘所有顶点,为了加快绘制数度,截取眼睛周围的网格单独绘制(见图D)。 2018/9/19 浙江大学
眼皮阴影 图E部分为上眼皮运动的目标点,上面的6个点为上眼皮运动的驱动点,下面的6个点为眼皮运动的目的点。最终效果图见F。 2018/9/19 浙江大学
头部和眼睛的协调 眼球的注视运动可以认为是眼球绕三个坐标轴进行旋转的同时与头部运动进行协调运动的结果。 有人通过实验发现空间目标相对人的偏转角度大约等于眼睛相对于头的角度与头部相对于空间的角度之和[,我们在处理头眼协调运动中就采用了这个经验模型。 2018/9/19 浙江大学
文本驱动口型 京剧脸谱表情还常常在演员说话或者演唱时变化。为了表现京剧表情动画,必须使京剧角色说话的口型与所说的话同步,即口型与声音同步。 京剧是用汉字演唱,而汉字使用拼音发音,而拼音中的声母、韵母对应不同的口型。 2018/9/19 浙江大学
声母、韵母归类简化 声母由辅音构成,包括b、p、m、f等共21个。韵母共有36个,可以由一个元音构成如(a、o、e),也可以说双元音(如ai、ie),或者三元音(如iao)。 如果要制作高度真实的口型动画必须将声母与韵母的所有组合都考虑,但这样涉及的工作量太大。 为了达到快速容易操作,我们对拼音重新进行定两部分:I部和II部,它们分别对应一种口型状态。在制作口型动画时,人物每说一个汉字口型就由I部关键帧过渡变形为II部关键帧。II部的动画时长要大于I部,也就是说口型的最终外观效果主要是体现在II部。 2018/9/19 浙江大学
声母、韵母归类简化 I部将b、p、m、f设置成一个相同的口型音I-b。其它辅音都设置成一个相同的口型音I-d。 I部的定义主要是将b、p、m、f设置成一个相同的口型音I-b。其它辅音都设置成一个相同的口型音I-d。II部大体分为四种口型:1 II-a口型,主要是用于发音时嘴唇开度比较大的,不圆唇的韵母发音,例如a、an等; 2 II-o口型,主要是用于发音时嘴唇略圆,嘴向前撮的韵母,例如o、ou等;3 II-e口型,主要是用于发音时嘴唇半张,口型不圆的韵母,例如e、i等;4 II-u,主要是用于发音时嘴唇向前突出成圆形,只留较小缝的韵母,例如u、u等。 I部的定义主要是将b、p、m、f设置成一个相同的口型音I-b。其它辅音都设置成一个相同的口型音I-d。II部大体分为四种口型:1 II-a口型,主要是用于发音时嘴唇开度比较大的,不圆唇的韵母发音,例如a、an等; 2 II-o口型,主要是用于发音时嘴唇略圆,嘴向前撮的韵母,例如o、ou等;3 II-e口型,主要是用于发音时嘴唇半张,口型不圆的韵母,例如e、i等;4 II-u,主要是用于发音时嘴唇向前突出成圆形,只留较小缝的韵母,例如u、u等。 声母、韵母归类简化 I部将b、p、m、f设置成一个相同的口型音I-b。其它辅音都设置成一个相同的口型音I-d。 II部分为四种:1 II-a口型,主要是用于发音时嘴唇开度比较大的,如a、an等; 2 II-o口型,主要是用于发音时嘴唇略圆,嘴向前撮的韵母,如o、ou等;3 II-e口型,主要是用于发音时嘴唇半张,口型不圆的韵母,例如e、i等;4 II-u,主要是用于发音时嘴唇向前突出成圆形,只留较小缝的韵母,例如u、u等。 2018/9/19 浙江大学
从文字到拼音 通过这样分类可以将所有的汉字拼音转换成I部口型和II部口型两个部分 例如“动画”两字就可以分别表示成I-d II-o和I-d II-a 如果把I-b、I-d、II-o、II-e、II-o分别做出六个口型模型,那么每两个模型关键帧之间的变化过程即构成一个汉字的发音口型动画。 2018/9/19 浙江大学
口型和声音出现时间匹配 采用mp3常用作为字幕的srt格式文件,因为在srt文件中文本包含了它出现的时间信息。 2018/9/19 浙江大学
一个例子 图为利用本文系统所创作的一段脸谱动画的截图,其文本为《说唱脸谱》的歌词,脸谱为《鱼肠剑》里的姬僚。 2018/9/19 浙江大学