计算机动画与仿真综述
正如1998年ACM Siggraph计算机图形杰出奖获得者Michael F. Cohen在今年Siggraph论文前言所述,在Siggraph过去的25年历史里,我们的世界发生了翻天覆地的变化。在电影屏幕上,当恐龙以不可思议的真实朝我们走来时,很少人会表示惊讶。对穿梭于电视屏幕上闪闪发光的三维标志人们已经习以为常。这充分说明,计算机动画已经渗透进人们的生活。在过去几十年里,计算机动画一直是人们研究的热点。在全球的图形学盛会Siggraph上,几乎每年都有计算机动画的论文和专题。如在今年的Siggraph年会上,就有两个计算机动画的专题:一个为动画和仿真;另一个为脸部造型和动画。甚至论文集封面和封底上的图形也与动画有关:一幅为衣服动画的图形,另一幅为脸部表情的图形。计算机动画每年一度的学术会议Computer Animation和学术期刊《Journal of Visualization and Computer Animation》为专业人士观摩和交流这方面的研究成果提供了进一步的机会。推动计算机动画发展的一个重要原因是电影电视特技的需要。目前,计算机动画已形成一个巨大的产业,并有进一步壮大的趋势。随着计算机硬件性能价格比的快速提高,商用动画软件公司及时地推出了动画软件的微机版本。如原来运行于工作站上价格昂贵的动画软件Softimage和Maya现在都已有NT版本,当然还有许多原来运行于Windows/NT上的动画软件3DS、3DMAX、LightWave等。
计算机动画是计算机图形学和艺术相结合的产物,它是伴随着计算机硬件和图形算法高速发展起来的一门高新技术,它综合利用计算机科学、艺术、数学、物理学和其它相关学科的知识在计算机上生成绚丽多彩的连续的虚拟真实画面,给人们提供了一个充分展示个人想象力和艺术才能的新天地。在《侏罗纪公园》、《失落的世界》和《魔鬼终结者》等优秀电影中,我们可以充分领略到计算机动画的高超魅力。计算机动画不仅可应用于电影特技、商业广告、电视片头、动画片、游艺场所,还可应用于计算机辅助教育、军事、飞行模拟,甚至于法院的审理。
简单地讲,计算机动画是指用绘制程序生成一系列的景物画面,其中当前帧画面是对前一帧画面的部分修改。动画是运动中的艺术,正如动画大师John Halas所讲的,运动是动画的要素。计算机动画所生成的是一个虚拟的世界,画面中的物体并不需要真正去建造,物体、虚拟摄像机的运动也不会受到什么限制,动画师可以随心所欲地创造他的虚幻世界。在本文中,我们将从关键帧动画、变形物体动画、过程动画、关节动画和人体动画、基于物理的动画几个方面对计算机动画作一个较全面的综述。
一、 关键帧动画
关键帧的概念来源于传统的卡通片制作。在早期Walt Disney的制作室,熟练的动画师设计卡通片中的关键画面,也即所谓的关键帧,然后由一般的动画师设计中间帧。在三维计算机动画中,中间帧的生成由计算机来完成,插值代替了设计中间帧的动画师。所有影响画面图象的参数都可成为关键帧的参数,如位置、旋转角、纹理的参数等。关键帧技术是计算机动画中最基本并且运用最广泛的方法。另外一种动画设置方法是样条驱动动画。在这种方法中,用户采用交互方式指定物体运动的轨迹样条。几乎所有的动画软件如Alias、Softimage、Wavefront、TDI、3DS等都提供这两种基本的动画设置方法。
无论是样条驱动动画还是关键帧插值方法,都会碰到这个问题:给定物体运动的轨迹,求物体在某一帧画面中的位置。物体运动的轨迹一般由参数样条来表示。如果直接将参数和帧频联系起来,对参数空间进行等间隔采样,有可能带来运动的不均匀性。为了使物体沿一样条匀速运动,必须建立弧长与样条参数的一一对应关系。Guenter等提出用Gauss型数值积分方法计算弧长,用Newton-Raphason迭代来确定给定弧长点在曲线上的位置,并采用查找表法记录参数点弧长值的方法来加速计算。在动画设计中,动画师经常需调整物体运动的轨迹来观察物体运动的效果,交互的速度是一个很重要的因素。Watt等提出了用向前差分加查找表的方法来提高交互的速度。在精度要求不是很高的情况下,他们的方法非常有效。
从原理上讲,关键帧插值问题可归结为参数插值问题,传统的插值方法都可应用到关键帧方法中。但关键帧插值又与纯数学的插值不同,它有其特殊性。一个好的关键帧插值方法必须能够产生逼真的运动效果并能给用户提供方便有效的控制手段。一个特定的运动从空间轨迹来看可能是正确的,但从运动学或动画设计来看可能是错误的或者不合适的。用户必须能够控制运动的运动学特性,即通过调整插值函数来改变运动的速度和加速度。为了很好地解决插值过程中的时间控制问题,Steketee等提出了用双插值的方法来控制运动参数。其中之一为位置样条,它是位置对关键帧的函数;另一条为运动样条,它是关键帧对时间的函数。Kochanek等提出了一类适合于keyframe系统的三次插值样条,他们把关键帧处的切矢量分成入矢量和出矢量两部分,并引入三个参数:张量t、连续量c和偏移量b对样条进行控制。该方法已在许多动画系统中得到了应用。
关
键帧插值系统中要解决的另一个问题是物体朝向的插值问题。物体的朝向一般可由Euler角来表示,因此朝向的插值问题可简单地转化为三个欧拉角的插值问题。但欧拉角表示又有它的局限性。因为旋转矩阵是不可交换的,基于欧拉角的旋转一定要按某个特定的次序进行;此外,等量的欧拉角变化不一定引起等量的旋转变化,从而导致旋转的不均匀;欧拉角还有可能导致自由度的丧失,即所谓的“gimble lock”现象。Shoemake为了解决因采用欧拉角表示引起的缺陷,最早把四元数引入到动画中,并提出了用单位四元数空间上的Bezier样条来插值四元数。Barr等人提出了一个采用四元数对带有角速度约束的景物的朝向进行光滑插值方法,他们的方法允许用户对轨迹端点处的角速度进行约束。Kim通过构造一组新的基,提出了把 空间曲线变化到单位四元数空间曲线的一般性方法。
二、物体变形动画
传统动画的一个显著特点是赋予每个角色以个性,并以形状变形来渲染某些夸张的效果。虽然传统动画的有些效果用三维动画还很难实现,但计算机动画的研究者们在形状变形方面已做了不少出色的工作,并在电视、电影、广告和MTV中得到了广泛的应用。较早的有1982年纽约理工学院的Tom Brigham制作的由一个女人变成一只山猫。近几年的工作更是不胜枚举。如迈克尔·杰克逊的音乐带“黑与白”这首歌中13个不同性别和种族的人的相互渐变;电影《终结者Ⅱ》中机械杀手T-1000由液体变为金属人,由金属人变为影片中的其它角色(由Alias软件制作);Exxon公司的影视广告中,一辆银色的轿车缓缓滑行渐变成一只老虎等等。大部分变形方法与物体的表示有密切的关系,如通过移动物体的顶点或控制顶点来对物体进行变形。为了使变形方法能很好地结合到造型和动画系统中,近十年来,人们提出了许多与物体表示无关的变形方法。
对于由多边形表示的物体,物体的变形可通过移动其多边形顶点来达到。但是,多边形的顶点以某种内在的一致性相关连,不恰当的移动很容易导致三维走样,比如原来共面的多边形变成了不共面的。参数曲面表示的物体可较好地克服上述问题。移动控制顶点仅仅改变了基函数的系数,曲面仍然是光滑的,所以参数曲面表示的物体可处理任意复杂的变形。但是,参数曲面表示的物体也会带来三维走样问题,由于控制顶点的分布一般比较稀疏,物体的变形不一定是我们所期望的;对于由多个面拼接而成的物体,变形的另一个约束条件是需保持相邻曲面间的连续性。Forsey和Bartel提出的层次B样条变形方法是B样条曲面变形方法的一大发展。他们解决了变形的范围问题,即用户可在更局部的范围控制曲面的变形,并且无需产生过多的控制顶点。实践表明,多边形和参数曲面表示各有其优缺点。参数曲面不能表示拓扑结构比较复杂的形体,对于非矩形域的拓扑结构,参数曲面表示起来较为困难; 而多边形则可以表示拓扑复杂的物体。
顾名思义,与物体表示无关的变形方法既可作用于多边形表示的物体,又可作用于参数曲面表示的物体。Barr提出的整体和局部变形方法是这一方面最早的工作。Barr方法的创新性在于当对物体的各部分实施变换时,变换矩阵不再是一个恒定值,即成为位置的函数。与物体表示无关的另一种变形方法为自由变形方法FFD,Sederberg的这种方法适用面广,可以说是物体变形中最实用的方法之一。FFD方法不对物体直接进行变形,而是对物体所嵌入的空间进行变形。FFD方法中的lattice块的形状为平行六面体,这在一定程度上限制了它的应用。Coquillart提出的拓广的FFD方法(简称EFFD)消除了对非平行六面体lattice的限制,使得初始的lattice允许棱柱和圆柱这种形状,因而增加了FFD的适用范围。Lamousin提出了基于NURBS的FFD方法NFFD,NFFD提供了更有效的控制。保体积的自由变形和约束变形也已有一些工作。目前的许多商用动画软件如Softimage、3DMAX、Maya等都有类似于FFD的功能。Ruprecht提出了一种通过散乱数据插值的空间变形方法。当物体的变形可通过移动lattice的控制顶点来实现时,上述各模型提供了强有力的变形工具。但是lattice变形和物体变形之间的对应关系并非很直观时,基于FFD的变形方法就难以奏效。Hsu等于1992年提出了一种通过变形后物体上点的偏移来反求lattice顶点,从而达到直接操纵物体变形的方法。Borrel和Bechmann提出了空间变形的简单约束变形(Scodef)法。在该方法中,用户定义一系列约束点、所需的偏移量和影响区域半径,在每个约束点处定义了一个以该点为中心的局部B样条基函数,该函数在影响区域外取为0。该方法所需的计算量较小,在工作站上可实时交互。Singh等在今年Siggraph上提出了线约束方法,而我们则在Pacific Graphics'98上独立提出了基于线、面、体约束的变形方法。基于FFD的变形动画一般是这样来实现的,先对物体所嵌入lattice的控制顶点设置动画,然后变形传播到物体本身。作为有意思的推广,Coquillart和Jancence允许变形工具和物体单独设置动画,即物体位于lattice内的局部坐标可不再保持不变。基
于FFD的变形动画方法总是需要移动许多控制顶点,当控制顶点较多时交互就变得很差。Lazarus等所提出的基于轴的变形方法(AxDf)提供了一种直观的变形技术。该方法的优点在于把物体的变形用其轴线的变形来控制,而对轴线设置动画是比较容易的。他们用该方法对鱼的游动进行模拟,取得了很好的效果。Chang等人提出了与Lazarus类似的方法,但基于不同的数学原理。Softimage软件中,也采用了类似的轴变形工具“Deform by spline”。自从Sederberg提出FFD以来,FFD方法已显示出其广泛的应用前景。Griessmair等把它应用于实体的变形,Chadwick等用它来控制关节动物的肌肉变形。
对于两个二维多边形之间的渐变,一般采取顶点之间的线性插值,即顶点位置的keyframe插值方法。但该方法生成的多边形有可能产生自交和不应有的收缩。1992年,Sederberg等提出了一种基于物理的二维形状渐变方法,他们把形状看成由电线框构成,然后求解所需能量最小的形变解。当两个多边形形状较类似时,该算法取得较好的效果,并能避免中间多边形的自交情形。1993年,Sederberg等人用多边形的内在定义来实现多边形的渐变,避免了以前角色动画中所出现的收缩和扭结现象。Shapira和Zhang分别提出了基于星形骨架和模糊数学的二维多边形渐变方法。在两个三维形体之间的渐变方面,研究者们也发表了许多创造性的结果。三维形体之间的渐变与物体的拓扑结构有密切的联系。Hong等人提出了基于最近形心法来匹配物体中的面,从而实现多面体之间渐变的方法。Bethel和Uselton提出通过加入退化的顶点和面,使得两个多面体具有相同的拓扑结构,从而达到多面体之间的渐变目的。Chen和Parent提出了一个二维分段线性轮廓线的变换算法,然后简单地讨论了三维放样物体的渐变问题。Parent提出通过递归分割物体中的面,使得物体具有一致的拓扑结构。Kaul和Rossignac用计算多面体对比例缩放后的Minkowski和来变换。Payne和Toga先把每个多面体转换成一个距离场的体表示,然后对三维体的每一点插值得到一个新的等值面,而这个等值面表示了原物体的某种组合。Kent等人提出通过合并多面体对的拓扑结构,使得它们有相同的顶点—边—面结构网。Lerios推广了Beier的线对思想,提出了基于Volume的三维物体渐变方法,这种方法具有一定的一般性。Cohen-OR采用扩展的距离场插值,提出了一种两个一般拓扑物体渐变的方法。
在计算机动画中,人体造型是一个颇为艰巨的问题。人的肌肉不仅形状复杂,而且随人体的运动而变形,Metaball是解决这类问题的有效手段。基于metaball的造型方法是由Blinn和Nishimura独立引入的,一个复杂的人体只需500个左右的metaball。一个metaball是一个具有密度的特殊的球,一簇metaball的密度为该簇中所有metaball密度之和,对应的三维模型可表达为由等密度面围成的体。由于metaball的特殊密度分布,多个metaball可融合成一个光滑的面,正如两个原子形成一个分子一样。通过位置、朝向、大小和密度的巧妙控制,可用metaball生成许多复杂的形体,而这些形体又是传统造型方法很难做到的。在绘制元球时,需进行光线和等势面的求交测试。Nishita提出把光线上的场函数用Bezier函数表示,然后用Bezier Clipping求根。Desbrun采用元球造型模拟了无弹力物体的溶接和分离过程。采用元球造型,物体的变形能以一种自然的方式进行。Softimage软件提供了很强的元球造型和动画功能。
二维图象的自然渐变在教育和娱乐方面都是一种非常有用的技术。在传统的电影制作中,达到这种效果的方法主要有两种。一是通过巧妙的剪辑。该方法的缺点是需要许多技巧和枯燥的工作。另一种是交溶技术。即在一幅图象淡出的同时另一幅图象淡入。当对应的两个物体很容易造型且对应关系容易建立时,三维形体渐变是一种可行的方法。但由于三维渐变技术往往对物体中多边形的个数、拓扑结构和顶点之间的对应关系附加苛刻的限制,再加上许多时候需渐变的物体很复杂,比如两个动物、两个人之间的渐变等等,这就大大缩小了三维渐变的适用范围,用图象处理技术反而方便得多。较早的工作有Wolberg的网格变形技术。他提出用B样条网覆盖到数字图象上,然后移动B样条网的控制顶点来控制图象的渐变。后来,Beier和Neely提出了一种基于特征的自然渐变技术或称为Field Morphing。该方法允许动画师对渐变进行直观的控制,通过交互地指定渐变中图象的特征(线对),可以方便地达到动画师预期的视觉效果。杰克逊的“黑与白”这首MTV歌中,人之间的互变所使用的即为这种技术。Lee等提出了一种基于Snake的二维图象morphing方法。二维图象morphing不仅可用于娱乐行业,也可用于科学计算可视化,如Ruprecht等人把它应用于科学计算可视化中的图象插值。给定一幅人或动物的图象,用二维morphing技术使得图象中的人或动物做出某种表情是一件既困难又费时的事。Liwinowicz和Willams先用摄像机摄得一真人讲话、做某种表情时的动作,然后用交互方式勾划出该人的特征线,并用这些
特征线去控制别的人、动物或卡通画,取得了非常精彩的效果。在Eddie等图象后处理软件中,二维图象Morphing功能已非常成熟。
三、 过程动画
过程动画指的是动画中物体的运动或变形由用一个过程来描述。在柔性物体的动画中,物体的形变是任意的,可由动画师任意控制的;在过程动画中,物体的变形则基于一定的数学模型或物理规律。最简单的过程动画是用一个数学模型去控制物体的几何形状和运动,如水波随风的运动。较复杂的如包括物体的变形、弹性理论、动力学、碰撞检测在内的物体的运动。另一类过程动画为粒子和群体的动画。
粒子系统动画方面的先驱是Reeves,他于1983年所发表的论文中成功地提出了一种模拟不规则模糊物体的景物生成系统。在他的工作中,造型和动画连成一体。一个物体由一系列的粒子来表示,根据各自的动画,每个粒子都要经历“出生”,“运动和生长”及“死亡”三个阶段。动画剧本不仅可控制粒子的位置和速度,还可控制粒子的外形参数如颜色、大小、透明度等。由于粒子系统是一个有“生命”的系统,它充分体现了不规则物体的动态性和随机性,因而可产生一系列运动进化的画面。这使得模拟动态的自然景色如火、云、水等成为可能。粒子系统已经成功地模拟了电影《Star Trek Ⅱ: The Wrath of Khan 》中的一系列特技镜头。在后续的一篇论文中,Reeves和Blau发展了粒子系统,他们用“volume filling ”基本单元去生成随时间改变形状但又基本保持不变的实体,如草叶随风的飘动,并提出了一个巧妙的绘制模型。该方法曾用来生成电影《The Adventures of Andre and Wally B. 》中的三维森林和草的背景。粒子系统的一个主要的优点是数据库放大的功能,比如Reeves声称用三个基本的描述便可生成由百万个粒子构成的森林景色。Peachey和Fournier用粒子系统去模拟由风引起的泡沫和溅水的动画,也取得了很好的效果。最近,Reed等人用粒子系统成功地模拟了闪电。粒子系统的思想现在已成功地应用于著名动画软件Alias|Wavefront中。电影《龙卷风》中许多出神入化的效果就是采用Alias|Wavefront软件的粒子系统制作出来的。它所模拟的火光、烟雾等特殊光效已广泛应用于电影行业并多次荣获大奖。Softimage公司也不甘示弱,推出了专门的粒子系统模块Particle。
在生物界,许多动物如鸟、鱼等以某种群体的方式运动。这种运动既有随机性,又有一定的规律性。Reynolds提出的群体动画成功地解决了这一问题。Reynolds指出,群体的行为包含两个对立的因素,即既要相互靠近又要避免碰撞。他用三条按优先级递减的原则来控制群体的行为:①碰撞避免原则,即避免与相邻的群体成员相碰;②速度匹配原则,即尽量匹配相邻群体成员的速度;③群体合群原则,即群体成员尽量靠近。
最近几年,布料动画成了人们感兴趣的研究课题。布料动画不仅包括人体衣服的动画,还包括旗帜、窗帘、桌布等的动画。布料动画的一个特殊应用领域为时装设计,它将改变传统的服装设计过程,可让人们在衣服做好之前看到服装的式样和试穿后的形态。1986年,Weil提出了一种基于几何的布料物体造型方法。他把布料悬挂在一些约束点上,基于悬链线计算出布料自由悬挂时的形状。显然,该方法不能模拟衣服的绉褶。其它的几何方法有,Hinds提出的基于等距面的交互服装设计系统,Kunni提出的采用奇异性理论模拟衣服和绉褶的方法。基于几何的方法不考虑布料的质量、弹性系数等物理因素,因而很难逼真地生成布料的动画。近几年,研究者们更多地用基于物理的方法去模拟。基于弹性理论,Terzopoulos等人提出了一种描述曲面的运动变形方法。该方法基于以动力学微分方程,把物体形状和运动的描述统一起来。作为实例,他们模拟了旗帜的飘动和地毯的坠落过程。Terzopoulos的方法基于Lagrange形式的变分原理,而Aono的方法则基于弹性理论的平衡方程和D’Alembert原理,他的方法更多地考虑了材料的物理参数和纤维特征,因而更易控制。Carigan等人扩展了Terzopoulos的方法,很好地模拟了一个穿着衣服的演员的动画。Breen等把布理解成由一系列线穿梭成的交叉点,根据“interacting particle”方法,提出了一个丝织布料的理论模型,很好地模拟了布的悬挂效果,并应用于CAD。Breen等模拟了由某种特定的纤维编织成的布放于别的物体上的形态。通过一种称为“Kawabata Evaluation System”的纤维测试设备去微调前面的模型,他们能预测较大范围内纤维编织物的悬挂形态。在布料动画中,一个瓶颈问题是系统的时间步长必须足够小,从而避免数值计算的不稳定。通过隐式积分方法,Baraff等人提出了一种可以采用大时间步长的衣服仿真系统。他们的结果被刊载在今年Siggraph的封面上,效果非常逼真。
水波是动画设计经常要模拟的效果。一个简单而有效的方法是用正弦波,动画效果可通过对诸如振幅、相位等参数来设置。Fourier合成方法是模拟生成许多自然现象的有效方法,Schachter用余弦函数
去调制平面的颜色, 并用于飞行模拟。Gardner用三维Fourier波来模拟云、树和地形也取得了较好的效果。水波可以用平行波,一种三维空间的正弦波状曲面来造型。Mastin等人提出的水波模型更细致地反映了水波的物理过程。他们指出,海洋波是一种复杂的波形,受风传递的动量所影响,频谱成分能量的传递是一个非线性的过程,可用由观测数据而得的Pierson-Moskowitz模型去模拟。但是,Fourier合成方法只适合于深水区域波的模拟,而实际波的侧面轮廓线经常是多值的、连续改变形状的。Peachey和Fournier模拟了随水深不同而有不同传播速度的波,并模拟了溅水和泡沫。依据他们的方法,波在浅水区域减慢,较好地模拟了接近海滩的水波。在波的传播方向,波的截面轮廓线不一定是正弦波,受风驱动的波其形状是风速的函数。风速加快时,波峰变陡,正弦波只适合于小振幅的情况。Fournier的方法模拟了由风引起的波峰的改变。Alias软件能模拟非常逼真的水波效果。
四、关节动画和人体动画
在三维计算机动画中,把人体作为其中的角色一直是研究者感兴趣的目标,因而关节动画越来越成为人们致力解决的研究课题。在这一方面引人注目的早期工作从动画电影《Tony de Peltrie》和《Rendezvous a Montreal》可见一斑,而近期在这一方面的工作更是令人惊叹不已,如电影《终结者Ⅱ》、《侏罗纪公园》。虽然计算机动画在许多领域占据越来越重要的角色,人体和动物动画的许多问题仍未很好解决。人体具有200个以上的自由度和非常复杂的运动,人的形状不规则,人的肌肉随着人体的运动而变形,人的个性、表情等千变万化。另外,由于人类对自身的运动非常熟悉,不协调的运动很容易被观察者所察觉。可以说,人体动画是计算机动画中最富挑战性的课题之一。
正向或逆向运动学方法是一种设置关节动画的有效方法。通过对关节旋转角设置关键帧,得到相关连的各个肢体的位置,这种方法一般称为正向运动学方法。Denavit和Hartenberg最早提出了一种通过相对坐标系来描述各个关节位置的矩阵描述方法,并被从事关节动画的研究者所广泛采用。但对于一个缺乏经验的动画师来说,通过设置各个关节的关键帧来产生逼真的运动是非常困难的。一种实用的解决方法是通过实时输入设备记录真人各关节的空间运动数据,即运动捕获法。Alias公司的产品部经理Gary Mundell曾称:“Motion capture is the future”。为了克服该方法缺乏灵活性的缺点,Witkin通过混合动画曲线来编辑捕获的数据,从而使建立可重用的运动库成为可能。Autodesk的Gleicher提出了一种运动重定目标的新概念。该方法能把一个角色的动画赋给另一个具有相同关节结构但具有不同关节长度的角色,并能保持原有动画的质量,因而非常适合运动捕获动画的处理。逆运动学方法在一定程度上减轻了正运动学方法的繁琐工作,用户通过指定末端关节的位置,计算机自动计算出各中间关节的位置。逆运动学分析求解方法虽然能求得所有解,但随着关节复杂度的增加,逆运动学的复杂度急剧增加,分析求解的代价也越来越大,数值求解成了一种可行的方案。Korein提出了一种对每一关节段采用层次工作空间的直觉方法,该方法尽量使关节位置的移动最小。该方法带来的问题是用户对得到的解无法控制,对于复杂的关节结构,得到的不一定是产生自然运动的解。Girard和Maciejewski提出了一种用逆运动学生成关节运动的方法。在他们的方法中,用户指定脚的世界坐标系位置,然后用伪逆Jacobian矩阵求解从脚到臀部关节的旋转角。该方法是生成逼真关节运动的最好方法之一。采用运动学求解的一个优点是可以对关节的某些关键位置设定约束。例如,当一个人弯曲他的膝盖时,可约束他的脚在地板上,而身体则往下倾。类似,当人行走时,先使身体绕一只脚旋转,然后绕两只脚旋转,再绕另一只脚旋转。带约束的关节动画常采用逆运动学求解,这相当于从众多的解中选取一个满足约束的解。如果约束的只是一个点,可采取重新构造关节树的方法。Badler等人的方法允许对关节多重约束,当所有的约束不能同时满足时则按约束的重要性排序,并采用迭代法求解逆运动学方程。把运动学和动力学相结合允许动画师以适合他的方式思考问题。Isaacs把运动学和动力学约束显式表达出来,然后求解这些方程。遗憾的是,这种方法的计算量极大。Boulic提出了一种适合关节运动编辑的正向和逆向运动学相结合的方法,动画师可对已有的关节运动作交互的基于目标的修改。该方法的关键思想是把所要求的关节空间运动插入逆向运动学控制机制中。Phillips等人提出了一个交互的通过运动学约束来控制双足关节动物运动的方法,这些约束模型能抓住运动的特点,并能控制人的平衡和稳定。Calvert提出了一个舞蹈的动画合成方法。动画软件Maya、Softimage和Alias|Wavefront都提供正向运动学和逆向运动学动画设置方法。Maya 是一个面向角色动画的软件,Softimage则专门有一个设置关节动画的模块Actor。
与运动学相比,动力学方法能生成更复杂和逼真的运动,并且需指定的
参数相对较少。但动力学方法的计算量相当大,且很难控制。基于Euler动力学方程,Armstrong和Green提出了一种用于图形仿真的递归方法,避免了矩阵的建立过程。该递归方法的复杂度与自由度的个数呈线性关系,速度快而且稳定。动力学方法中另一重要问题是运动的控制,若没有有效的控制手段,用户就必须提供具体的如力和力矩这样的控制指令,而这几乎是不太可能的。因而,有必要提供高层的控制和协调手段。能够满足上述要求的一种方法是预处理方法。该方法把所需的约束和控制转换成适当的力和力矩,然后包括到动力学方程中。另一种方法将约束以方程的形式给出。如果约束方程的个数与未知数的个数相等,也即系统是全约束的,则可用一般的稀疏矩阵法快速求解。但如果系统是欠约束的,则情形就比较复杂,因为有无穷多的解。例如,给定手的到达目标,就有许多关节构造方法可使手到达所要求位置。Witkin提出了一种使某种目标函数极小的附加约束方法,并用共轭梯度法求解。在上述例子中,目标函数可选为运动的总动能。基于物理仿真的一大优点在于能自动地模拟物体之间的相互作用。这实际上牵涉到两个问题,即作用在何时发生及相互作用后的响应。Moore提出用一系列方程来描述碰撞时的动量守恒,并用分析法求解碰撞后物体新的位置和速度。碰撞检测及响应虽然增加了仿真的真实性,但同时计算量也急剧增加。在基于目标的运动控制方面,较早的有Zeltzer的工作。在他的面向任务的系统中,能实现诸如行走和跳跃这样的人体运动。但他在计算关节旋转角时,采用的是运动学和对测试数据插值的方法,因而不能实现如改变速度、改变步长这样的运动控制。Bruderlin和Calvert提出了一个人体走路动画的混合方法,该方法结合了基于目标的和动力学两种运动控制技术。在他们实现的实验性动画系统KLAW中,用户指定一些参数如速度、步长和步频后,几乎可以以实时的速度生成大范围的人体行走方式。在他们后来提出的过程控制方法中,用步伐之间的三次和线性插值取代了原来的动力学方法,而真实性与原来相差无几。因而,动画师几乎可以实时交互控制人体的运动。
指定关节动物的运动,使它能以符合物理规律真实的方式达到给定的目标(如投一个篮球到球框中)是动画师的目标之一。Witkin等人所提出的时空约束是生成角色动画的一种新方法。在时空约束方法中,动画师指定角色必须做什么,例如从这里跳到那里;怎样运动,比如不浪费能量;角色的物理结构,如几何、质量、连接性质;角色为完成运动可利用的物理资源,如角色的肌肉、可以产生推力的地板。基于这些描述,加上牛顿定律,构成一个约束的最优化问题。求解该约束问题得到一个符合物理规律的运动。该方法生成的真实运动与传统动画的一些原则如压扁和伸展、期望等相符合。时空约束得到的是一个非线性约束变分问题,通常该问题没有唯一解。一个解决方法是用三次B样条基函数的线性组合来减少可能的轨迹数,并用约束优化来求解B样条的系数。但这类非线性优化问题的一般解是未知的。为此,Cohen提出采用符号和数值混合技术来进行交互控制。在该系统中,用户能干涉迭代数值优化过程并能指导优化过程使它收敛到可接受的解。但是随着关节数和任务复杂度的增加,其计算量仍然很大。分析标明,计算复杂度主要取决于表示广义自由度有限基的选择上,Liu等人提出用小波基来表示广义自由度对时间的函数,该方法的优点在于能自动地只在需要的地方增加运动细节,从而使离散变量的数目减少到最小,求解的收敛速度更快。
在计算机动画中,建立有趣且逼真的虚拟实体并能同时保持对它们的控制是相当困难的,通常在复杂度和控制的有效性之间取一折衷。对一固定的关节结构,常用优化方法来自动生成动力学控制系统,如Ngo提出的针对刺激—反应对的算法,这些算法成功地生成了二维刚体模型的运动。对于非固定的三维动物,Sims提出了能生成自主(autonomous)三维虚拟动物的方法,该方法无须用户提供繁琐的设计指定工作,动物形态学和控制肌肉的神经系统由算法自动产生。
在脸部造型方面,DeCarlo提出了一种基于变分技术自动生成人脸几何模型的系统。在脸部表情的动画模拟方面,Bergeron提出用数字化仪将人脸的各种表情输入到计算机中,然后用这些表情的线性组合来产生新的脸部表情。该方法的缺点是缺乏灵活性,不能模拟表情的细微变化,并且与表情库有很大关系。1987年,Waters提出了一个基于Facial Action Coding System的脸部表情动画模拟方法。该方法由一个参数肌肉模型组成,人的脸用多边形网格来表示,并用肌肉向量来控制人脸的变形。它的特点在于可用一定数量的参数对模型的特征肌肉进行控制,并且不针对特定的脸部拓扑结构。Waters用该方法生成了happiness、fear、anger、disgust、surprise等逼真的表情,Waters的算法已成为模拟脸部表情动画的核心算法之一。因为一些常用的表情是由一组肌肉按某种协调的方式运动产生的,Reeves提出了一种通过高层的宏肌肉控制低层肌肉的方法。宏肌肉由一系列低
层的肌肉组成,每一块低层的肌肉赋以权,宏肌肉收缩引起低层肌肉按某种加权形式收缩。Guenter等人提出了一种根据真人脸部表情捕获人脸三维几何信息、颜色和绘制信息的系统,然后由捕获的数据重建出非常逼真的三维动态表情。Pighin提出了一种根据照片建立人脸三维模型的纹理映射,并采用Morphing技术生成不同脸部表情间的过渡。
五、基于物理模型的动画
基于物理模型的动画技术是八十年代后期发展起来的一种新的计算机动画技术。经过近几年的发展,它已在图形学中成为一种具有潜在优势的三维造型和运动模拟技术。尽管该技术比传统动画技术的计算复杂度要高得多,但它能逼真地模拟各种自然物理现象,这是基于几何的传统动画生成技术所无法比拟的。著名动画软件Softimage在基于动力学的动画功能方面已相当成熟,它能处理诸如重力、风、碰撞检测等在内的复杂动力学模型。
传统动画技术要求预先描述物体在某一时刻的瞬时几何位置、方向和形状,其运动则往往通过前面第一节中所介绍的参数关键帧技术来完成。因而,欲模拟一个逼真的自然运动需要动画设计者细致、耐心的调整,要求动画设计者依赖其对真实物理世界的直观感觉来设计物体在场景中的运动。但由于我们对日常物理世界极为熟悉,且真实的物体运动往往非常复杂,因而,采用传统的动画设计技术一般来说难以生成令人满意的运动。今天,许多动画师不得不采用一些特殊的软件来模拟特定的物体运动。基于物理模型的动画技术则考虑了物体在真实世界中的属性,如它具有质量、转动惯矩、弹性、摩擦力等,并采用动力学原理来自动产生物体的运动。当场景中的物体受到外力作用时,牛顿力学中的标准动力学方程可用来自动生成物体在各个时间点的位置、方向及其形状。此时,计算机动画设计者不必关心物体运动过程的细节,只需确定物体运动所需的一些物理属性及一些约束关系,如质量、外力等。
最近几年,已有许多研究者对动力学方程在计算机动画中的应用进行了深入广泛的研究,提出了许多有效的运动生成方法。总体上来说,这些方法大致可分为三类,即刚体运动模拟、塑性物体变形运动以及流体运动模拟。下面,我们将简单介绍一下这三方面已有的成果及其不足之处。
在刚体运动模拟方面,其研究重点集中在采用牛顿动力学的各种方程来模拟刚体系统的运动。由于在真实的刚体运动中任意两个刚体不会相互贯穿, 因而在运动过程模拟时,必须进行碰撞检测,并对碰撞后的物体运动响应再进行处理。Armstrong和Green、Wilhelms直接采用动力学方程来模拟刚体关节链的运动。Witkin等分别利用Lagrangian动力学方程及时空约束和能量约束方程来进行物体的运动仿真。而Isaacs等则分别采用逆动力学和正动力学方法来模拟刚体系统的运动,并揉合进了许多传统的动画生成技术,如关键帧插值技术、正运动学和逆运动学技术等来对某些关节处的刚体运动加以控制。因而,这两种方法较之前面的几种方法对运动的模拟更具有效性和可控性。同时,他们还在各自的系统中引进了运动碰撞检测机制。Barzel等人提出了一个基于动力学约束控制的刚体造型系统,他们通过几何约束建立物体,用逆动力学求解约束力,然后模型按满足这些约束的方式进行组合。由于每个刚体元素的运动都满足物理规律,因而生成的运动非常逼真。Hahn采用解析方法来计算两刚体碰撞时产生的冲量。该方法假定两刚体在接触的瞬间只有一点接触,因而是非常理想化的。为防止在非完全弹性碰撞时刚体间的相互贯穿,Hahn将这种碰撞接触模拟为一个屡次发生碰撞的序列。Moore和Wilhelms采用了与Hahn类似的假设和方法来计算刚体相撞所产生的力。Moore和Wilhelms将瞬时碰撞模拟为一个很小间隔的单碰撞的序列,并用非解析方法来处理刚体间的非完全弹性碰撞问题。对碰撞响应问题,他们则采用一具有常数弹性系数的弹簧来加以模拟。虽然,上述两种碰撞模型避免了景物在运动过程中的相互贯穿现象,但它却不能有效地计算非完全弹性碰撞时所产生的力。注意到上述模型的这一缺陷,Baraff提出了一个解析计算非完全弹性刚体系统碰撞产生的冲力的方法。该模型允许两刚体在多点接触碰撞。多面体间碰撞冲力的计算则采用线性规划方法(最优化)。在Baraff的后续几篇文章中,他将上述算法分别拓广到具有曲面的一般性场景中,同时他还考虑了两物体碰撞滚动时产生摩擦力的情况。对于刚体物体,Baraff提出了一个计算包含摩擦力在内的碰撞力的方法,由于无需转换成优化问题,因而更简单、可靠、速度更快。1998年,Grzeszczuk等人提出了一种取代直接计算动力学模型的神经网络方法,通过预先学习动力学模型,该方法能生成接近物理真实的动画,但计算速度却快一至二个数量级。
至此我们已简单介绍了刚体在碰撞瞬时的响应问题,但并未涉及到刚体碰撞的另一问题:碰撞检测。碰撞检测在机器人领域中曾得到过广泛的研究。Hahn采用层次包围盒技术来加速多面体场景的碰撞检测。而Moore和Wilhelms则提出了二个有效的碰撞检测算法,其一用来处理三角剖分过的物体表面,
而另一算法则用来处理多面体环境的碰撞检测。由于任一物体表面均可表示成一系列三角面片,因而,该碰撞检测算法具有普遍性。Moore和Wilhelms算法的基本思想是利用一个运动刚体上的各顶点的运动轨迹与另一运动或静止刚体上的每一个三角面片进行求交测试,若存在有效交点,则说明两刚体将相碰撞,否则,在该时间段时,它们将不相碰。为提高该算法的计算效率,Moore和Wilhelms根据运动刚体的各顶点位置建立空间八叉树,对要测试的另一刚体的每一三角片,由其运动前后的位置建立包围盒,并用运动速度最快点所走过的距离扩展该包围盒。用该包围盒对八叉树进行递归测试,若某一点落在包围盒内,则进行细致的判别,否则,则予以拒绝。这一算法的缺点是当景物为一复杂的雕塑曲面时,对表面的三角剖分可能产生大量的三角片,这会大大影响算法的效率。为此,Baraff、Herzen等人提出了基于参数曲面的几何碰撞检测算法。Baraff算法采用两个刚体的状态空间来表示碰撞约束,该状态空间为十二维空间,它们分别表示了两刚体的六个自由度。Baraff进而将两刚体的碰撞检测转化为一隐式约束方程,由此,可方便地决定两刚体是否相碰,若相碰,还可求出该碰撞响应。而Herzen等则数值求解两参数曲面在接触点处或最近点处的参数值来判定它们是否相交并应用层次细分技术。采用层次八叉树结构,Yang等人提出了一个基于三角形的快速碰撞检测算法,并把它应用于人体动画和布料动画中。
在真实物理世界中,许多物体并非完全是刚体,它们在运动过程中会产生一定的形变,即所谓柔性物体。物体的变形一直是计算机图形学的研究热点,这在前面已详细介绍过。由于传统的表面变形均是基于几何的,其形变状态完全人为给定,因而变形过程缺乏真实性。1986年,Weil首次讨论了基于物理模型的柔性物体的变形问题。当时仅仅是用来模拟布料悬挂在钉子上的形态。Feynman则提出了一个更完善的布料悬挂模型。后来,许多研究者相继开始采用各种物理模型来对非刚性物体进行运动变形模拟。Miller用质点—弹簧系统模拟了蛇和虫子这类无腿动物的蠕动动画。他用弹簧的收缩来模拟肌肉的收缩,并考虑了动力学模型中的方向摩擦。他制作的蛇和虫子的动画由于其高度逼真性引起了很大的反响。Tu等人提出了一种模拟鱼的行为的动画,可在动画师较少干涉的情况下生成真实的个体和群体运动。Terzopoulos等采用连续弹性理论来模拟物体的形变和运动。通过考虑物体的分布式物理属性,如质量、弹性等,他们成功地模拟了柔性物体对外力的动力学响应。尽管该模型对大变形物体具有很好的效果,但当物体的刚性增强时,该模型会出现数值不稳定(病态)现象。后来,他进一步发展了其模型。物体的变形被分解成为参考分量和一平移分量,参考分量用来表示物体的任一形状,而平移分量则控制物体的形变量,且完全由一线性弹性变形模型所控制。在他的另一篇文章中,他们进一步完善了其变形模型使之能够模拟各种变形效果,包括:完全弹性变形、非完全弹性变形、塑性变形、断裂等。
采用Lagrangian方程和热方程,Terzopoulos等人模拟了变形物体的融化过程。为了生成逼真的柔性物体的运动,Platt等人提出了柔性物体的两种约束方法,即反应(reaction)约束和扩充的拉格朗日约束。反应约束允许柔性多边形模型碰撞的快速计算,并允许动画师进行推拉控制。扩充的拉格朗日约束允许生成诸如体积不变的压扁和太妃糖类物质的挤压效果。Witkin提出了在参数化模型中附加求解几何约束的方法。他们把约束表达成能量函数,并使能量的梯度沿模型的参数空间变化。直观地讲,能量约束象力一样把模型拉到位,并使模型产生相应的变形。这种方法的优点在于它的广泛适用性,缺点是计算量大。在仿真具有柔性体的复杂系统时,若把其几何和动力学分开讨论,则问题将会简化。Pentland提出用振动模式来描述物体的动力学,用体积模式来描述物体的几何,然后用多项式变形映射将它们合在一起。采用这种混合的表示,其效率可比求解一般的非刚体逆动力学问题提高二至三个数量级。该方法非常适合于制作传统动画中的伸展/压扁、夸张等效果。
六、计算机动画的研究动向
计算机动画发展到今天,无论在理论还是在应用上都已取得了巨大的成功,但离人们的期望还是有一定的距离。从最近几年发表的论文看,笔者认为下面几个研究方向值得我们注意:
(1)Catmull-Clark细分曲面的造型和动画研究。动画追求的新奇性和创新性推动了这一方向的发展。物体的造型和动画通常具有密切的联系,造型的某些新方法往往同时提供了新的动画控制方法。由于NURBS曲面在表示拓扑复杂物体存在许多困难,由Catmull和Clark提出的根据任意拓扑控制网格生成B样条曲面的细分曲面方法近几年来在计算机动画中越来越受到人们的重视,相关的论文不少。1996年MacCraken把细分曲面应用于任意拓扑的自由变形中。在今年的Siggraph中,有三篇与Catmull-Clark细分曲面有关的论文,其中Pixar公司的DeRose等人把细分曲面引入到角色动画中,取得了
非常好的效果。在Alias|Wavefront公司的动画软件Maya中,基于Catmull-Clark细分曲面的造型和动画已经成为其重要手段。
(2)隐式曲面的造型和动画研究。该研究方向近年来逐渐为人们研究的热点,欧洲图形学学会专门设立了相应的Implicit Surface学术会议。该会议从1995年开始,每一年半举办一次,现举办了三次(1995年,1996年和1998年)。隐式曲面是元球的更一般形式,它在表现人体的肌肉、水滴、云、树等物体的造型和动画方面有很大的优势。
(3)运动捕获动画数据的处理。运动捕获技术在电影《泰坦尼克》中取得了非常大的成功,该片中乘客从船上落入水中的许多惊险镜头都是由动画特技来完成的。实际上,运动捕获已成为现代高科技电影不可缺少的工具。运动捕获的动画数据包括关节运动的数据和脸部表情动画的数据。怎样把运动捕获动画数据重用和重置目标值得进一步的研究。
(4)三维Morphing和变形研究。二维图象的Morphing虽然已经比较成熟,但三维Morphing方法尚存在各种各样的缺陷,具有任意拓扑的两三维物体之间的Morphing技术还有待于进一步的发展。基于约束的变形也是值得研究的方向。
上一页123456789