当前位置导航:炫浪网>>网络学院>>图形图像>>MAYA教程

MAYA动画教程:人手的控制

这里我们将重点学习以下几点:

如何在手腕加入手指控制属性;
如何利用建立驱动关键帧(Driven Key)来控制手指关节
如何用连接编辑器(Connection Editor)建立连接

  建立驱动关键帧(Driven Key)基础

需要先明白的是在Maya中建立驱动关键帧(Driven Key)是两种特征曲线间的关系。在图形编辑器(Graph Editor)中,横轴代表主驱动物体的特性,纵轴代表被驱动物体的特性,曲线也就表示两者的特性关系。

由于建立驱动关键帧(Driven Key)是一种曲线关系,所以可以调节曲线的切线或加入另外的关键帧以做出比较有趣的动作,比如,如果旋转肘部来驱动二头肌,这条曲线就需要编辑,当弯曲到最大限度时,二头肌会有抖动。

定位器和属性的加入

你现在可以把一个定位器加到手上来做为操控器并可以起到连接手指间的控制作用。为控制手来建立一个单独的定位意思是不必去找其他的控制方法,操控器(manipulator)就可以手的位置。你可以把属性加入到这个定位器上,然后你就可以建立关键帧来控制手的所有运动。

建立手的控制

你将从建立一个定位器开始并加入属性,然后你就可以用这个定位器通过建立关键帧来控制手的运动了。

1 打开已存在的文件 Melvin_07_hands.mb

2 加入属性到定位器

你要把属性加到 L_wristLocator来控制每个手指

选择 L_wristLocator
选择Modifyà Add Attribute设置如下:
命名名字为: indexCurl
Keyable: On
数据类型(Data Type): Floate
类型(Type):Scalar
最小值(Minimum Value):0
最大值(Maximum Value):10
默认值(Default Value):0
点击加入(Add)按钮
重复步骤加入下列属性
middleCurl,ringCurl,pinkyCurl,pinkyCup,thumbCurl
把下列属性加入到L_wristLocator
分别设置fingerSpead,thumbRotX,thumbRotZ的最小最大值和默认值为-10,10和0

这些属性设置用来控制驱动关键帧,并在L_wristLocator的通道栏中显示。

提示:你也可以在建立之后(ModifyàEdit Attribute)再编辑加入的属性名称、关键帧状态和最大最小值。

设置驱动关键帧(Driven Key)来控制手指   现在你已经做好了手指的属性来准备控制其之间的连接,你就需要一个工具来连接二者。建立驱动关键帧(Driven Key)就是这项任务的出色之处,因为它可以建立好两种属性之间的关系。

设置建立驱动关键帧(Driven Key)来弯曲手指

弯曲食指的情况下,当你改变了食指属性的数值,你就可以让他的关节转动。当食指indexCurl设置为0,食指不转动,但当你改变了indexCurl为10,关节就会转动。比如像伸直手指时,最小最大值从-10到10,数值-10可以使手指弯曲,10使手指伸直。

当你设置驱动关键帧(Driven Key)时,你可以在工作区做操作,也可以在不方便做选择对象是用略图或超图。   使食指的弯曲

建立食指弯曲的方法与所有其它设置驱动关键帧的方法是相同的,你可以设置控制以便通过更改indexCurl的属性值来弯曲手指。

1 打开驱动关键帧(Driven Key)窗口

选择AnimateàSet Driven KeyàSetà属性
驱动关键帧窗口被打开,他被分为两部分:驱动和被驱动对象。你刚才刚建立的属性是驱动对象,手上的关节转动是被驱动对象。

2 选择驱动节点和属性

选择L_wristLocator
点击Load Driver
注意L_wristLocator出现在驱动列表里,你可以看到一个驱动对象。
从关键帧属性列表中选择IndexCurl

3 选择被驱动节点和属性

在驱动关键帧编辑器中,你可以用食指的rotate Y属性作为被驱动属性,为了沿着一个轴转动关节,你只需要驱动这个旋转属性。

按住SHIFT,选中三个关节(index1,index2,index3)
点击Load Driven
注意,选中的对象出现在被驱动丢向列表
选择被驱动对象,然后从列表选中rotateY
注意,旋转属性已经建立,所以手指只需要沿着一个轴旋转。

  4 设置初始关键帧位置

选择L_wristLocator来确定indexCurl是否为0
在驱动关键帧窗口点击Key

5 设置第二个关键帧位置

在驱动关键帧窗口,通过点击通道栏中的名字选择L_wristLocator,设置indexCurl值为10。
旋转90度到100度,弯曲所有关节。
参照自己的看看关节转动的位置。
按Key建立关键帧

提示:你最好把关节过度旋转。如果你不尽量转动这些关节,你可能就之后还要进行编辑。如果你把他们过度旋转,你就不需要移动它的属性到全部范围。

6 试验数值

选择L_wristLocator并在indexCurl试验从0到10的数值有何不同。

在通道栏,点击属性名称(应该高亮显示)
在透视视图中,拖动MMB来改变通道栏中其属性的数值。   7 为其他手指设置驱动关键帧

重复1到6的步骤来设置中指、无名指、小指和大拇指。

注意:大拇指有两个关节,其他手指有3个关节。

驱动手指展开

你也需要手可以展开,再次利用设置驱动关键帧(Driven Key)来控制动作。这次你要把属性的值从-10到10来设置,0作为自然状态值也就是首选角度。

1 用驱动关键帧(Driven Key)来驱动手指的展开

调入L_wristLocator indexCurl作为驱动对象属性
按住SHIFT选择index1,middle1,ring1和pinky1
点击Load Driven
选择左右关节和相应关键帧旋转属性
设置fingerSpead为0值时建立一个关键帧,其他手指在自然状态
设置fingerSpead为10值时建立一个关键帧,其他手指展开到最大角度

fingerSpead为-10值时建立一个关键帧,其他手指在闭合状态

2 实验结果
改变fingerSpread的属性来试验动作的范围

3 保存 驱动手掌合龙

另外手的一个真实动作就是手掌拇指与小指合龙成杯状,这里,你还会用到驱动关键帧(Driven Key)来沿着特定轴转动pinky_palm关节。

1 用驱动关键帧(Driven Key)

调入L_wristLocator pinkyCupl作为driver
调入PinkyPalm旋转属性作为被驱动对象
设置pinkyPalm为0值时建立一个关键帧,其他手指在自然状态
设置pinkyPalm为10值时建立一个关键帧手掌转动

2 实验结果

选择L_wristLocator,从0到10为pinkyPalm试验不同的数值。

现在你就可以让手指完成上面的动作了。

大拇指

大拇指的动作要相对于其他手指灵活,转动时虎口的关节要沿着两个轴做旋转。

当你建立拇指的运动时,你要考虑拇指手掌关节的运动状态,并会沿着X和Y轴产生运动。你要改变旋转轴才能使拇指沿着运动的方向而运动,如下图所示。
小指

  驱动拇指旋转

下面的练习和设置驱动关键帧(Driven Key)一样。由于拇指的运动和其他手指不同,在建立关键帧之前,本地旋转轴的正确设置变得很正要。

x轴与中指方向平行

z轴是手掌的法线方向 1 驱动拇指的旋转

选择AnimateàSet Driven KeyàSetà属性
选择L_wristLocator并点击Load Driver
选择thumbPalm作为驱动对象,ratateX作为被驱动属性
设置thumbRotX为0,创建关键帧,令thumbPalm关节为平常状态。
设置thumbRotX为10
沿着x轴转动thumbPalm,使拇指向小指方向在手掌上交叉。
点击Key建立关键帧

2 设置第二关键帧的位置

设置thumbRotX为-10,thumbPalm沿着x轴向外侧转动,建立关键帧。

设置thumbRotX为-10
沿着x轴转动thumbPalm,使拇指与手掌在一个平面上。
建立关键帧

  3 试验拇指运动方向

用thumbRotZ来驱动拇指手掌关节

1 调入驱动对象和被驱动属性

在设置驱动关键帧窗口调入L_wristLocator作为驱动对象,thumbPalm关节作为被驱动对象。

选择AnimateàSet Driven KeyàSetà属性
选择L_wristLocator并点击Load Driver
选择thumbPalm,,点Load Driven
选择thumbRotZ作为驱动属性,rotateZ作为被驱动属性 2 为属性建立关键帧

设置thumbRotZ为0值,建立关键帧,thumbPalm关节为平常状态
设置thumbRotZ为10建立关键帧,thumbPalm关节沿着z轴向食指方向转动。
设置thumbRotZ为10
沿着z轴转动thumbPalm,使拇指指向食指的根部而交叉。
建立关键帧

3 设置其他关键帧

设置thumbRotZ为-10,并使thumbPalm关节向手腕方向沿着z轴外转。

设置thumbRotZ为-10
沿着z轴旋转thumbPalm,使拇指转到手腕的方向,拇指应该差不多和手掌垂直。
插入关键帧

4 试验拇指转动的方向

5 保存


试验控制

其中手的一个真实动作就是把手弯曲成杯状,这里可以调节手指的属性:

尽量使小指和拇指接触
将几个手指弯曲成杯子状
建立一个球体放在手掌,手指可以握住球

用属性控制手腕

wristLocator将被用到手的定位上

通过给这个定为器加入三个新的属性,你就可以驱动手腕的转动。其中的两个属性wristUpDown和wristSide将驱动手腕关节的y轴和z轴。对于wristTwist属性,运动不是从手腕关节来被驱动的,而是从前臂的关节。假想所有的本地旋转轴都设置正确,wristTwist就可以驱动前臂关节的x轴旋转属性。

1 为手腕定位器建立新的属性

在L_wristLocator,建立三个新属性跟别为wristTwist,wristSide和wristUpDown   2 创建连接

`在连接编辑器中,你将建立如下连接:

L_wristLocator.wristTwistàleft_forearm.rotateX

选择windowàGeneral EditorsàConnection Editor...
选择L_wristLocator并Reload Left
选择left_forearm并Reload Right
选择LwristLocator.wristTwist并选择left_forearm.rotateX
这可以使L_wristLocator.wristTwist属性控制left_forearm.ratateX

3 建立另两个连接

重复前面步骤建立下面连接
L_wristLocator.wristSideàleft_wrist.rotateY
L_wristLocator.wristUpDownàleft_wrist.rotateZ

4 保存

现在,你就可以通过选择一个对象L_wristLocator来控制手的所有关节。当动画时,你应该用你的选择遮罩,这样你就可以选择定位器或只选择手柄来避免选中错的对象动画。
相关内容
赞助商链接