正向运动是子物体跟随父物体的运动规律,即在正向运动时,子物体的运动跟随父物体运动,而子物体按自己的方式运动时,父物体不受影响。正向运动的概念可以理解为:如果模拟制作一只动物活动的动画,将动物的身躯设为父物体,头为子物体。当动物躺下时,身躯(父物体)向下,头(子物体)也跟着向下运动;而当头(子物体)左右转动时,身躯(父物体)不受影响。
同样道理,对动物来说,身躯是父物体,两条上肢是身躯的子物体,双肢同时又互为兄弟,因为它们共有一个父物体。上肢又是前肢的父物体,前肢是爪的父物体。如果移动身躯,则上肢、前肢、爪均随之运动,若转动爪则前肢、上肢和身躯不受影响。一个单一的父物体可以有许多子物体,而一个子物体只能有一个父物体。
反向运动与正向运动刚好相反,是父物体跟随子物体运动的系统。3DStudioMAX3拥有一套完善的三维空间反向运动系统(Three-DimensionsInverseKinematics,简称IK),使用IK系统,只需移动层次连接中的单一物体而使整个物体出现复杂的层级运动。IK在设计制作复杂的人物、动物或机械运动时体现出不可替代的优势。和正向运动相比较,IK系统要花一定的时间用于参数的设置工作,同时需要用到物理学、数学方面的知识及丰富而敏锐的想象力和观察力。如果经验丰富且善于联想,你能很快制作一个生动逼真的三维人物的行走动画。大致步骤是拨动人物活动的各关节,摆出所需的初始姿态,移动到另一个关键帧,确定该时刻的动作姿态,依此类推,3DStudioMAX3会自动生成关键帧之间连贯的行走动作。
将人走路时头和四肢按一定的关系一层层连接起来,形成HierarchyLinkage(层次树连接)。需要明确物体间运动的关联及影响,利用层次树结构可较好地建立物体及其各部分间的连接,使设置动作显得简明而轻松。对于正向运动与反向运动来说,层级命令面板都很重要。经过层级命令连接,父物体与子物体均以层次连接的树形结构呈现,通常树只有一个主干(父物体),而有许多支干(子物体或孙一级子物体)。在3DStudioMAX3中,树形结构的层次连接的效果会因使用正向运动还是反向运动而不同。系统的默认值是正向运动。
11.1正向运动
3DStudioMAX3中复杂对象的层次树连接类似于族谱的形式,其中单独的父物体可有多个子物体与之相连,而每个子物体只能有一个父物体。正向运动中父物体的运动影响子物体的运动,而逆向运动中子物体的运动影响父物体的运动。
下面通过实例讲述正向运动的动画效果,主要以创建的一个机械手来演示父子物体层次连接后的正向运动。机械手的逻辑关系是:当底座移动时,其他物体都跟随运动。垂直长轴运动时,除底座保持不动外,其他连到垂直长轴上的物体都跟着运动。
11.1.1创建机械手
机械手从下至上由六个物体组成:底座、垂直长轴、U形支架转轴、水平机械臂、机械臂上的水平长轴和在水平长轴末端的U形机械手,如图11-1所示。在3DStudioMAX1.2的场景文件夹中该文件名为Tut10_1.Max。在未建立层次连接之前,机械手各个部位之间的活动是互不影响的,无论移动或旋转任何一方,其他物体都不会产生关联运动。连接父物体和子物体的方法是先选择一个对象作为子物体,然后在主工具栏上单击SelectandLink(选择并连接)按钮,从子物体上拖动光标到父物体便完成连接。连接后,一旦父物体产生运动,子物体就会受到影响。但子物体运动不会影响父物体。
首先将垂直长轴连接到底座上。方法是点选垂直长轴,单击主工具栏上的SelectandLink(选择并连接)按钮,在垂直长轴上按住鼠标左键不放并拖到底座上时松开鼠标,底座闪了一下,说明连接工作已经完成,垂直长轴已经是底座的子物体。这时移动或旋转底座,垂直长轴都将产生相关运动,而垂直长轴运动则底座保持不动。依照上述方法,设置垂直长轴是U形支架转轴的父物体,U形支架转轴是水平机械臂的父物体,水平机械臂是水平长轴的父物体,水平长轴是U形机械手的父物体。打开TrackView(轨迹视图),用鼠标右键单击左侧项目窗口的Objects,在弹出的对话框中选择ExpandAll,.依次关闭底座、垂直长轴、U形支架转轴、水平机械臂、水平长轴和U形机械手左侧圆形减号的展开项目,父子关系的层次树连接显示得非常清晰,Base(底座)处于层级树的最顶端,Hand(U形机械手)处于最末端,如图11-2所示。
从逻辑上讲,连接起来的机械手中的某些子物体只能沿着某个特定的坐标轴移动或转动。比如垂直长轴只能上下运动,U形支架转轴只能跟随垂直长轴做上下运动,但自身可以做自由水平旋转运动。下面我们设法限制这些物体在某些轴向上的运动,以方便将来做动画。
1)首先锁定垂直长轴,配合键盘上的H键点选VerticalShaft(垂直长轴)。
2)单击Hierarchy按钮,打开Hierarchy(层级)命令面板,单击LinkInfo按钮,LinkInfo命令面板显示出来,如图11-3所示。
3)在Locks面板的Move卷展栏下面勾选X轴和Y轴,以限制垂直长轴沿这两个方向运动。在Rotate卷展栏下面勾选X、Y、Z,限制垂直长轴的所有轴向的旋转运动。Scale卷展栏下面不做任何锁定。
4)试着在前视图中移动垂直长轴,在X、Y轴被锁定的情况下垂直长轴只能沿Z轴上下垂直运动,不能做水平运动,如图11-4所示。
垂直长轴的设置工作完成。
5)U形支架转轴是水平机械臂的父物体,它带动水平机械臂绕垂直长轴做旋转运动,应限制其在X、Y轴的旋转运动及所有轴的位移运动,如图11-5所示。
6)在设置水平机械臂的旋转之前,先移动轴心点,以便保证水平机械臂能正确绕U形支架转轴的轴心点旋转。在Hierarchy(层级)命令面板中单击Pivot按钮来调整轴心点,单击AffectPivotOnly按钮,如图11-6所示。
7)水平机械臂的轴心点显示在该物体的中间,为了更加清晰地显示轴心点,暂时隐藏了其他物体,如图11-7所示。
8)单击SelectandMove按钮,在顶视图中,把水平机械臂的轴心点移动到转轴的U形支架转轴的轴心。
9)使水平机械臂处于被
选择状态,单击层级命令面板的LinkInfo按钮,在Locks卷展栏中,勾选Move下面的X、Y、Z,勾选Rotate下面的X和Z,如图11-8所示。
10)单击主工具栏的SelectandRotate按钮,旋转水平机械臂,机械臂只绕Y轴旋转,不再受主工具条上当前轴的约束限制。如图11-9所示。
11)下面锁定其他物体的轴向。机械臂上的水平长轴能沿X轴移动和旋转,因此锁定Y、Z轴,在层级命令面板上的设置如图11-10所示。
12)U形机械手能绕X轴旋转,锁定Y、Z轴,在层级命令面板上的设置如图11-11所示。
13)底座可以沿X、Y轴做水平移动,因此要锁定Z轴,在层级命令面板上的设置如图11-12所示。
图11-1在场景中创建一个机械手11.1.2锁定坐标轴
图11-2机械手各个对象父子关系的层次树连接
图11-3Hierarchy(层级)命令面板
图11-4X、Y轴被锁定的情况下垂直长轴只能沿Z轴上下垂直运动
图11-5限制其在XY轴的旋转运动
图11-6层级命令面板中单击Pivot/AffectPivotOnly
图11-7水平机械臂的轴心点显示在该物体的中间
图11-8Locks卷展栏中中的设置
图11-9旋转水平机械臂的结果
图11-10水平长轴在层级命令面板上的设置
图11-11U形机械手在层级命令面板上的设置
图11-12底座在层级命令面板上的设置