三维计算机动画的主要研究目标是什么?
在三维计算机动画中,把人体作为其中的角色一直是研究者感兴趣的目标,因而关节动画越来越成为人们致力解决的研究课题。在这一方面引人注目的早期工作从动画电影《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等人提出用小波基来表示广义自由度对时间的函数,该方法的优点在于能自动地只在需要的地方增加运动细节,从而使离散变量的数目减少到最小,求解的收敛速度更快。