第1章 表达式、脚本和Plug-in 1
1.1 超越Maya界面 1
1.2 表达式 2
1.2.1 表达式动画 2
1.2.2 关键帧动画与表达式动画 3
1.2.3 关联动画与表达式动画 5
1.2.4 动画方式的选择 6
1.2.5 动画控制节点网络结构 6
1.3 脚本 8
1.3.1 脚本应用 9
1.3.2 MEL语言、MEL命令与MEL脚本 12
1.3.3 脚本与表达式 12
1.3.4 MEL脚本的调用 13
1.4 Plug-in 13
1.5 本章小结 14
第2章 第一个表达式——旋转的盒子 16
2.1 匀速旋转的盒子 16
2.1.1 例2-01 16
2.1.2 实例说明 17
2.1.3 匀速变化的动画曲线与运动规律 18
2.2.1 例2-02 21
2.2.2 实例说明 21
2.2 加速旋转的盒子 21
2.3 表达式编辑器窗口 24
2.3.1 表达式操作过程 24
2.3.2 表达式编辑器窗口菜单 25
2.4 Maya的预定义函数 26
2.4.1 Maya预定义函数的类型 26
2.5.1 幂函数的数学含义 28
2.5.2 Maya中的幂函数 28
2.5 幂函数 28
2.4.2 Maya中更多的函数 28
2.6 本章小结 29
第3章 滚动的箱子(一) 30
3.1 任务分析 30
3.2 用骨链控制滚动 31
3.2.1 例3-01 31
3.2.2 表达式分析说明 35
3.3.2 变量的定义 39
3.3 数据变量 39
3.3.1 变量的类型 39
3.3.3 变量的匹配 40
3.3.4 变量的表示 43
3.4 运算 43
3.4.1 数学运算 43
3.4.2 关系运算 45
3.4.3 逻辑运算 47
3.5.1 if语句 48
3.5 条件语句 48
3.5.2 switch语句 49
附录A 向量的点乘与叉乘 52
第4章 滚动的箱子(二) 54
4.1 任务分析 54
4.2 用表达式控制箱子滚动 55
4.2.1 转动第一个90° 55
4.2.2 找到通用公式 56
4.2.3 修改动画 57
4.3.1 分析五棱柱的滚动过程 58
4.3 滚动五棱柱 58
3.6 本章小结 58
4.3.2 用表达式控制五棱柱的滚动 59
4.4 滚动六棱柱 60
4.5 取整函数 61
4.5.1 ceil(向上取整)函数 61
4.5.2 floor(向下取整)函数 62
4.5.3 trunc(截断取整)函数 63
4.5.4 int(取整)函数 63
4.6.2 cos函数 64
4.6 三角函数 64
4.6.1 三角函数概述 64
4.6.3 cosd函数 66
4.6.4 sin函数 66
4.6.5 sind函数 68
4.6.6 tan函数 68
4.6.7 tand函数 69
4.6.8 acos函数 70
4.6.9 acosd函数 71
4.6.10 asin函数 72
4.6.11 asind函数 73
4.6.12 atan函数 73
4.6.13 atand函数 74
4.6.14 atan2函数 74
4.6.15 atan2d函数 75
4.7 本章小结 76
第5章 推拉门 77
5.1 任务分析 77
5.2.1 一个推拉单元——例5-01 79
5.2 用locator的移动控制推拉门 79
5.2.2 两个推拉单元 81
5.2.3 分析N个单元的推拉门 82
5.2.4 用表达式控制的完整推拉门——例5-02 83
5.2.5 重写控制推拉门的表达式——例5-03 86
5.2.6 对新表达式的说明 87
5.3 数组变量 88
5.4 循环语句 89
5.4.1 循环语句的基本形式 89
5.4.2 while循环 89
5.4.3 do-while循环 90
5.4.4 for循环 91
5.4.5 for-in循环 93
5.4.6 continue语句和break语句 93
5.5 表达式与MEL命令 95
5.6 setAttr命令 97
5.7 本章小结 98
第6章 龙卷风 100
6.1 粒子系统的特性 100
6.1.3 过程控制与初始状态 101
6.1.2 生命值 101
6.1.1 多态性 101
6.1.4 粒子系统的表达式 102
6.2 任务分析 104
6.3 龙卷风制作过程——例6-01 104
6.4 表达式分析 110
6.4.1 运动分解 110
6.4.2 pointOnCurve命令 112
6.4.3 粒子沿曲线运动——例6-02 114
6.4.5 粒子的圆周运动——例6-03 117
6.4.4 圆周运动的数学描述 117
6.4.6 沿螺旋线运动的粒子——例6-04 119
6.4.7 沿渐开螺旋线运动的粒子——例6-05 119
6.4.8 描述龙卷风的外轮廓线 120
6.4.9 龙卷风雏形——例6-06 123
6.4.10 分散粒子分布——例6-07 124
6.4.11 加入控制曲线影响 125
6.5 本章小结 126
7.1.1 操作步骤 127
7.1 海面制作 127
第7章 海面 127
7.1.2 标记菜单 129
7.1.3 制作分析 130
7.1.4 改进控制 133
7.1.5 重新制作海面 135
7.2 随机函数 136
7.2.1 gauss函数 136
7.2.2 noise函数 138
7.2.3 dnoise函数 139
7.2.4 rand函数 140
7.2.5 sphrand函数 142
7.2.6 seed函数 145
7.3 本章小结 146
第8章 MEL概述 147
8.1 自己的第一个脚本 147
8.1.1 记录一个操作的MEL命令——例8-01 147
8.1.2 深入了解记录的sphere命令 148
8.1.3 sphere命令的其它状态 150
8.2.2 MEL命令的修饰词 151
8.2 MEL命令的一般形式 151
8.2.1 MEL命令的使用格式 151
8.2.3 MEL中的常用符号 153
8.2.4 MEL命令与脚本命令 156
8.3 几个常用的MEL命令 157
8.3.1 ls命令 157
8.3.2 select命令 159
8.3.3 getAttr命令 160
8.3.4 setAttr命令 161
8.4.1 制作一个物体显/隐切换开关 162
8.4 物体的显/隐开关 162
8.4.2 简化脚本 163
8.4.3 修改脚本 163
8.5 本章小结 164
附录A 166
第9章 建立操作窗口(一) 168
9.1 Maya窗口元素 168
9.1.1 Attributes Editor(属性编辑器)窗口 168
9.1.2 窗口命令分类 169
9.2.1 window(定义新窗口)命令 170
9.2 建立窗口 170
9.2.2 showWindow(显示窗口)命令 172
9.3 窗口布局 174
9.3.1 formLayout命令 174
9.3.2 columnLayout命令 181
9.3.3 rowLayout命令 184
9.3.4 scrollLayout命令 190
9.3.5 frameLayout命令 192
9.3.6 setParent命令 195
9.3.7 deleteUI命令 197
9.4 本章小结 198
第10章 建立操作窗口(二) 200
10.1 控制体的一般工作方式 200
10.1.1 反应方式 200
10.1.2 控制过程 202
10.2 颜色控制体 203
10.2.1 attrColorSliderGrp命令 203
10.2.2 colorIndexSliderGrp命令 205
10.3.1 数字输入控制体所包含的内容 209
10.3 数字输入控制体 209
10.3.2 floatField命令 210
10.3.3 floatFieldGrp命令 212
10.3.4 floatSlider命令 215
10.3.5 floatSliderButtonGrp命令 216
10.3.6 floatSliderGrp命令 216
10.3.7 intField命令 216
10.3.8 intFieldGrp命令 216
10.4.2 textField命令 217
10.4.1 text命令 217
10.3.10 intSliderGrp命令 217
10.4 文字控制体 217
10.3.9 intSlider命令 217
10.4.3 textFieldButtonGrp命令 219
10.4.4 textFieldGrp命令 220
10.5 选择控制体 221
10.5.1 radioButton命令 222
10.5.2 radioButtonGrp命令 224
10.5.3 checkBoxGrp命令 226
10.6 button(按钮)命令 228
10.7 本章小结 229
第11章 属性编辑窗口 232
11.1 任务分析 232
11.1.1 窗口内容分析 232
11.1.2 调用内容分析 233
11.2 任务窗口 233
11.2.1 操作窗口的界面 233
11.2.2 操作窗口状态切换及检错 240
11.3.1 脚本内容 243
11.3 场景操作 243
11.3.2 nodeType命令 246
11.3.3 窗口选择内容读取 247
11.3.4 物体过滤 249
11.3.5 复合条件判断 249
11.4 编辑、保存脚本文件 249
11.4.1 编辑脚本文件 250
11.4.2 文件保存 251
11.5 本章小结 252
第12章 自定义符号 254
12.1 任务分析 255
12.2 合并物体的形状节点 256
12.2.1 parent命令 257
12.2.2 改变形状节点的父节点 259
12.3 编写脚本 260
12.3.1 脚本工作方式 260
12.3.2 脚本工作内容列表 260
12.3.3 脚本逻辑过程 260
12.3.4 脚本内容 261
12.3.5 测试脚本 261
12.3.6 Freeze Transformations操作 263
12.3.7 makeIdentity命令 264
12.3.8 修改脚本 267
12.4 本章小结 268
第13章 海面制作 269
13.1 任务分析 269
13.2 添加用户属性 269
13.3 添加表达式 273
13.3.1 expression命令 274
13.4.1 脚本结构 276
13.3.2 dynExpression命令 276
13.4 编写脚本 276
13.4.2 程序单元 278
13.4.3 脚本内容 279
13.5 本章小结 282
第14章 尾巴控制系统 283
14.1 任务说明 283
14.1.1 控制方式 283
14.1.2 控制系统关联关系 284
14.1.3 脚本操作方式 286
14.1.4 脚本任务列表 287
14.2 相关命令 288
14.2.1 createNode命令 288
14.2.2 listRelatives命令 289
14.2.3 ikHandle命令 290
14.2.4 spaceLocator命令 290
14.2.5 xform命令 290
14.2.6 group命令 292
14.2.8 stringArrayRemove命令 293
14.2.7 move命令 293
14.2.9 aimConstraint命令 294
14.2.10 pointConstraint命令 294
14.2.11 orientConstraint命令 294
14.2.12 connectAttr命令 294
14.3 脚本内容说明 294
14.4 脚本的不足之处 301
14.5 本章小结 302
15.1 制作菜单 304
15.1.1 menu命令 304
第15章 用户菜单文件 304
15.1.2 menuItem命令 305
15.1.3 setParent命令 307
15.2 自动调用的用户菜单 309
15.2.1 用户菜单文件 310
15.2.2 菜单文件的调用过程 311
15.3 本章小结 312
第16章 文件检查 313
16.1 任务说明 313
16.2.1 substituteAllString命令 315
16.2 字符串操作命令 315
16.2.2 tokenize命令 316
16.3 文件操作命令 317
16.3.1 fopen命令 317
16.3.2 fprint命令 317
16.3.3 fgetline命令 317
16.3.4 fclose命令 318
16.3.5 workspace命令 318
16.3.6 file命令 319
16.4.1 symbolButton命令 320
16.3.7 filetest命令 320
16.4 其它命令 320
16.4.2 confirmDialog命令 322
16.4.3 脚本命令setWorkingDirectory和fileBrowser 324
16.5 文件检查 324
16.5.1 脚本基本说明 324
16.5.2 特殊单元说明 328
16.6 本章小结 329
第17章 物体批量改名 331
17.1 脚本的工作方式 331
17.2.1 操作窗口 339
17.2 脚本说明 339
17.2.2 改名操作主程序 343
17.2.3 给指定物体加前缀 346
17.2.4 给指定物体加后缀 347
17.2.5 替换物体名中的字符 348
17.2.6 物体形状节点改名 349
17.2.7 重新命名指定物体 350
17.2.8 文件结构 350
17.3 本章小结 351