Maya:鸟类的骨骼绑定游戏角色制作:鸟类飞禽绑定。

视频教程:

【文章来源】中国CG联盟

首先,在制作之前我们要充分的了解鸟类的,尤其是翅膀部分的结构。很多时候初学者在做翅膀的设置时,都会犯一些结构上的错误。

图1中,我们可以看见一些常见的鸟类翅膀,虽然他们大小、形状不尽相同,但其骨骼的解剖结构都是一致的。

鸟类翅膀的骨骼结构(图2),和其它脊椎动物上肢的骨骼、甚至是人类,都有类似的地方。我们甚至可以一一对应。比如,红色的部分相当于人类的上臂,绿色部分对应小臂,蓝色部分可以对应手掌和手指。

了解了鸟类翅膀的骨骼结构,我们回到maya中,实际的制作一套鸟的骨骼设置。
模型制作的时候,需要了解最终动画的要求。在我们的例子当中,这只卡通的乌鸦需要有收起翅膀和张开翅膀的动作,同时还需要用翅膀做出拟人化的手势。所以这对我们进行骨骼设置提出了比较高的要求。

我们现在顶视图里,画出大致的翅膀骨骼。选择创建骨骼工具Skeletonàjiongt tool,应用默认的属性设置。此时创建出的骨骼轴向为默认的XYZ。然后在透视图中把骨链沿Y轴移动到模型的位置,旋转骨链与模型匹配。(如下图)

小帖士:默认时创建出的骨骼轴向为的XYZ。这样的骨骼X轴指向下一节关节,Z轴为旋转轴。通常,在角色的骨骼设置时,大多数情况下我们都使用默认的XYZ轴向设置。选择不同的骨骼轴向,需要根据角色的运动来确定。比如人的上肢,我们需要肘部关节沿一定的方向旋转(Z轴),同时,还需要手腕以自身的方向做翻转手腕的动作(X轴的旋转)。

打开骨骼局部轴向的显示(在属性编辑器里DisplayàDisplay Local Axis),我们可以检查每一个根骨骼的轴向是否正确。(如下图)如果骨骼的轴向有错误,我们可以选择手动的方式在次物体模式下修改骨骼的轴向。如下图:

然后选择jiont01,执行ModifyàFreeze Transformation命令(将jiont01的旋转属性归零)。
小帖士:在骨骼设定的时候,我们应该注意骨骼的旋转、缩放属性是否为默认数值。正常情况下,骨骼的Rotate应该保持为零,Scale保持为1. 如果在视图里骨骼看起来比较小,我们可以通过主菜单DisplayàJiont Size命令,调整视图内骨骼的显示。也可以在每一节骨骼的参数通道栏Radius属性下调节。

现在,翅膀的主骨骼就建立好了,我们可以参看下图的骨骼布局以及每一节骨骼的轴向。Jiont01可以对应为人的锁骨,jiont02对应上臂,jiont03和jiont04对应小臂(joint04主要的作用是在X轴方向旋转,带动翅膀前端的左右运动),jiont05和jiont06对应手掌和手指。

接下来,我们要给羽毛单独的设置骨骼。骨骼的轴向仍然使用默认的XYZ模式,适当的建立5至6节骨骼(骨骼的数量根据羽毛需要的动作设置,在这个案例中,翅膀前端大片的羽毛需要像手指一样做拟人化的手势,所以需要较多的骨骼)。如下图A
因为翅膀要能完整的合上、展开,所以每一片羽毛我们都要单独的添加骨骼,以便随着翅膀的动作运动。如下图B(在这里,,为了让大家能够看清楚,我们只以大片羽毛为例)

接下来,我们要设置每一篇羽毛的驱动关键帧,在翅膀主骨骼伸展和弯曲的时候,自动的跟随运动。
我们以鸟的肘关节(也就是jiont03)的弯曲运动为例。
打开主菜单下AnimatcàSet Driven KeyàSet窗口。(如下图)

选择翅膀肘部关节(jiont03),点击Set Driven Key窗口下的Load Driver,在右边的通道栏属性窗口选择用来驱动物体的属性,这里我们选择rorateZ。
然后选择cc_jiont002—07(就是每根羽毛的骨骼,可以一次多选几个被驱动物体),点击Load Driven,在窗口调入被驱动物体。在右边的通道栏属性窗口选择用来被驱动的属性,这里我们选择rorateY,我们可能还需要选择trabslateX和Z属性(需要在位移上也有一些变化)。
点击Set Driven Key窗口下的Key键。这是我们可以看到被驱动的骨骼的Rotate Y属性变为桔黄色,已经记录了驱动关键帧。
小帖士:驱动关键帧在maya的骨骼设置中常常会用到,他可以用一个物体的任意属性驱动另一个物体的属性。比如,你可以设置一个球的缩放,驱动另外一个圆柱体在X周上的位移,设置完成后每单你缩放那个小球的时候,圆柱体都会在X轴方向上自动的对应位移。

接下来,我们将翅膀主骨骼jiont03的Rotate Z属性数值旋转为80,并依次将cc_jiont02—07调整到相应的角度、位置(翅膀弯曲时,羽毛会跟随翅膀的运动做相应的位移和旋转),点击Set Driven Key窗口下的Key键。
然后,我们再将jiont03的Rotate Z属性数值旋转为-40,并依次将cc_jiont02—07调整到相应的角度、位置(羽毛的被动位移的位置需要合理调整)。点击Set Driven Key窗口下的Key键。
小帖士:在例子中,我们用相同的方式驱动了其他的所有羽毛,可以让每一片羽毛的运动随着翅膀的不同姿势做自动的跟随。驱动关键帧可以有重叠的相互作用,就是同一个物体可以被不同的物体属性同时驱动。在鸟翅膀的制作中,羽毛的收合需要非常仔细的调整,翅膀部分每一个关节的运动,都会给相邻近的羽毛有影响。

我们现在旋转翅膀的肘关节,可以看到羽毛会自动的匹配翅膀的运动做相应的跟随动作。(如上图)我们还可以在动画曲线编辑器(Graoh Editor)里微调驱动关键帧数值。如图:

用相同的方式设置翅膀根部和手腕部分同羽毛的驱动后,翅膀部分的设置基本完成。

3 接下来,我们在侧视图里创建身体的骨骼。为了便于查看身体的位置,我们先隐藏了翅膀上的羽毛模型和之前做好的翅膀骨骼。(下图A)
鸟类的身体部分我们大概可以分为四个部分:头和脖子,身体的躯干,腿和爪子,尾巴。
身体的躯干部分因为不会有太多动作,所以我们只需要两节骨骼就可以,root是整个鸟的设置骨架的根关节,腿部关节最后会与它连接。bak是身体胸部的骨骼,两只翅膀的锁骨和脖子的骨骼会与它连接。tail是身体连接尾巴的骨骼,以后鸟的尾部整体扭动的时候,我们会通过旋转这节骨骼实现。下图B
鸟类的头和脖子的运动会比较多,所以在这里我们需要设置足够数量的骨骼。neck01, neck02, neck03为脖子的骨骼点位置,脖子的三节骨骼的长度基本一致,不需要有太多的长短区别,尽量在脖子模型的中间部分,不需要太靠前或靠后。Head是头部骨骼关节,这个关节的位置放在头骨的下部。下图C

接下来我们创建腿部和爪子的骨骼。我们还是在侧视图创建骨骼。Leg01和leg02分别是鸟的大腿和小腿骨骼,heel和foot分别是鸟的脚跟和脚掌。(这里的大腿小腿等,可以分别对应人体骨骼,注意鸟类骨骼和人体骨骼的区别)。如图A
我们将maya视图切换到透视图窗口,这是我们可以看见腿部的骨骼并没有和模型匹配,而是在世界坐标空间的YZ轴平面上。如图B我们需要手动的移动、旋转腿部骨骼,让它和腿部模型位置匹配。如图C。(记住在每一次调整完骨骼位置后,要将骨骼的旋转属性数值归零)
 

 

接下来我们创建爪子的骨骼。我们仍然在侧视图创建骨节点,依据转子的形状和以后运动的要求,我们需要多几节骨骼。如图A。切换到透视图,我们调整这一段骨骼链的位置,如图B。也可以在顶视图准确的匹配骨骼和模型的位置,如图C。如果再顶视图看不清楚爪子的结构,可以调整顶视图摄像机的剪切平面,让视图里只显示我们希望看到的爪子部分,如图D。
小帖士:摄像机的剪切平面可以手动的调整,如在本例子当中,我们将顶视图的摄像机剪切平面调整为:Near Clip Plane=112,Far Clip Plane=1000。这个数值只是在我们的场景里适用,其他场景需要根据模型的实际大小调整。当一根脚趾骨骼的位置调整好后,我们复制出其他的几根脚趾骨骼,并放置在相应的位置。通常情况下,每一根脚趾的长度会不一样,这是我们可以在物体局部坐标模式下,单独的调整每一根脚趾骨骼的长度,与模型匹配。这样可以尽量保持骨骼轴向不会出错。

小帖士:通常情况下,我们选择与被创建骨骼的旋转平面相近的视图为工作窗口,例如为标准的人体模型创建骨骼系统,脊椎、腿、脖子和头的骨骼,都会在侧视图窗口创建。胳膊的骨骼一般会在顶视图创建。这样做做得原因是尽量让创建的骨骼的旋转平面与模型一致。这样在之后的调整骨骼轴向时,会简单一些,也可以尽量的避免错误发生。
现在我们已经将鸟的身体骨骼准备好,(躯干、脖子和腿部,腿部骨骼我们只需要制作左边的,右边的骨骼之后用镜像工具直接复制过去)如图A。接下来我们将脖子、腿、爪子的骨骼和身体相连接。选择四根脚趾的骨骼,同时选择腿部的foot骨骼,按键盘的P键(Parent的快捷键)。选择脖子的neck01,同时选择bak骨骼,按键盘的P键。选择leg01及root并按键盘的P键,如图B。然后腿部关节leg01,执行SkeletonàMirror Joint命令,镜像骨骼,如图C。

镜像骨骼的时候,我们用默认的设置,只是要选择镜像的平面,通常的场景都是选择YZ平面镜像,如下图。

现在我们的骨骼基本已经创建完成,我们还需要最后再检查一遍每一节骨骼的轴向是否正确。红色的X轴指向下一节关节,兰色的Z轴是骨骼的旋转平面,如下图。

小帖士:右边腿部骨骼镜像后的轴向与左边的相反,红色的X轴指向了后一节骨骼关节,这样的结果是正确的。这样的骨骼轴向可以让我们同时旋转腿部关节时,两条腿的运动保持一致。如我们将人体的胳膊骨骼这样做时,可以同时将两边的胳膊举起或放下。
我们将翅膀的骨骼显示出来,并将锁骨的joint01与bak连接。如下图。这样,这只鸟的骨骼我们就基本建立好了,接下来,我们还需要给骨骼加上一些控制器,便于我们动画的时候控制。

小帖士:尾巴部分的骨骼就是在每一片羽毛上建立骨骼,然后添加一些简单的控制,通过驱动关键帧与控制器属性相连接,如张开、收起等。与翅膀部分类似,所以这里不再单独说明。
控制器的制作,要按照特定的动画习惯来做,没有统一的标准。不同的项目和动画制作精度,会对角色控制器的制作有不同的要求。通常情况下,控制器不易太多太复杂,尽量简介概括,这样可以最大限度的提高制作的效率。
在这里,我们在可以满足项目需要的前提下,尽量的简化了鸟的控制器数量,翅膀部分只选择了正向控制(FK),只在锁骨、翅膀跟部和手指部分(拟人化的五根羽毛)建立了控制器。如下图:(为了看着清楚,只显示了翅膀的骨骼和控制器)

锁骨的淡蓝色控制器控制肩膀部分的运动(相对于人体来说)。翅膀根部的绿色的控制器控制翅膀的展开,收起,旋转等,黄色的手指控制气单独的控制手指羽毛的动作。
如图,图A部分绿色的控制器控制属性,默认的RotateX,Y,Z属性控制翅膀根部的旋转。M_z属性控制肘部关节Z轴的旋转(伸展或收起肘部关节),T_x属性控制小臂第二根关节Joint04 X轴的旋转(相当于翻转、左右扭动小臂),T_z_a属性控制手腕关节Z轴的旋转(手腕的前后运动)。T_y属性控制手腕Y轴的旋转(上下运动),Scale_a属性控制翅膀前端几根大片羽毛的缩放(再收起翅膀时需要缩放羽毛以配合收起时翅膀的大小)。通过这些基本的控制属性,我们就可以很好的控制翅膀的运动,达到项目要求的可以展开、收起等动作(需要和锁骨部分的淡蓝色控制器配合使用)。

上图B部分,手指黄色的控制器,属性通道栏里面的属性相应的控制手指骨骼每一节的旋转。
小帖士:在maya里,我们可以根据自己的需要,任意的添加自定义属性。比如上面的M_z,T_x等属性。通过这些自定义属性,可以把我们需要的控制连接到相应的骨骼上,以便于我们动画师的需要。

接着,在身体和脖子、头部,我们也制作一些控制器。并连接到相应的骨骼上,分别控制鸟的身体的各个部位。如图。

小帖士:鸟身体部分除了腿部关节应用反向控制(IK)之外,身体其他部位的控制器我们都是用正向控制(FK)。控制器与骨骼之间用约束或属性关联编辑器相连接。脖子、翅膀、身体的控制器按照层级方式连接,并最终放在脚底下跟控制器下。 控制器的制作要根据动画的要求设置,一个好的骨骼设置,需要你对动画师的工作习惯和要求有比较深刻的理解,在maya中的各个工作环节是需要相互衔接的,所以一个合格的骨骼设置人员,除了要具备基础的技能和知识,还需要了解本工作流程之外的更多环节的要求。
到这里,这只鸟的骨骼设置基本就完成了,我们将模型与做好的骨骼系统绑定在一起(SkinàBindSkinàSmooth Bind),调整好蒙皮的权重之后,我们就可以最终完成的整套骨骼设定了,如下图。
小帖士:做骨骼设置的时候,可以在整个骨骼系统完成之后再绑定蒙皮,也可以在骨骼创建好、添加控制器之前绑定蒙皮。通常的做法是在建立好骨骼后,添加控制器之前就绑定蒙皮。因为有一些IK系统在添加到骨骼上之后,会导致骨骼的轻微变形、位移,(线性Spline IK)这样你建立的初始骨骼可能就会和模型不匹配,虽然这只是轻微的变化。

好了,开始你的动画吧~