|
正如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软件能模拟非常逼真的水波效果。 |