1、第四章 骨骼在完成模型和材质后,我们就需要给物体建立骨骼。制作动画的大部分工作都是通过 Maya 的骨骼系统来完成的。在制作骨骼前,我们需要熟悉角色的骨骼结构,角色如果是个人,我们则需要了解人体的骨骼结构,如果是鸟,我们则需要了解鸟的骨骼结构。4.1 人体骨骼概述如下图:人体整个骨架由 179 块主要骨头组成,人体里最重要的支撑结构是脊椎骨即脊柱。每个骨头都有其重要的作用,它们都绝妙地发挥着特殊的功能。它们的作用主要是支撑身体,运动及保护内脏。在我们的 MAYA 中骨骼的作用是运动。4.2 人体关节活动范围:(1)颈部:先置于中立位,颈部活动度为:前屈 3545,后伸35 45,左右侧屈各 4
2、5左右旋转各 6080 。(2)腰部:采取直立,腰伸直自然体位,其活动度为:前屈 90,后伸 30,左右侧屈各 30,左右旋转各 30。 (3)肩关节:先置于中立位,其活动度为:前屈 90,后伸 45,外展 90,内收 40,内旋 80,外旋 30,上举 90。(4)肘关节:先置于中立位,其活动度为:屈曲 140,过伸 010 ,旋前 8090,旋后 8090。(5)腕关节与手:腕关节先置于中立位。其活动度为:背伸 3560掌屈 50 60,桡偏 2530,尺偏 3040。 掌指关节先置于中立位,其活动度为:掌指关节屈曲 6090 ,伸直为 0近节指间关节屈曲 90,伸直 0;远节指间关节屈曲
3、60 90,伸直 0。 掌拇关节先置于中立位,其活动度为:掌侧外展 70;对掌,注意拇指横越手掌之程度;屈曲,掌拇关节 20 一 50,指间关节 90;内收,伸直位与食指桡侧并拢。(6)髋关节:先置于中立位,其关节活动度为;屈曲 145(仰卧位屈膝屈髋) ,后伸 40(俯卧位后伸) ,外展 3045,内收 2030 ,内旋 4050(屈膝 90位) ,外旋 4050 (屈膝 90位) 。(7)膝关节:先置于中立位,其活动度为:屈曲 145,伸直 0(可超伸 10) ,当膝关节屈曲时内旋约 10,外旋 20。(8)踝,足部:踝关节先置于中立位,其活动度为:背伸 2030,跖屈 40 一 50;跟
4、距关节内翻 30,外翻 30 一 35;跖趾关节背伸约45,跖屈约 3040。4.3 骨骼设置:对于角色的骨骼设定根据角色的特征有不同的解决方案,而我们研究骨骼设定的目的就是要找出这样的适合于特定动画要求的骨骼方案。4.3.1 基础知识: 调整骨骼尺寸:选择 DisplayAnimationJoint Size命令,可以用滑块来调节骨骼大小的任意百分比,可以更容易地进行选择和编辑。 关节和骨头:关节是骨骼中骨头之间的连接点。关节可带动骨头的移动、旋转和缩放。第一个建立的关节叫做根关节。下一级关节是根关节的子关节。粗的一端指明了上一级,细的一端指明了下一级。子一级的关节对上一级关节的变换具有继承
5、关系。 调节骨骼位置:调节骨骼位置时可以按下 Insert 键,这样在调节当前骨骼的位置时,不会影响到其他的骨骼,调节完成后,再次按下 Insert 键即可回到原来的状态。 创建的骨骼原则:1. 骨骼的创建部分要求我们了解角色的自然骨骼状态,以及它的运动特征。以此来判断在模型的什么位置创建骨骼;创建什么性质的骨骼等等。2. 动画质量要求越高,那么角色的骨骼相应地也会越复杂,规范的命名对于后面的工作极其的重要,所以一定要养成规范命名的习惯。其实在其它的流程中也应该养成这个好习惯。脚命名为Lleg,Lknee 和 Lfoot;脊椎层级命名为 waist,chest ,neck 和head,并将肩部
6、层级命名为 Lshoulder,Larm,Lforearm 和Lhand。3. 所有 joint 的旋转必须都是 0。所有 joint 的缩放属性必须都是 1。4. 我们要根据角色的动作需要来决定骨骼的动力学特征,当然我们希望骨骼的运动特征能尽量地符合角色在真实状态下的骨骼特征。不过在创作过程中,简单高效始终都是一个好的原则。4.3.2 创建骨骼的工具:在菜单中选择 Skeleton,可以通过点击菜单最上方的双线部分将其变成浮动面板。如下图: Joint Tool(建立骨骼)我们先来使用一下 Joint 工具,点选 Joint 工具,在任意的视窗中点击鼠标, 此时我们就已经确定了一个骨骼节点,
7、当我们在另一个位置再次点击时出现另一个骨骼节点,同时在两个节点间出现了一个连接物. 那么我们以这样的方式经过多次的点击后,按回车键来完成当前骨骼的创建。我们从图中可以看到骨骼的构成方式。点击 Joint Tool 工具右侧的小方块,调出设置对话框:Degrees of Freedom (自由度)在设置使用 IK 时,可以绕哪个骨节点坐标轴旋转(X、Y 或 Z)。系统缺省值设置为三个坐标轴的旋转。例如:勾掉 Y 轴,那么 IK 就不能控制 Y 轴的旋转,我们也可从通道面板中对于相应的轴进行锁定来完成同样。Orientation(设置骨节点坐标轴的方向)选项包括:none 、xyz 、yzx、zx
8、y、xzy、yxz 、zyx。选择 None创建骨节点坐标轴的方向和世界坐标轴的方向一致。其余选项是按照第一个坐标轴指向骨骼内部。也就是说骨节点的第一个坐标轴指向它的子关节。如果有多个子关节,那么第一个坐标轴指向第一个被创建的子关节的骨节点。Scale Compensate(缩放补偿)当缩放骨骼父关节时,如果勾选 Scale Compensate,那么子关节不受父关节的缩放影响;勾掉其选项,子关节将受父关节的缩放影响.Auto Joint Limits(自动关节限定)创建时自动限制关节的旋转角度。(-360360 )Create IK Handle(创建 IK 手柄)当创建骨关节或关节链时,I
9、K 手柄即被创建。打开此项命令 IK Handle Options 项会被显示。此选项和 Animation 模块下 Skeleton IK Handle Tool 命令 Tool Settings 的功能一致,关于这项功能详见 IK Handle Tool(IK 手柄工具)。 Insert Joint Tool(插入关节)如果在所建立骨骼中的关节数不够或需要增加骨骼,可以在任何层级的关节下插入关节。注意:插入关节应在添加 IK 手柄和蒙皮之前完成。如果插入带有 IK手柄的关节要重做 IK 手柄。使用方法:1. 选择 SkeletonInsert Joint Tool 命令。2. 点击鼠标左键
10、选择要插入关节的父关节。3. 按住鼠标左键,拖动指针到要添加关节的地方。4. 当插入关节完以后,按下 Enter 回车即可完成。 Reroot Skeleton(重新设置根关节)通过将所选择的骨节点设置成根关节,从而改变骨骼的层级关系。即颠倒骨骼。1. 选择要重设的一个关节。2. 选择 SkeletonReroot Skeleton。 Remove Joint Tool(去除关节)除根关节外,可以去除任何一个关节。使用方法:1选择要去除的关节。(注意:一次只能去除一个关节)2选择 SkeletonRemove Joint Tool 命令。(去除当前关节后不影响它的父一级和子一级关节的位置) D
11、isconnect Joint(断开骨骼)可以断开除根关节外任何关节和关节链。将一段骨骼分为两段骨骼。使用方法:1. 选择要断开的关节;2. 选择 Skeleton / Disconnect Joint Tool 命令。注意:如果断开带有 IK 手柄的关节链,那么 IK 手柄将被删除。 Connect Joint(结合骨骼)通过结合关节或骨骼链连接关节来结合成一个骨骼。使用方法:你可以选择 SkeletonConnect Joint Tool 命令,打开 Connect Joint Options 视窗。在 Mode(模式)下选择 Connect Joint 或 Parent Joint。1.
12、 单击要成为其他骨骼肢体链的一个关节的根关节;2. 按住 Shift 键,在另一个骨骼中选择根关节以外的任何一个关节;3. 选择 SkeletonConnect Joint Tool 命令;打开 Connect Joint Options 视窗4.选择 Connect Joint 模式,单击 Connect。注意:同学们可以分别试试 Connect Joint 和 Parent Joint,看看它们有什么不同的效果。Parent(父子关系)模式下,被结合与结合关节之间会自动产生一个新的的骨头,骨节点的位置相对不变。 Mirror Joint(镜像骨骼)此工具用于镜像复制肢体骨骼。镜像复制的前提
13、是所制作的骨骼是对称的形态。镜像时,关节、关节属性、IK 手柄(IK Handle)等都会进行镜像复制。为一个角色创建骨骼时,镜像是非常有用的。比如,建立角色的左手骨骼,然后通过镜像,右手骨骼即出现。 1. Mirror Across(镜像平面) 选择镜像时的参考平面。2. 选择 Mirror Function(镜像功能)Orientation(方向):关节的自身坐标轴同时也被镜像;Behavior(行为):则只对选择的关节链的位置镜像,不考虑关节的自身坐标轴。替换名字:如下图:例子:镜像后,把命名里 L 字母换成 R3. 单击 Mirror 或 Apply 镜像完成。 Orient Join
14、t(更改骨骼坐标)一般我们创建骨骼时都按照 XYZ 或者 None 來進行創建的,如果发现创建后骨骼自身坐标出了问题。可以在 Skeleton 下选择 Orient Joint 让出现问题的骨骼轴向与整体骨骼保持一致。 Set Preferred Angle(设置优先角)骨骼时,如果骨骼链处在一条直线上,那么在设定 IK 后,产生不了作用,可以通过设定优先角。使的 IK 解算器知道沿什么方向进行旋转。在设定 IK 前:1. 先在关节处旋转出一个角度, 选择骨骼链的根节点。2. 选择 SkeletonSet Preferred Angle。3. 再将骨骼还原成原始状态,现在 IK 就已经通过优先
15、角的设置知道了解算的方向。 Assume Preferred Angle(显示优先角)当我们不清楚所设定的骨骼的优先角是哪个方向时可以用这个命令来显示优先角.1. 选择需要显示优先角的骨骼.2. 选择 SkeletonAssume Preferred Angle4.3.3 建立人体骨骼:4.3.3.1 建立脊椎和头部骨骼1. 打开 BOY 文档。2. 在侧视图中建立脊椎骨骼。依次为腰部 1(跨部) 腰部 2 腰部3 胸部 1 胸部 2(锁骨) 脖子 1 脖子 2 头部 1 头部2。注意:从跨部开始往上建立。3. 按下 Insert 键,调整每个骨骼的位置。调整完后如下图:4此时的骨骼为定位骨骼
16、。建立一个层,命名为 old,把这些骨骼放入。如下图:4. 将层显示方式设置为 R。点击 Joint Tool,按住 V 键(点吸附方式)重新建立骨骼。5. 再建立一个层,命名为 new,把新建的骨骼放入,方便删除 old 层和定位骨骼。6. 删除 old 层和定位骨骼,最后删除 new 层。7. 重命名骨骼:从下往上依次为Boy_waist_A,Boy_waist_B,Boy_waist_C;Boy_chest_A,Boy_chest_B;Boy_neck_A,Boy_ neck_B;Boy_neck_A,Boy_ head_B;如下图:4.3.3.2 建立腿部骨骼1. 在侧视图中建立腿部骨
17、骼。如下图:2. 在正视图中,根据模型的腿部样子,调整骨骼。如下图:3. 在侧视图中,建立脚掌骨骼,并在正视图中调整好位置(移动它把它吸附在脚踝处) ,如下图:4. 在别处创建一个新的骨骼作为脚踝骨,如下图:这样做的目的是:如下面两幅图的比较5. 把新建的脚踝吸附到脚踝处。如下图:6. 删掉原来的两个踝骨,如下图:7. 在把脚踝骨分别与腿部和脚掌的骨骼相连接上。如下图:8. 把腿部骨骼和脊椎根关节相连(P 上) 。如下图:9. 把腿部骨骼命名分别为:Boy_leg_L Boy_knee_L Boy_ankle_L4.3.3.3 建立手部骨骼1. 在侧视图中从上往下建立手部骨骼。如下图:2. 在
18、正视图中调整好位置。如下图:(注意:在调整的时候要保持骨骼的共面性,只移动 X 和 Z 轴,不要移动 Y 轴。 )3. 创建手指:先在侧视图中从上往下建立一根手指的骨骼,并在各个视图中调整好位置。如下两图:4. 复制骨骼链作为其他的手指骨骼。5. 调整好每个手指骨骼的位置。如下图:(注意:在单独调节手指骨骼时,不要旋转骨骼,要保持骨骼的初始旋转属性为 0)6. 相同方法再设置大拇指骨骼。如下图:7. 选择每根手指骨骼的根关节,再选择手掌骨骼,按 P 键将它们相连。如下图:8. 命名手指骨:食指,中指,无名指,小拇指从上往下分别为:Boy_finger1A_L ,Boy_finger1B_L,B
19、oy_finger1C_L,Boy_finger1D_LBoy_finger2A_L ,Boy_finger2B_L,Boy_finger2C_L,Boy_finger1D_LBoy_finger3A_L ,Boy_finger3B_L,Boy_finger3C_L,Boy_finger3D_LBoy_finger4A_L ,Boy_finger4B_L,Boy_finger4C_L,Boy_finger4D_L大拇指为:Boy_ thumbA_L ,Boy _ thumbB_L,Boy_ thumbC_L,Boy _ thumbD_L9. 设置锁骨骨骼,在各个视图中将其定位。如下图:10.将
20、手臂的骨骼与锁骨相连,再将其连接到身体的骨骼上。如下图:11. 把手部骨骼命名为 Boy_shoulder_L,Boy_arm _L,Boy_elbow_L和 Boy_hand_L。4.3.3. 4 镜像复制和之前的准备:1. 检查所有骨骼的自身旋转轴是否正确,因为我们在建立骨骼的时候是使用 XYZ 形式创建的,那么每个关节自身旋转轴的 X 轴就应该都是指向下一个关节,而其他两个轴也应该保持同一个方向,如果发现不一致的地方,应该手工把它调整过来。当确保每个关节的自身旋转轴都正确以后,才能对身体的另一半骨骼进行镜像复制。检查方法:如下图。发现方向反了的骨骼,然后把它们反过来。选择反向骨骼的自身旋
21、转坐标,然后打开脚本编辑器(Script Editor) ,通过脚本编辑器的 EditClear All 命令把历史记录清楚掉。如下图:然后旋转一下自身旋转轴,现在脚本编辑器里显示出了刚才我们旋转关节自身旋转轴的历史。我们刚才是随意旋转的一个角度,但是我们需要的是旋转 180 度,所以现在我们选中上面的历史记录,然后用中键把它拖到脚本编辑器的下半部分,并且把 os 后面的哪个数值改为-180。这样这条命令的作用就是把这个坐标轴旋转 180 度。现在我们再把这条命令用中键直接拖到 Shelf 的 Custom 中作为一个快捷键来使用,如图:现在按一下 Z 键,撤消刚才对坐标轴的旋转操作。分别选择
22、有问题的坐标轴,再点击刚刚我们创建的快捷键,让有问题的坐标轴都旋转180 度。2. 把锁骨骨骼的自身旋转坐标手动旋转成世界坐标系的样子,因为这样更方便以后我们对于锁骨进行动画设置。如下图:3. 选择骨骼的根关节,然后运行 ModifyFreeze Transformations(冻结变形)命令。因为在刚才创建骨骼的时候,我们对于一些骨骼做过旋转和缩放操作,但是对于骨骼来说,在绑定的时候如果旋转参数不为 0 的话,很容易出现一些错误,而且也不方便我们使骨骼回位。所以在创建好骨骼以后要对它运行一下 Freeze Transformations 命令。如下图:4. 现在我们对骨骼的修改操作就完成了。下面我们需要的是把另外一半的骨骼镜像复制出来。分别选择锁骨骨骼和大腿骨骼,然后运行SkeletonMirror Joint,并在 Mirror Joint 命令的设置窗口中选择以哪个轴向进行镜像,然后替换名字,如下图:把 L 换成 R。5. 最后结果如下图:6. 骨骼建立工作完成。