三维角色动画设计论文

时间:2022-01-28 03:27:00

三维角色动画设计论文

一、相关工作

在骨架提取方面,已经有很多自动生成骨架的方法。①②③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几乎没有什么影响。测试发现,计算的主要消耗花费在分离过程中距离场的计算上。

4、展望

虽然盼盼动画系统在人体动画领域取得了一定的进展,但是它依然存在着不足,限制着它的应用范围。在技术方面,建立骨架图的时候可以用椭圆来建立初始骨架图。在应用方面,首先它的蒙皮质量在某些地方还可以改进,可以通过在骨架上自动蒙皮的技术来提高质量;其次,它的骨架中的关节与一般人体的关节有出入,不能由一般人体骨架运动的数据来驱动,这样就不能很好地利用网络上大量的表现复杂运动的运动数据。另外,盼盼动画系统依然不能够表现手部动画、脸部动画这些需要细节的动作。如果能在后期中加入这些方面的应用,一定能够得到更为广泛的应用,并且大大减少人体动画开发的整个周期。

注释

①LiuP,WuF,MaW,LiangR,OuhyoungM,“Automaticanimationskeletonusingrepulsiveforcefield”,Proc.ofPacificGraphics’2003,pp.309-413.

②TeichmannM,TellerS.“Assistedarticulationofclosedpolygonalmodels.”Proc.ofComputerAnimationandSimulation’98,pp.87-102.

③KatzS,TalA,“Hierarchicalmeshdecompositionusingfuzzyclusteringandcuts”,ACMTransactionsonGraphics,2003,22(3):954-961.

④WadeL.Automatedgenerationofcontrolskeletonsforuseinanimation.PhDthesis,TheOhioStateUniversity,2000.

⑤BaranI,Popovi?J,“Automaticriggingandanimationof3Dcharacters”,ACMTransactionsonGraphics,2007,26(3):72.

⑥KryP,JamesD,PaiD,“EigenSkin:Realtimelargedeformationcharacterskinninginhardware”,Proc.ofSymposiumonComputerAnimation(SCA)’2003,pp.153-160.

摘要本文研究了怎样把现有的人体运动数据重新定向到新的动画角色对象上,并实现了一个原型系统——盼盼三维角色动画系统。通过这种方法,用户只需要从动画库中选择所需的人体运动,便可方便地控制任意三维动画角色的运动和变形,从而重用现存的人体运动数据去控制新的角色,创作出一些夸张的动画效果。

关键词运动重用三维角色计算机动画人体动画