在3ds Max中,实现正向运动和反向运动一般都是通过层级链接进行的。层级链接可将一个对象和另一个对象链接起来,当变换其中某个对象时,与之相链接的对象也会随之产生相应的运动。
什么是正向运动
正向运动是指父对象控制子对象的运动,但子对象的运动对父对象不产生影响。当父对象运动时,子对象跟随父对象运动,而子对象以自身方式运动时,父对象不受任何影响。例如,在田径比赛中的铁饼运动,如果将人的身体设定为父对象,手臂作为次一级子对象,手中的铁饼作为下一级子对象。那么,在铁饼抛出的一瞬间,身体的高速旋转带动了手臂的运动,而手臂的运动促使铁饼沿圆周旋转的切线方向抛出。这时,作为父对象的身体影响了作为子对象的手臂,而作为子对象的手臂又影响了作为下一级子对象的铁饼。而反过来,铁饼的运动不会影响手臂,手臂的运动也不会影响身体。这样就构成了一个正向运动系统。
在3ds Max中,正向运动是系统层级默认的管理方式。
当两个对象建立链接并构成正向运动系统后,子对象的位置、旋转和缩放等变换都将取决于其父对象的相关运动。同时,父子对象构成的正向运动系统的变换中心就是父对象的变换轴心。
在正向运动系统中,若移动、旋转或缩放父对象,子对象随之变换相等的量;若移动、旋转或缩放子对象,则父对象不会发生任何变化。例如,将边长为40的正方体定义为半径为15的球体的父对象,如图所示。当正方体移动时,球体随之按等量参数移动;反之,当球体移动时,而正方体没有任何变化。当正方体以150%的比例放大时,球体也随之按等量的参数放大。当球体以150%的比例放大时,正方体却没有任何变化。
在运用正向运动进行动画设计时,一般遵循由上到下的顺序。其基本方法是:先根据系统的组成结构和部件之间的联动关系,确定组成部分的层级关系。接着完成各个组件的建模,并确定各组件的初始位置。使用链接工具设置各个部件的链接关系,并根据需要调整正向运动系统的轴心。
正向运动在处理主动与被动关系时比较灵活,可创建各种正向运动动画,如机械联动、行星运行等。但在创建复杂的高级角色动画时就会显得力不从心。因此,这就需要借助于反向运动系统。
认识反向运动学
反向运动学是通过子对象来控制父对象的运动,并且可以设置每个对象的运动范围,使得父对象在跟随子对象运动时不会超出设定的范围。例如,引体向上运动,如果将人的身体设定为父对象,手臂作为次一级子对象,单杠作为下一级子对象。此时,身体对于下一级子对象手臂不能产生任何影响,但反过来手臂的运动却对身体影响很大,如手臂的弯曲使身体向上移动。而手臂作为单杠的父对象却对单杠子对象没有任何影响。在整个运动过程中,父对象不能影响子对象,而子对象却能影响到父对象,这就构成了反向运动。
3ds Max提供了一整套完善的反向运动系统。借助这个系统,只要移动对象层级结构中的一个对象就可以带动整个层级结构运动起来。
在创建角色动画时,运用反向运动系统(IK)可以方便地对关节进行控制,创建复杂的反向运动动画。此外,常常还可以将反向运动系统(IK)与骨骼系统联合起来,方便地创建灵活的复杂层级关系的人物、动物或机械结构。
反向运动的动画设计主要集中在链接参数的设置上,这也是反向运动的难点所在。要设置反向运动的链接参数,需要大量的物理、数学等方面的专业知识,对运动的受限条件(如阻尼、摩擦力对运动物体的影响形式和大小等)需要有着清晰的认识。但是,反向运动的参数一旦设置完毕,动画造型的设计就特别简单、方便。这时只需要指定运动的各个关节,将其放置在相应的位置上,然后前进到下一帧,确定各个关节在此时的位置即可。系统会在这几个关键帧之间插值计算出各级物体的位置,自动生成中间帧,从而完成一个连贯的动画过程。