摘要本文研究了怎样把现有的人体运动数据重新定向到新的动画角色对象上,并实现了一个原型系统――盼盼三维角色动画系统。通过这种方法, 用户只需要从动画库中选择所需的人体运动,便可方便地控制任意三维动画角色的运动和变形,从而重用现存的人体运动数据去控制新的角色,创作出一些夸张的动画效果。
关键词运动重用 三维角色 计算机动画 人体动画
中图分类号TP391 文献标识码
3D Character Animation using Motion Capture Data
Fujun YeRuifang Pan
(Zhejiang University of Media and Communications, 310018;Zhejiang University of Media and Communications, 310018)
AbstractThis paper introduces a prototype system called PanPan to retarget the existing BVH human motion data to new three dimensional characters. This makes it possible to control the motion and deformation of 3D characters easily by selecting a specific human motion from the human motion library. We can use this system to control new 3D characters to create novel animation effects using existing BVH data.
Key words motion retargeting 3D character computer animation human animation;
一、引言
在近十几年里,计算机动画技术得到了突飞猛进的发展,以动画卡通、网络游戏、手机游戏、多媒体产品等为代表的动漫产业是21世纪知识经济的核心产业,被称为21世纪最有希望的朝阳产业,这场“后现代产业浪潮”不仅给全球经济战略结构带来了根本性转变,也为进入新世纪的中国经济创造了一次千载难逢的历史发展机遇。
但是,目前的动画技术还远没达到理想的地步。计算机辅助二维动画具有制作相对方便、制作成本低、对制作和运行的硬件环境要求较低等优点。但是由于传统的二维对象缺少显式的三维信息,使得自动生成好的中间帧画面非常困难,比如在变化过程中,特别是那些非平行于画面的变换,引起的起各帧画面之间对象的对应问题、剪影轮廓的变化问题、各个部分的自遮挡问题、保持形状比例和体积问题等等,都是研究者们一直试图解决的难点问题。
计算机动画之所以有那么强大的表现能力,各式各样逼真的模型扮演着举足轻重的地位。这些模型大多由独立的动画软件,如3DSMax、Maya、Softimage等进行设计。怎样给一个静态的模型赋予生命力,并让它动起来一直是图形学研究者感兴趣的研究课题。三维动画制作系统中,使用关节骨架控制三维动画角色已非常流行,动画师可以非常容易地设置和控制三维角色关节进行动画控制。但是准确地控制三维模型的变形和运动使其符合实际的物理规律,特别是想要达到实时的要求,难度很大。一种解决方法为采用自动角色动画。角色动画动包括骨骼动画和顶点动画。骨骼动画把整个人体按生理结构分为许多部分(图1-2), 每个部分都有自己的几何形体,然后再用数据结构把所有的部分合理地组成为一个有层次的整体,例如,上臂连着前臂, 前臂连着手。骨骼动画与顶点动画相比,占用空间小,因为它不需要象顶点动画那样要存储每一帧的各个顶点的数据,而是只需要存储每一帧的骨骼的数据。骨骼的数据量与顶点的数据量相比,要少得多。所以骨骼动画有很多优势,不管是在游戏、电影动画还是虚拟现实中,生动逼真的动画(人、动物等)会使之增色不少。当然骨骼动画处理技术难度也很高,它需要解决的一个重要的问题是:如何得到和模型相关联的骨架?
本文研究了把现有的人体运动数据重新定向到新的动画角色对象上。通过这种方法,动画师能够利用现存的BVH人体运动数据去创造新的动画。动画角色对象常被赋予复杂的非刚体运动方式以达到夸张的效果,我们实现了三维角色的自动绑定,使之能做到局部的非刚体变形描述。若要生成新的动画,只需要从动画库中选择用户所需的人体运动,便可方便地控制新的三维动画角色的运动和变形。人体的运动数据可以来源于运动捕捉,也可以从现存的动画和影片视频中通过图像处理和计算机视觉的方法来获取。基于这些素材,我们可以得到运动的素材库,作为动画师创作新动画的来源,从而丰富动画产品的多样化和体现制作者的创造性思维。在如今的计算机动画中,建立模型的过程已经变得比较简单。但是如果要让模型动起来,还需要人们手动去嵌入骨架,并且定义骨架驱动表面皮肤的每一个细节。这个复杂繁琐的过程只能由专业的动画师来完成,对于一些初学者来说是可望而不可及的。我们实现的系统可以让一个静态的模型可以根据给定的运动数据进行所需要的运动。整个过程由程序自动实现,不需要人手动来操作它。这样的创新使它能够表现更加复杂的动画,因此不仅能够为专业动画师所用,而且让初学者也能体验到自己设计动画的乐趣。
二、相关工作
在骨架提取方面,已经有很多自动生成骨架的方法。①②③Baran等的Pinocchio系统创造性地提出了骨架嵌入的方法。在自动角色动画方面,骨架嵌入比骨架提取要好的原因是对于复杂骨架的角色,骨架提取可能会产生不同的拓扑结构,这就让使用者很难将原来有的骨架运动数据运用到其中来。虽然可以通过附属肢体模板来鉴别复杂的附属肢体,但是由于拓扑结构的复杂性,自动生成时也会产生各种不同的误差。骨架嵌入相对于骨架提取的另一个优势就是它能够在骨架中定义角色所需要的很多的结构信息,这是在提取的纯几何骨架图中难以得到的。
几乎所有的网格变形技术,无论是基于表面的还是基于体积的,都可以用来作为基于骨架运动动画中的对表面进行蒙皮。④⑤不幸的是,到目前为止,这些方法都不能实现实时的动画。Baran等的线性混合蒙皮(LBS)具有简单高效并且能够利用GPU进行运算,并可以根据骨架进行子空间变形等优点。虽然在质量上的不能够达到很好的效果,但是它仍然成为在实践应用中最常用的方法。所以我们的系统采用该方法。⑥
三、原型系统设计设计过程
对于输入的三维角色模型,我们首先嵌入骨架,然后通过定义骨骼运动对表面网格上每个顶点的变化的影响权值,将表面皮肤依附在骨骼上。对于不同的角色,我们建立不同的罚函数去惩罚那些我们不期望的骨架嵌入方式。基于样本用支持向量机的方法求得最大边缘解,然后对不同罚函数赋予不同的权值。用人工智能中A*启发式的方法在指数级的搜索空间里加速寻找最优的骨架嵌入方式。在蒙皮阶段用热扩散方程的方法去计算骨架运动时每一块骨骼对表面网格上顶点的影响权值。据骨架的变化情况,插值计算出骨架的“蒙皮”模型的各个顶点的位置变化。对于某个特定骨骼,“蒙皮”模型的顶点变换矩阵=初始姿势的变换矩阵的逆×姿势变换后的矩阵。另外还要考虑到一个顶点可能受多个骨骼运动的共同影响。
1.骨架嵌入
由于骨架嵌入需要将骨架重新定义大小和定位使得它能够正确的嵌入到模型当中,所以它能公式化为一个优化的过程:计算关节点的位置和朝向使它能够更好的适合于给定的模型。但是这个优化是一个三维空间的问题,所以连续优化的方法是不可行的。因此可以建立一个用顶点表示潜在关节点,用边表示独立的骨骼的图来简化优化问题。建立这样一个图是具有一定挑战的,因为我们可以用未知数量的顶点和边来表示相同模型的关节和骨架。我们在近似模型垂直等分的平面上建立中轴面,并且建立圆心在中轴面上的圆的一个特定的集合,将这些图的圆心连接起来形成一个图。然后使用自定义的离散的罚函数来最优化的骨架嵌入这个图。为了帮助优化,在给定的骨架中可以包括一些关节点的额外的信息。比如说对称的部位应该以相同的名称命名,又比如如果一个关节被命名为脚,那么就表示它应该事在模型中位置最低的一个关节。由于定义的罚函数是独立于具体的模型的,所以并没有减弱它的通用性。
2.简化骨架
前面的步骤建立了几何图G=(V, E)来表示骨架,我们需要将它嵌入到我们给定的骨架当中。给定骨架原先是以有s个节点的树的形式给出(在一般人形的骨架上会取s=18),但是如果这s个节点没有经过简化,嵌入的优化过程是很难处理的。因此我们需要一个简单的骨架,所以在嵌入骨架之前,需要将骨架简化。所有的自由度为2的关节都将被除去(比如说膝关节), 关节两端的骨骼块被连在一起。简化后的骨架将会只有r个连接点。那么骨架嵌入以后缺少某些必要关节的骨架怎么让角色动起来呢?我们根据未简化骨架上关节在整条边上的比例,重新计算出该关节在简化骨架上的位置,然后插入到骨架中。在我们的系统中,简化的骨架中r=7。简化后的结果就是我们可以将简化的骨架嵌入到系统中以最小化罚函数惩罚的对象。否则这样的工作是很难实现的。
3.离散的嵌入骨架和优化
一般不可能计算离散的嵌入方式时使罚函数最小,因为嵌入的数量是指数级的。但是可以用类似分支定界的方法在问题的解空间树T上搜索问题解。我们使用这样一种方法:首先根据部分嵌入的下界估计保存优先级队列。然后在每一步,取出在队列中最好的部分嵌入,将它展开,与下一个关节进行计算,然后将结果保存在队列中。所以,第一个被完整展开的嵌入就是最好的嵌入。为了加速算法并且尽可能少的占用内存,如果部分嵌入有一个很高的下界,那么它将被立即拒绝并不在嵌入到队列中。虽然这种算法在最坏的情况下依然是指数级的,但是在我们测试实际情况它都是很快的。
在骨架嵌入前将骨架进行了简化,省略了很多的关节,比如说膝关节,但简单骨架嵌入以后,要让角色真正的动起来,还是需要重新插入这些关节。在这里可以通过按比列分割骨架图中路径最短的边来得到。我们希望嵌入后的骨架能够很好的满足角色的形态比列,但是,有时候骨架并不能很好的适应我们的角色。同时,一些小的被忽略的骨骼块并没有被赋予正确的朝向。骨架优化的过程就是为了解决这些问题的提出的。
4.蒙皮
我们的角色和嵌入的骨架在将皮肤依附到骨架上之前是没有任何关联的。骨架并不能够驱动角色运动。因此我们需要指定骨架运动与角色表面网格变化之间的联系。虽然在这里我们可以用很多的网格编辑技术来进行网格变形,但是我们选择标准的LBS方法:假设表示网格顶点j的坐标,表示第i块骨骼的变形矩阵,表示第i块骨骼对第j个网格顶点的变形权值。LBS把j变形后的位置表示为。我们的目标就是找到每一块骨骼变化对所有顶点的影响权值。我们所期望权值有以下几个特性:首先它应该与网格的大小无关,其次权值的变化应该平滑,最后关节间两块骨骼的移动宽度必须与关节到表面网格的距离成一定的比例。即使有一个方案能够得到权值使得骨骼能够满足这些特性,但是它们很可能失败因为他们忽略了角色的的几何学特性。作为代替,我们用热平衡原理来寻找权值。假设我们把角色的体积认为是一个不占容积的热导体,然后我们强迫骨骼i的温度为1,而其他骨骼的温度为0。当热平衡以后,我们就可以把表面上每个顶点的温度值作为该骨骼对它影响的权值。
四、实验结果
盼盼动画系统设计时主要依照三个标准:① 广泛性。适应于尽可能多的模型。对一些结构比较特殊,或者会产生歧义的模型能够尽可能的正确嵌入骨架。②质量。关键在于蒙皮的技术,让表面皮肤能根据骨架运动驱动正确的位和形变,以期与视频游戏中的模型相媲美。③ 性能。运行在大多数的家用计算机上。 在盼盼动画系统里对采用的模型进行了一些简单的限制:模型必须是全封闭的,并且是以最自然的姿势站立,这样能大幅度的提高骨架嵌入的准确性。当然模型需要是一个有四肢能被嵌入人体骨架的。
图3为盼盼三维角色动画系统的一张截图画面。系统主要包括模型选取、BVH运动数据选取、运行、视图操作、工具条等功能。该系统的运行环境为英特尔酷睿双核CPU,主频为1.73Mhz,内存为1GB。因为盼盼动画系统是单线程的,所以双核的CPU几乎没有什么影响。测试发现,计算的主要消耗花费在分离过程中距离场的计算上。
五、展望
虽然盼盼动画系统在人体动画领域取得了一定的进展,但是它依然存在着不足,限制着它的应用范围。在技术方面,建立骨架图的时候可以用椭圆来建立初始骨架图。在应用方面,首先它的蒙皮质量在某些地方还可以改进,可以通过在骨架上自动蒙皮的技术来提高质量;其次,它的骨架中的关节与一般人体的关节有出入,不能由一般人体骨架运动的数据来驱动,这样就不能很好地利用网络上大量的表现复杂运动的运动数据。另外,盼盼动画系统依然不能够表现手部动画、脸部动画这些需要细节的动作。如果能在后期中加入这些方面的应用,一定能够得到更为广泛的应用,并且大大减少人体动画开发的整个周期。
注释
①Liu P, Wu F, Ma W, Liang R, Ouhyoung M, “Automatic animation skeleton using repulsive force field”, Proc. of Pacific Graphics’2003, pp. 309-413.
②Teichmann M, Teller S. “Assisted articulation of closed polygonal models.” Proc. of Computer Animation and Simulation’98, pp. 87-102.
③Katz S, Tal A, “Hierarchical mesh decomposition using fuzzy clustering and cuts”, ACM Transactions on Graphics, 2003, 22(3): 954-961.
④Wade L. Automated generation of control skeletons for use in animation. PhD thesis, The Ohio State University, 2000.
⑤Baran I, Popovi? J, “Automatic rigging and animation of 3D characters”, ACM Transactions on Graphics, 2007, 26(3):72.
⑥Kry P, James D, Pai D, “EigenSkin: Real time large deformation character skinning in hardware”, Proc. of Symposium on Computer Animation (SCA)’2003, pp. 153-160.