maya快速动画秘诀
作者:网友整理Autodesk mayav1.5 96.63M / 简体中文
点击下载玛雅maya最新网站地址1.1.71.5.7 38.95M / 简体中文
点击下载豪华泡泡龙 Maya Stonesv1.7.4 91.88M /
点击下载I、 整体概念
这里介绍的概念是一个指导你装配动画角色的好的规则。其主要目的是尽可能保持所有东西能够为动画制作者容易理解。精简制作者所需的控制。
动画制作者能够也将选择场景里每一个能被选择的东西。你能够想象能被选择的东西制作者肯定会有意无意的选中它的。最好的避免出现这种情况办法是把所有控制放在一个特别的层里。对你不想碰的东西所在的层都设置为reference模式。这样作了以后这个层里的东西在三维场景里就无法被选中了。同时参考层里的物体呈黑色,制作者会知道这些黑色的控制无法选择,然后他们会去找不是黑色的控制来操作。
精简可以被设置的关键帧数目,另外一个重要的的是精简可以被设置为关键帧的属性,计算机对每一个动画曲线及其代表的属性在每一帧进行计算,如果一个关节只在 X轴旋转那就没必要去给移动,缩放属性等设置关键帧。
使每个控制能够容易被确定是干什么的,动画制作者应该能够很容易认出每个控制的用途。通过使用nurbs curves 来制作不同形状的控制,能使我们轻易的认出每个控制是用来控制什么的,这可以节省很多时间,See file: 2. variousAnimationCtrls.ma。
使用适当的rotation order。没有什么能比当一个动画制作者准备旋转什么东西的时候,却发现他没办法按设计的方向来旋转物体更糟糕的了,这几乎常常是由于rotation order没有被正确设置而导致 ( gimbal lock).。几乎没办法消除 gimbal lock,但可以在设置正确的rotation order来避免。
[page]
另一个让人沮丧的事情,是打开场景后,无法确定哪个物体是干什么的,joint1, joint2,和 joint3 对制作者来说是什么?你能看出来joint1, joint2, and joint3是上臂,胳膊和手腕关节么?当然不能,正确的命名对下一个工序的制作者和你自己来说都是避免头痛的一个好办法。
保持场景整齐。你应该把每样东西打成组,为每一类组件分类,不要把控制器和模型放在一起比较好,当作单一角色动画还可以,但当几个或者二十几个角色在场景里时,试者移动一个东西,你将不得不在Outliner 或者Hypergraph中几百个结点中找你要的东西, 把所有东西归进不同的组,去除对角色控制结构没用的形状,可见,设置等等一切东西。
II. 腿部控制
我们先来看看脚部控制,脚部控制基于通过把控制集中在一个地方来保持控制的简单性。我们用ikHandles来代替关节来进行控制。
1.创建 ikHandles。首先建立IK,从臀部到脚踝,然后脚踝到脚掌,最后脚掌到脚尖。Load the file 3. legControl.ma.
从臀部到脚踝为ikRPsolver.Skeleton > Ik Handle Tool > Option Box,设置Current Solver 为 ikRPsolver,点 up_leg 到 foot to create the ikHandle.改ikHandle名字为 footIkHanlde。
操作如图。
[page]
操作如图。
选择 Skeleton > Ik Handle Tool,脚踝到脚掌ikHandle,改名字为 ballIkHandle。Skeleton > Ik Handle Tool,脚掌到脚尖 ikHandle改名字为 toeIKHandle。
2. 创建腿部控制。为了控制腿部,我们要建立两个控制,一个控制腿,一个控制膝盖。最好的办法是使用nurbs curves
Import 3a. footXform.ma,Import 3b. kneeXform.ma,移动 footCtrl 和kneeCtrl到如下图的位置。
进入Attribute Editor 改变footCtr 的rotation order 为ZXY (如果它的默认参数不是这个的话)。
[page]
3. 建立腿部层级。下面我们将所有的ikHandles 成组到不同的层级。因为腿部需要脚跟和脚掌支撑腿部本身的能力(在脚掌处控制重心平衡),我们需要建立三个运动来进行控制。两个在脚掌一个在脚尖。最简单的办法就是复制 footCtrl 然后删除这个结点下的shape。这样可以保留主控制的方向。注:通过使用这个mel ( jscopyControl.), 可以迅速完成这一操作。选择 footCtrl 并复制,按向下键来选择footCtrlShape。删除 footCtrlShape。改名字为 ballLift。复制 ballLift 改名字toeLift。
操作如图。
操作如图。
操作如图。
[page]
操作如图。
操作如图。
操作如图。
现在把这些结点放到正确的位置,我们需要把他们放进一个正确的层级。由于ballLIft 和toeWiggle控制将同时被toeLift影响(如果用脚尖走路,脚掌…),它们同时成为toeLift结点的子物体。
FootCtrl is是脚部动作的主控制,所以toeLift是它的子结点,设toeLift 为footCtrl的子物体。
[page]
4. Parent IkHandles。现在的层级结构比较合理,我们需要把Ik Handles 放在正确的结点下面。ballLift 需要把脚踝从地面上提起,所以把footIkHandle和ballIkHandle设为ballLift 的子结点。
5. 连接脚部层级到主控制。虽然你可以控制目前的这些接点来做脚部动作,但一个一个选择并操作会很累,最好的办法是给foot结点自己建立一系列属性,并连接到下面层级中不同的旋转控制上,选择footCtrl 并给其添加控制属性,Modify > Add Attributes。
增加5个属性(ballLift, toeWiggle, toeLift, toeTwist, footLean).
设置Make Attribute Keyable 为 On
设置 Data Type 为 Float
设置 Attribute Name 为 ballLift
点击 Add
设置 Attribute Name 为 toeWiggle
点击Add
设置 Attribute Name 为 toeLift
点击 Add
设置 Attribute Name 为 toeTwist
点击 Add
设置 Attribute Name 为 footLean
点击 Add
属性增加好了以后,我们用Connection Editor来连接它们。Window > General Editors > Connection Editor,选择 footCtrl,然后点击Reload Left,选择 ballLift然后点击 Reload Right,连接 footCtrl.ballLift 到 ballLift.rotateX,选择 toeLift 然后点击 Reload Right,连接 footCtrl.toeLift 到 toeLift.rotateX,连接 footCtrl.toeTwist 到 toeLift.rotateY,选择 toeWiggle然后点击 Reload Right。连接 footCtrl.toeWiggle 到 toeWiggle.rotateX,连接 footCtrl.footLean 到ballLift.rotateZ。
6. 增加膝盖控制。现在我们使用极约束( poleVectorConstraint)来建立膝盖控制。这可以让我们将腿部IK对准 kneeCtrl 结点。它将控制膝盖一直对准 kneeCtrl,使得做动画我们能有更好的控制。选择 kneeCtrl and footIkHandle,Constrain > Pole Vector Constraint。
[page]
另外一个选择, 限制膝盖只继承TRANSLATION和ROTATE Y,当设置膝盖为脚部控制的子结点时有很大的弹性, 当脚部沿Z 或 X 轴旋转时膝盖控制经常会动。当把膝盖的动作限制到只有脚部移动和旋转,起影响作用的时候会更稳定,解除 kneeCtrl 和 footCtrl的父子关系。复制 footCtrl 然后删除所有子结点,改名字为 kneeGrp。
Point constrain(建立点约束) kneeGrp 到 footCtrl,选择 footCtrl 和 kneeGrp,选择 Constrain > Point,设 kneeCtrl 为 kneeGrp子物体。
设置如图。
设置如图。
[page]
现在我们旋转脚部,可以看到膝盖不乱动了。
7. 删除多余的属性并清理。设置foot control 的最后一步是删除多余的属性并隐藏ikHandles。打开Channel Control, 设置footCtrl 的scale and visibility属性为unkeyable and locked。隐藏toeLift并锁定visibility,translation,和scale。
设置完毕的foot control,一个很干净的场景易于使用这些控制。
腿的这部分结束了,后面是上半身的控制,应用到了约束。
III. 独立的动作
独立动作的概念是指在每个控制除了彼此必然影响的地方,其他运动属性保持独立。一个很好的例子就是角色的眼球,我们都知道眼球是头部的子物体,并且无论头怎么运动都会跟随着,当你把头转向一边,你的眼也会跟随到那一边。可是,我们也可以将眼睛锁定到一个特殊的目标。而且他们会有独立于头部的动作。(当然眼球仍然随头部移动,但它们的旋转却是单独的)如果我们装配模型不考虑到这些功能 (移动头部但眼睛却盯着一个地方),那么每次我们做一个头部转动的动画时将不得不为眼球再设置一次动画,转一下头,转一下眼睛,再转一下头,再转一下眼睛…增加无数的工作量,直到让人疯掉为止。因此独立动作对身体上有很多部分是很有用的, 例如:眼睛、头部、向前动力学控制的胳膊。在maya中有不同的技术可以在装配骨骼时实现独立动作。
头部的独立动作。如果我们将狒狒的头部运动独立于躯干那么头部的做动画时会更容易。
1. 头部和脖子的控制准备。打开场景.solateHeadMotion.ma。
[page]
把头部和脖子控制放置在容易选取的位置,有个容易的方法,将neck control设定为neck joint的子物体,然后将移动和旋转属性归0,解除父子关系。
2. 建立脖子的约束。复制 neckjoint 然后删除下面的子物体。改名字为 neckConst。选择 necktConst 和 neck并且建立一个 orientConstraint。最后neckConst 设为 neck_ctrl 子物体然后隐藏。注意:图中复制后的 neck joint,子物体全部删除掉了。
改名字为 neckConst。
方向约束,如图。
neckConst设为neckctrl的子物体并隐藏。
[page]
3.成将neck_ctrl自成一组。
选择 neck_ctrl,捕捉到 neck joint。
将组改名为neckControlGrp,设 neckControlGrp 为 torsoctr子物体。
4.为头部建立Constraints。重复脖子的那一套操作,复制 headJoint 删除下面的子物体,改名字为 headJointConst,
选择headJointConst 和 headJoint 创建orientConstraint,设head_const 为 head_ctrl 子物体并隐藏。
[page]
5. 将headControl 成组。选择 head_ctrl,CTRL-G 为自己成一个组。捕捉到headjoint,改名为 headControlGrp。
注意:这里我们没有设 headControlGrp为 neck的子物体,我们将建立另外一个结点,并且pointConstrain headControlGrp 到新建的结点上,然后在设为Neck的子物体,这样headControl 将随脖子移动但有自己独立旋转。
6. Constrain headControlGrp (约束头部控制组)。选择headControlGrp,复制 headControlGrp,并且删除所有子物体。
将复制出来的 headControlGrp1 改名字为headControlGrpConst,选择 headControlGrpConst 和 headControlGrp 建立一个pointConstraint,Constraints > Point。
设headControlGrpConst 为neck子物体。
[page]
现在当你旋转身体,你会注意到脖子随着旋转但头没有。非常重要的一点rotation order是正确的,另外gimbal lock的情况不会出现。(注意下图:猴子身体旋转了,但头部朝向不变。)
加载全部内容