基于运动捕获数据的三维角色动画设计论文

时间:2021-08-31

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

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

  一、引言

  在近十几年里,计算机动画技术得到了突飞猛进的发展,以动画卡通、网络游戏、手机游戏、多媒体产品等为代表的动漫产业是21世纪知识经济的核心产业,被称为21世纪最有希望的朝阳产业,这场“后现代产业浪潮”不仅给全球经济战略结构带来了根本性转变,也为进入新世纪的中国经济创造了一次千载难逢的历史发展机遇。

  但是,目前的动画技术还远没达到理想的地步。计算机辅助二维动画具有制作相对方便、制作成本低、对制作和运行的硬件环境要求较低等优点。但是由于传统的二维对象缺少显式的三维信息,使得自动生成好的中间帧画面非常困难,比如在变化过程中,特别是那些非平行于画面的变换,引起的起各帧画面之间对象的对应问题、剪影轮廓的变化问题、各个部分的自遮挡问题、保持形状比例和体积问题等等,都是研究者们一直试图解决的难点问题。

  计算机动画之所以有那么强大的表现能力,各式各样逼真的模型扮演着举足轻重的地位。这些模型大多由独立的动画软件,如3DSMax、Maya、Softimage等进行设计。怎样给一个静态的模型赋予生命力,并让它动起来一直是图形学研究者感兴趣的研究课题。三维动画制作系统中,使用关节骨架控制三维动画角色已非常流行,动画师可以非常容易地设置和控制三维角色关节进行动画控制。但是准确地控制三维模型的变形和运动使其符合实际的物理规律,特别是想要达到实时的要求,难度很大。一种解决方法为采用自动角色动画。角色动画动包括骨骼动画和顶点动画。骨骼动画把整个人体按生理结构分为许多部分(图1-2), 每个部分都有自己的几何形体,然后再用数据结构把所有的部分合理地组成为一个有层次的整体,例如,上臂连着前臂, 前臂连着手。骨骼动画与顶点动画相比,占用空间小,因为它不需要象顶点动画那样要存储每一帧的各个顶点的数据,而是只需要存储每一帧的骨骼的数据。骨骼的数据量与顶点的数据量相比,要少得多。所以骨骼动画有很多优势,不管是在游戏、电影动画还是虚拟现实中,生动逼真的动画(人、动物等)会使之增色不少。当然骨骼动画处理技术难度也很高,它需要解决的一个重要的问题是:如何得到和模型相关联的骨架?

  本文研究了把现有的人体运动数据重新定向到新的动画角色对象上。通过这种方法,动画师能够利用现存的BVH人体运动数据去创造新的动画。动画角色对象常被赋予复杂的非刚体运动方式以达到夸张的效果,我们实现了三维角色的自动绑定,使之能做到局部的非刚体变形描述。若要生成新的动画,只需要从动画库中选择用户所需的人体运动,便可方便地控制新的三维动画角色的运动和变形。人体的运动数据可以来源于运动捕捉,也可以从现存的动画和影片视频中通过图像处理和计算机视觉的方法来获取。基于这些素材,我们可以得到运动的素材库,作为动画师创作新动画的来源,从而丰富动画产品的多样化和体现制作者的创造性思维。在如今的计算机动画中,建立模型的过程已经变得比较简单。但是如果要让模型动起来,还需要人们手动去嵌入骨架,并且定义骨架驱动表面皮肤的每一个细节。这个复杂繁琐的过程只能由专业的动画师来完成,对于一些初学者来说是可望而不可及的。我们实现的系统可以让一个静态的模型可以根据给定的运动数据进行所需要的运动。整个过程由程序自动实现,不需要人手动来操作它。这样的创新使它能够表现更加复杂的动画,因此不仅能够为专业动画师所用,而且让初学者也能体验到自己设计动画的乐趣。

  二、相关工作

  在骨架提取方面,已经有很多自动生成骨架的方法。①②③Baran等的Pinocchio系统创造性地提出了骨架嵌入的方法。在自动角色动画方面,骨架嵌入比骨架提取要好的原因是对于复杂骨架的角色,骨架提取可能会产生不同的拓扑结构,这就让使用者很难将原来有的骨架运动数据运用到其中来。虽然可以通过附属肢体模板来鉴别复杂的附属肢体,但是由于拓扑结构的复杂性,自动生成时也会产生各种不同的误差。骨架嵌入相对于骨架提取的另一个优势就是它能够在骨架中定义角色所需要的很多的结构信息,这是在提取的纯几何骨架图中难以得到的。

  几乎所有的网格变形技术,无论是基于表面的还是基于体积的,都可以用来作为基于骨架运动动画中的对表面进行蒙皮。④⑤不幸的是,到目前为止,这些方法都不能实现实时的动画。Baran等的线性混合蒙皮(LBS)具有简单高效并且能够利用GPU进行运算,并可以根据骨架进行子空间变形等优点。虽然在质量上的不能够达到很好的效果,但是它仍然成为在实践应用中最常用的方法。所以我们的系统采用该方法。⑥

  三、原型系统设计设计过程

  对于输入的三维角色模型,我们首先嵌入骨架,然后通过定义骨骼运动对表面网格上每个顶点的变化的影响权值,将表面皮肤依附在骨骼上。对于不同的角色,我们建立不同的罚函数去惩罚那些我们不期望的骨架嵌入方式。基于样本用支持向量机的方法求得最大边缘解,然后对不同罚函数赋予不同的权值。用人工智能中A*启发式的方法在指数级的搜索空间里加速寻找最优的骨架嵌入方式。在蒙皮阶段用热扩散方程的方法去计算骨架运动时每一块骨骼对表面网格上顶点的影响权值。据骨架的变化情况,插值计算出骨架的“蒙皮”模型的各个顶点的位置变化。对于某个特定骨骼,“蒙皮”模型的顶点变换矩阵=初始姿势的变换矩阵的逆×姿势变换后的矩阵。另外还要考虑到一个顶点可能受多个骨骼运动的共同影响。