第1篇 角色设定基础 21
第1章 人体关节正常活动范围 21
1.1 人体骨骼概述 21
1.2 上肢关节活动范围 21
1.2.1 头部活动范围 21
1.2.2 肩部活动范围 22
1.2.3 手臂活动范围 23
1.2.4 肘部活动范围 23
1.2.5 手部活动范围 24
1.2.6 腰部活动范围 25
1.3 下肢关节活动范围 25
1.3.1 腿部活动范围 25
1.3.2 膝部活动范围 26
1.3.3 脚部活动范围 26
第2章 骨骼创建 27
2.1 骨骼创建命令 27
2.1.1 Maya骨骼概述 27
2.1.2 骨骼创建工具(Joint Tool) 27
2.1.3 插入骨骼工具(Insert Joint Tool) 29
2.1.4 重置根关节(Reroot Skeleton) 29
2.1.5 清除骨骼(Remove Joint) 30
2.1.6 断开骨骼(Disconnect Joint) 30
2.1.7 连接骨骼(Connect Joint) 31
2.1.8 镜像骨骼(Mirror Joint) 31
2.1.9 定向骨骼(Orient Joint) 33
2.2 正向动力学与反向动力学 34
2.2.1 正向动力学与反向动力学概述 34
2.2.2 正向动力学(FK) 34
2.2.3 反向动力学(IK) 35
2.2.4 IK手柄工具(IK Handle Tool) 35
2.2.5 样条IK(IK Spline Handle Tool) 37
2.2.6 样条IK范例 37
2.3 父子层级控制 40
2.3.1 父子层级控制概述 40
2.3.2 创建父子层级关系 40
2.3.3 解开父子层级关系 40
2.4 组及控制器定位 41
2.4.1 组及控制器定位的重要性 41
2.4.2 通过组定位控制器 41
2.5 自定义属性及驱动关键帧 43
2.5.1 自定义属性概述 43
2.5.2 自定义属性范例 43
2.5.3 属性关联 44
2.5.4 驱动关键帧(Set Driven Key) 45
2.5.5 驱动关键帧范例 45
2.6 角色身体骨骼定位 46
2.6.1 躯干骨骼的结构 46
2.6.2 躯干骨骼定位 46
2.6.3 腿部骨骼定位 47
2.6.4 手臂骨骼定位 47
2.6.5 桡骨骨骼解决方案 48
2.6.6 锁骨定位 48
2.6.7 手指骨骼定位 49
2.6.8 骨骼轴向检查 49
2.6.9 镜像骨骼 50
第3章 约束 51
3.1 约束(Constrain)概述 51
3.2 点约束(Point) 51
3.2.1 创建点约束 51
3.2.2 X衣架范例 53
3.3 方向约束(Orient) 59
3.4 缩放约束(Scale) 60
3.5 父子约束(Parent) 60
3.6 极向量约束(Pole Vector) 61
3.7 目标约束(Aim) 61
3.7.1 创建目标约束 62
3.7.2 液压系统范例 62
3.7.3 活塞系统范例 64
3.8 其他约束 66
3.8.1 几何体约束(Geometry) 66
3.8.2 法线约束(Normal) 66
3.8.3 切线约束(Tangent) 66
第4章 角色蒙皮设定 67
4.1 蒙皮概述 67
4.2 光滑蒙皮(Smooth Bind) 67
4.2.1 通过属性编辑器来调整蒙皮的权重 68
4.2.2 权重的绘制 69
4.3 镜像权重(Mirror Skin Weights) 70
4.4 添加影响(Add influence) 70
4.5 刚体蒙皮命令(Rigid Bind) 72
4.6 分离权重(Detach Skin) 73
4.7 转到绑定姿势(Go To Bind Pose) 74
4.8 cometScripts插件 74
4.8.1 cometScripts插件简介 74
4.8.2 cometScripts插件安装方法 74
4.8.3 重命名工具 74
4.8.4 权重绘制 76
4.8.5 权重保存 78
4.8.6 权重镜像 78
第5章 变形器 81
5.1 变形的概念和用途 81
5.2 变形的种类 81
5.3 融合变形(Blend Shape) 81
5.3.1 创建融合变形 82
5.3.2 融合变形添加、移除及交换 84
5.4 晶格变形(Lattice) 84
5.4.1 创建晶格变形效果 84
5.4.2 重设影响晶格点和去除曲扭 85
5.5 包裹变形(Wrap) 86
5.5.1 创建包裹变形 86
5.5.2 添加和去除包裹影响体 87
5.6 簇变形(Cluster) 87
5.6.1 创建簇变形 87
5.6.2 绘画簇权重 88
5.7 软变形(Soft Modification) 89
5.8 非线性变形工具(Nonlinear)概述 90
5.8.1 创建弯曲变形(Blend) 90
5.8.2 创建扩张变形(Flare) 91
5.8.3 创建正弦变形(Sine) 92
5.8.4 正弦变形创建骨骼自动尾随 93
5.8.5 创建挤压变形(Squash) 95
5.8.6 创建扭曲变形(Twist) 95
5.8.7 创建波形变形(Wave) 96
5.9 造型变形(Sculpt Deformer) 97
5.10 颤动变形(Jiggle Deformer) 98
5.10.1 创建颤动变形 99
5.10.2 创建颤动缓存 99
5.10.3 删除颤动缓存 99
5.11 线变形工具(Wire Tool) 100
5.12 褶皱变形(Wrinkle Tool) 101
5.12.1 褶皱变形的种类 101
5.12.2 创建褶皱变形 101
第6章 Maya设定常用材质节点工具 103
6.1 材质节点概述 103
6.2 节点创建方法 103
6.3 节点的输入和输出 104
6.4 乘除节点(Multiply Divide) 104
6.5 平均数节点(Plus Minus Average) 106
6.6 翻转节点(Reverse) 109
6.7 条件节点(Condition) 110
6.8 融合节点(blendColors) 113
6.9 限制节点(Clamp) 115
6.10 距离节点(distanceBetween) 117
第2篇 角色高级设定 120
第7章 胳膊系统设定 120
7.1 胳膊不跟随肩部 120
7.1.1 肩部带动胳膊概述 120
7.1.2 手臂骨骼创建 120
7.1.3 手臂控制器创建 120
7.1.4 通过约束控制不跟随肩部 121
7.1.5 创建跟随开关 122
7.1.6 跟随开关参数关联 123
7.2 肩部无翻转 124
7.2.1 肩部无翻转概述 124
7.2.2 无翻转的原理 124
7.2.3 手臂骨骼创建 124
7.2.4 创建手臂控制器 125
7.2.5 创建肩部辅助骨骼 125
7.2.6 锁定肩部骨骼 126
7.2.7 二头肌骨骼递减表达式 126
7.3 胳膊自动扭曲系统 127
7.3.1 制作思路 127
7.3.2 创建骨骼及IK 127
7.3.3 设置高级扭曲系统 128
7.3.4 创建辅助控制骨骼 128
7.3.5 创建层级 128
7.3.6 创建簇控制样条曲线 129
7.3.7 创建辅助骨骼拉伸 129
7.3.8 创建其他辅助骨骼 129
7.3.9 匹配手臂骨骼 130
7.4 肢体次级骨骼 131
7.4.1 肢体次级骨骼原理 131
7.4.2 创建毛发系统 132
7.4.3 创建次级骨骼 132
7.4.4 创建控制骨骼 133
7.4.5 创建locator辅助控制器 133
7.4.6 为nurbus刷权重 134
7.4.7 约束控制骨骼 134
7.4.8 为平面绘制权重 136
7.4.9 次级骨骼匹配到手臂上 136
第8章 躯干系统设定 138
8.1 躯干单骨骼线性IKFK共存 138
8.1.1 制作思路 138
8.1.2 创建躯干骨骼及IK 138
8.1.3 创建躯干IK控制器及层级关系 138
8.1.4 创建躯干FK控制器 139
8.1.5 IK与FK控制器之间层级 139
8.2 躯干IKFK共存技术 140
8.2.1 制作思路 140
8.2.2 躯干IKFK共存原理 140
8.2.3 骨骼及控制器创建 141
8.2.4 创建躯干控制器 142
8.2.5 创建躯干约束 142
8.3 躯干IKFK共存JS法 144
8.3.1 躯干骨骼及IK创建 144
8.3.2 辅助骨骼控制样条IK 144
8.3.3 创建辅助控制骨骼及控制器 145
8.3.4 辅助骨骼约束控制 145
8.4 躯干无翻转系统 147
8.4.1 躯干控制骨骼及控制器创建 147
8.4.2 辅助Locator创建 149
8.4.3 平均节点控制Locator组 150
第9章 三套骨骼及骨骼拉伸系统设定 154
9.1 IK骨骼拉伸——表达式方式 154
9.1.1 Transfor方式骨骼拉伸等长原理 154
9.1.2 Transfor方式骨骼拉伸不等长原理 154
9.1.3 Scale方式骨骼拉伸原理 154
9.1.4 创建腿部骨骼及IK 155
9.1.5 创建腿部骨骼测量及控制器 155
9.1.6 骨骼常规拉伸 156
9.1.7 骨骼无限拉伸 157
9.1.8 骨骼拉伸开关 157
9.1.9 骨骼拉伸后腿部形状保持 159
9.1.10 线性IK骨骼拉伸及挤压 159
9.2 IK骨骼拉伸——节点方式 162
9.2.1 节点方式制作概述 162
9.2.2 创建腿部骨骼空组 163
9.2.3 创建拉伸所需节点 163
9.2.4 连接距离节点 164
9.2.5 连接条件节点 164
9.2.6 连接乘除节点 165
9.2.7 连接融合节点 165
9.2.8 融合节点输出值分配给各骨骼 165
9.3 三套骨骼——表达方式 166
9.3.1 三套骨骼制作思路 166
9.3.2 三套骨骼创建 166
9.3.3 创建IK控制手柄及控制器 167
9.3.4 创建FK控制器 168
9.3.5 FK控制器约束骨骼 168
9.3.6 IK控制骨骼约束绑定骨骼 169
9.3.7 FK控制骨骼约束绑定骨骼 169
9.3.8 骨骼及控制器显示表达式 169
9.3.9 约束开关表达式 170
9.3.10 约束开关表达式原理 171
9.4 三套骨骼——节点方式 171
9.4.1 三套骨骼—节点方式概述 171
9.4.2 创建融合节点 172
9.4.3 融合节点控制三套骨骼显示原理 172
9.4.4 节点连接控制器显示 173
9.4.5 融合节点控制约束节点 174
第10章 脚部系统设定 176
10.1 脚部设置——打组法 176
10.1.1 脚部打组法概述 176
10.1.2 脚部打组方法一 176
10.1.3 创建腿部控制器 176
10.1.4 脚部打组确定旋转轴 177
10.1.5 控制器属性关联 179
10.1.6 限制脚部组旋转 180
10.1.7 脚部打组方法二 181
10.1.8 脚部打组方法三 183
10.2 脚部设置——反转脚 185
10.2.1 反转脚概述 185
10.2.2 创建腿部骨骼及IK 185
10.2.3 创建IK手柄及控制器 186
10.2.4 脚部属性关联 187
10.2.5 创建其他旋转轴 187
10.2.6 使用min和max创建脚部side系统 188
10.3 脚部设置——Roll系统 189
10.3.1 使用条件语句和clamp函数创建Roll系统 189
10.3.2 使用linstep创建Roll系统 190
10.3.3 linstep函数Roll系统所用表达式详解 191
第11章 膝盖锁定系统设定 193
11.1 膝盖肘部锁定——节点 193
11.1.1 膝盖肘部锁定制作思路 193
11.1.2 创建手臂骨骼及控制器 193
11.1.3 创建距离测量 194
11.1.4 通过节点创建骨骼拉伸 196
11.1.5 肘部锁定节点 199
11.2 膝盖肘部锁定——表达式 203
11.2.1 表达式制作膝盖肘部锁定 204
11.2.2 嵌套条件语句制作膝盖肘部锁定 205
11.2.3 嵌套语句原理 206
第12章 无缝转换系统设定 207
12.1 parent控制器制作及IKFK控制器颜色技巧 207
12.1.1 Parent控制器制作思路 207
12.1.2 创建形体 208
12.1.3 Parent命令结合形体节点 208
12.1.4 表示式控制形体颜色变化 209
12.2 IKFK无缝转换 210
12.2.1 无缝转换制作思路 210
12.2.2 创建Locator定位 211
12.2.3 MEL控制无缝转换 211
12.2.4 无缝转换MEL命令说明 213
12.3 手部无缝跟随头和腰 213
12.3.1 无缝跟随制作思路 213
12.3.2 创建手部及控制器 213
12.3.3 创建头腰约束 214
12.3.4 MEL控制无缝跟随 215
12.4 头部无缝跟随脖子切换 216
12.4.1 创建骨骼及控制器 216
12.4.2 创建约束及添加自定义属性 217
12.4.3 MEL控制无缝跟随 218
12.5 自定义右键弹出命令 219
12.5.1 自定义右键弹出命令概述 219
12.5.2 IKFK无缝转换MEL打包 219
12.5.3 Reset MEL打包 220
12.5.4 制作鼠标右键快捷键 221
12.5.5 修改dagMenuProc.mel 222
12.5.6 将上述MEL输入到表达式中 223
第13章 手部系统设定 224
13.1 手部翻转控制 224
13.1.1 翻转原理 224
13.1.2 创建手部及辅助骨骼 224
13.1.3 创建手部IK及控制器 225
13.1.4 创建Locator定位 226
13.1.5 创建手部层级关系 226
13.1.6 参数关联控制手腕翻转 227
13.2 手指控制——表达式 228
13.2.1 制作思路 228
13.2.2 创建手部骨骼及控制器 228
13.2.3 手部控制器属性及参数关联 229
13.2.4 表达式控制手指弯曲及分开 231
13.3 Gimbal Lock万向节锁 232
13.3.1 万向节锁原理 232
13.3.2 万向节锁解决办法 233
第14章 面部系统设定 235
14.1 面部骨骼直接控制 235
14.1.1 眉毛骨骼定位 235
14.1.2 眼睛骨骼定位 235
14.1.3 颧骨骨骼定位 236
14.1.4 脸颊骨骼定位 236
14.1.5 下巴骨骼定位 236
14.1.6 头骨及脖子骨骼定位 237
14.1.7 下颌骨骼定位 237
14.1.8 舌头骨骼定位 237
14.1.9 下巴层级骨骼定位 237
14.2 面部融合变形UI面板制作 239
14.2.1 软选工具应用 239
14.2.2 创建BlendShape 239
14.2.3 创建UI控制器 240
14.2.4 表达式控制UI面板 241
14.2.5 控制器x轴位移控制左右嘴角 241
14.2.6 左右嘴角控制原理 242
14.2.7 控制器在左上角和右上角起作用 242
14.2.8 控制器y轴为1时,左右嘴角起作用 242
14.3 面部次级骨骼 243
14.3.1 制作思路 243
14.3.2 模型及Blend Shape创建 243
14.3.3 创建粒子发射器 243
14.3.4 创建次级骨骼及绘制权重 244
14.3.5 参数关联及表达式 245
14.3.6 其他附着表面工具制作方法及优缺点 246
14.4 眼球自动跟随眼皮 247
14.4.1 眼球自动跟随眼皮的制作思路 247
14.4.2 约束控制 247
14.4.3 眼球向下自动闭眼表达式 248
14.4.4 眼球旋转带动眼皮轻微运动表达式 248
14.5 头部挤压拉伸 249
14.5.1 骨骼及控制器创建 249
14.5.2 表达式控制骨骼挤压 250
第15章 骨骼动力学及尾巴系统设定 251
15.1 骨骼动力学 251
15.1.1 制作思路 251
15.1.2 创建骨骼及IK 251
15.1.3 创建柔体 251
15.1.4 创建弹簧系统 252
15.2 自动尾随系统设置 253
15.2.1 sin函数原理 253
15.2.2 默认sin函数效果 253
15.2.3 改变上下幅度 254
15.2.4 改变左右幅度 254
15.2.5 创建骨骼及控制器 254
15.2.6 表达式控制尾随 255
15.3 自动尾巴卷曲技术 255
15.3.1 制作思路 255
15.3.2 创建骨骼及控制器 256
15.3.3 表达式控制卷曲 257
15.3.4 表达式原理 258
第3篇 MEL应用 259
第16章 MEL基础 259
16.1 理解MEL 260
16.2 MEL的重要性 260
16.3 如何学习MEL 260
16.4 MEL和表达式的区别 260
16.5 MEL编辑器 261
16.6 命令行(Command Line) 261
16.7 脚本编辑器 262
16.8 MEL命令(Command) 262
16.9 MEL命令快速帮助 262
16.10 建立快捷按钮(Shelf) 263
16.11 编辑快捷按钮 264
16.12 自定义快捷菜单 264
16.13 其他常用菜单命令及快捷按钮 265
16.14 Maya插件的一般安装方法 265
16.15 MEL运算符 266
16.15.1 数学运算符 266
16.15.2 关系运算符 266
16.15.3 逻辑运算符 266
16.15.4 赋值运算符 266
16.16 变量 266
16.16.1 浮点型变量 266
16.16.2 整数型变量 267
16.16.3 字符串变量 267
16.16.4 矢量变量 267
16.16.5 预定义变量 267
16.16.6 在全局中使用自定义变量 267
16.16.7 变量(variable)的规范 267
16.17 数组 268
16.17.1 数组声明 268
16.17.2 给数组赋值 268
16.18 print命令 269
16.19 条件语句 269
16.20 select命令 270
16.21 setAttr命令 270
16.22 表达式 271
16.23 headsUpMessage命令 273
16.24 ls-sl命令 273
16.25 函数 274
16.25.1 min最小值函数 274
16.25.2 max函数 274
16.25.3 Clamp函数 275
16.25.4 sin三角函数 275
16.25.5 cos三角函数 275
16.25.6 linstep曲线函数 275
16.25.7 linstep函数算法 275
第17章 MEL高级窗口 275
17.1 MEL窗口概述 276
17.2 创建窗口 276
17.2.1 window命令(创建窗口) 276
17.2.2 showWindow命令(显示窗口) 277
17.2.3 标签命名 277
17.2.4 设置窗口的大小 277
17.2.5 窗口命名 278
17.2.6 deleteUI命令(销毁界面元素) 278
17.2.7 条件语句使用deleteUI命令 279
17.2.8 window常用子命令 279
17.3 控件(Control)及布局(LayoUt) 279
17.3.1 控件及布局概述 279
17.3.2 rowColumnLayout命令(横竖布局) 280
17.3.3 text命令(静态文本) 282
17.3.4 改变文字与按钮之间间隔 282
17.3.5 separato r命令(分割线) 284
17.3.6 symbolBotton命令(图标按钮) 287
17.3.7 command命令(执行命令) 289
17.3.8 层级关系 290
17.3.9 setParent命令(指定当前布局) 290
17.3.10 columnLayout命令(竖布局) 290
17.3.11 使文本框内名称与创建的球体名称相同 291
17.3.12 rowLayout命令(横布局) 292
17.3.13 rowColumnLayout命令(横竖布局) 293
17.3.14 scrollLayout命令(滚动布局) 294
17.3.15 frameLayout命令(边框布局) 294
17.3.16 paneLayout命令(窗格布局) 298
17.3.17 tabLayout命令(标签布局) 299
17.3.18 formLayout命令(表单布局) 300
17.3.19 gridLayout命令(格子布局) 304
17.3.20 menuBarLayout命令(菜单条布局) 305
17.3.21 shelfLayout命令(工具架布局) 306
17.3.22 shelfTabLayout命令(工具架标签布局) 307
17.3.23 “confirmDialog”命令(确认对话框) 307
附录 角色设定规范 311
附录A 骨骼绑定规范 311
附录B 骨骼常用名称 319