第1章 表达式、脚本和Plug-in 1
1.1超越Maya界面 1
1.2 Maya表达式 2
1.2.1表达式与动画 2
1.2.2表达式与材质 6
1.2.3表达式与动力学 6
1.3脚本 7
1.3.1脚本应用 7
1.3.2脚本与表达式 10
1.3.3 MEL脚本 11
1.4 Plug-in 12
1.5内容回顾 13
第2章 第一个表达式——直升机螺旋桨 14
2.1例2-1:螺旋桨的旋转 14
2.1.1案例制作 14
2.1.2实例说明 16
2.1.3匀速变化的动画曲线与运动规律 17
2.2例2-2:螺旋桨启动——加速运动 19
2.2.1案例制作 19
2.2.2实例说明 19
2.2.3螺旋桨的完成动作——重新构造表达式 22
2.3表达式编辑窗口 23
2.3.1表达式操作过程 24
2.3.2表达式编辑窗口菜单 25
2.4 Maya的预定义函数 25
Maya预定义函数的类型 26
2.5内容回顾 27
第3章 滚动的箱子(一) 28
3.1任务分析 28
3.2例3-1:用表达式控制骨链动画 30
3.2.1案例制作 30
3.2.2表达式分析说明 36
3.3数据变量 40
3.3.1变量的类型 40
3.3.2变量的定义 40
3.3.3变量的匹配 41
3.3.4变量的表示 42
3.4运算 43
3.4.1数学运算 43
3.4.2关系运算 46
3.4.3逻辑运算 47
3.5条件语句 48
3.5.1 if语句 48
3.5.2 switch语句 49
3.6重新构造表达式 51
3.7内容回顾 53
第4章 滚动的箱子(二) 54
4.1任务分析 54
4.2用表达式控制箱子滚动 55
4.2.1转动第一个90° 55
4.2.2找到通用公式 56
4.2.3修改动画 57
4.3滚动五棱柱 58
4.3.1分析五棱柱的滚动过程 58
4.3.2用表达式控制五棱柱的滚动 59
4.4滚动六棱柱 61
4.5内容回顾 61
第5章 推拉门 62
5.1任务分析 62
5.2用locator的移动控制推拉门 64
5.2.1一个推拉单元 64
5.2.2两个推拉单元 66
5.2.3分析N个单元的推拉门 68
5.2.4表达式控制的完整推拉门 69
5.2.5重写控制推拉门的表达式 73
5.2.6对新表达式的说明 74
5.3数组变量 75
5.4循环语句 76
5.4.1循环语句的基本形式 76
5.4.2 while循环 76
5.4.3 do-while循环 78
5.4.4 for循环 79
5.4.5 for-in循环 81
5.4.6 continue语句和break语句 82
5.5表达式与MEL命令 84
5.6内容回顾 86
第6章 音响指示灯 87
6.1任务分析 87
6.2例6-1——简单音响灯效果 87
6.3案例说明 92
6.4例6-2——音响设备指示灯组 93
6.5案例补充说明 100
6.6内容回顾 101
第7章 动力学表达式——龙卷风 102
7.1粒子系统的特性 102
7.1.1多态性 103
7.1.2生命值 103
7.1.3过程控制与初始状态 103
7.1.4粒子系统的表达式 103
7.2任务分析 105
7.3例7-1——龙卷风的制作过程 106
7.4表达式分析 113
7.4.1运动分解 113
7.4.2例7-2——粒子沿曲线运动 115
7.4.3圆周运动的数学描述 118
7.4.4例7-3——粒子的圆周运动 119
7.4.5例7-4——沿螺旋线运动的粒子 120
7.4.6例7-5——沿渐开螺旋线运动的粒子 121
7.4.7描述龙卷风的外轮廓线 122
7.4.8例7-6——龙卷风雏形 125
7.4.9例7-7——分散粒子分布 126
7.4.10加入控制曲线影响 127
7.5内容回顾 127
第8章 海面 129
8.1海面制作 129
8.1.1操作步骤 129
8.1.2制作分析 132
8.1.3改进控制 136
8.1.4重新制作海面 137
8.2内容回顾 143
第9章 MEL概述 144
9.1自己的第一个脚本 144
9.1.1记录一个MEL命令 144
9.1.2 Scripts Editor操作说明 145
9.1.3深入了解sphere命令 147
9.1.4 sphere命令的其他状态 149
9.2 MEL命令的一般形式 152
9.2.1 MEL命令的使用格式 152
9.2.2 MEL命令的修饰词 153
9.2.3 MEL中的常用符号 154
9.2.4 MEL命令与脚本命令 158
9.3物体的显隐开关 158
9.3.1制作一个物体显隐切换开关 158
9.3.2简化脚本 159
9.3.3修改脚本 160
9.4内容回顾 160
第10章 建立操作窗口 162
10.1 Maya窗口元素 162
10.1.1 Attribute Editor窗口元素 162
10.1.2窗口命令的分类 163
10.2建立窗口 164
10.2.1定义新窗口命令——Window 164
10.2.2显示窗口命令——showWindow 167
10.3窗口布局 168
10.3.1 formLayout命令 168
10.3.2 columnLayout命令 174
10.3.3 rowLayout命令 176
10.3.4 scrollLayout命令 180
10.3.5 frameLayout命令 181
10.3.6 setParent命令 184
10.3.7 deleteUI命令 185
10.4控制体的一般工作方式 187
10.4.1反应方式 187
10.4.2控制过程 188
10.5颜色控制体 188
10.5.1 attrColorSliderGrp命令 189
10.5.2 colorIndexSliderGrp命令 191
10.6数字输入控制体 193
10.6.1数字输入控制体所包含的内容 193
10.6.2 floatField命令 194
10.6.3 floatFieldGrp命令 195
10.6.4 floatSlider命令 198
10.6.5 floatSliderButtonGrp命令 198
10.6.6 floatSliderGrp命令 199
10.6.7 intField命令 199
10.6.8 intFieldGrp命令 199
10.6.9 intSlider命令 199
10.6.10 intSliderGrp命令 199
10.7文字控制体 199
10.7.1 text命令 199
10.7.2 textField命令 200
10.7.3 textFieldButtonGrp命令 200
10.7.4 textFieldGrp命令 202
10.8选择控制体 202
10.8.1 radioButton命令 203
10.8.2 radioButtonGrp命令 204
10.8.3 checkBoxGrp命令 205
10.9按钮命令——button 206
10.10内容回顾 208
第11章 用户菜单文件 211
11.1制作菜单 211
11.1.1 menu命令 211
11.1.2 menultem命令 212
11.1.3 setParent命令 213
11.2自动调用的用户菜单 215
11.2.1用户菜单文件 215
11.2.2菜单文件的调用过程 216
11.3内容回顾 217
第12章 属性编辑工具 218
12.1任务分析 218
12.2录入脚本 219
12.3脚本剖析 224
12.3.1窗口内容分析 224
12.3.2调用内容分析 225
12.4操作窗口 225
12.4.1操作窗口界面代码 225
12.4.2操作窗口代码中的固定格式 228
12.4.3操作窗口代码中的容错处理 229
12.4.4操作窗口的界面元素 231
12.4.5窗口界面元素布局调整 236
12.4.6操作窗口状态切换 237
12.5场景操作 239
12.5.1脚本任务分析 239
12.5.2脚本内容 240
12.5.3脚本固定格式行 242
12.5.4读取窗口参数信息 242
12.5.5物体列表 245
12.5.6 nodeType命令 247
12.5.7节点类型判断 249
12.5.8修改属性状态操作 249
12.6编辑、保存脚本文件 250
12.6.1编辑脚本文件 250
12.6.2保存文件 250
12.7内容回顾 251
第13章 自定义符号 253
13.1任务分析 254
13.2合并物体形状节点 255
13.2.1 parent命令 256
13.2.2改变形状节点父节点 258
13.3撰写脚本 259
13.3.1脚本工作方式 259
13.3.2脚本工作内容列表 259
13.3.3脚本逻辑过程 260
13.3.4脚本内容 260
13.3.5 测试脚本 261
13.3.6 Freeze Transformations操作 262
13.3.7 makeIdentions命令 262
13.3.8修改脚本 267
13.3.9脚本剖析 267
13.4内容回顾 269
第14章 尾巴控制系统 270
14.1任务说明 270
14.1.1控制方式 270
14.1.2控制系统关联关系 272
14.1.3脚本操作方式 274
14.1.4脚本任务列表 275
14.2相关命令 276
14.2.1 createNode命令 276
14.2.2 listRelatives命令 277
14.2.3 ikHandle命令 277
14.2.4 spaceLocator命令 277
14.2.5 xform命令 278
14.2.6 group命令 280
14.2.7 move命令 281
14.2.8 stringArrayRemove命令 281
14.2.9 aimConstraint命令 281
14.2.10 pointConstraint命令 281
14.2.11 orientConstraint命令 281
14.2.12 connectAttr命令 281
14.3脚本内容说明 282
14.3.1脚本代码 282
14.3.2脚本结构 289
14.3.3创建控制器模块 289
14.3.4创建IK系统模块 291
14.3.5制作控制关系模块 293
14.3.6操作窗口模块 296
14.3.7工具起动模块 296
14.4脚本不足之处 297
14.5内容回顾 298
第15章 绘制玫瑰线 299
15.1任务说明 299
15.2 curve命令 300
15.3 eval命令 301
15.4脚本剖析 302
15.4.1编辑脚本 302
15.4.2调用脚本 304
15.4.3脚本分析 305
15.4.4脚本改进 307
15.5内容回顾 307
第16章 文件检查 308
16.1任务说明 308
16.2字符串操作命令 312
16.2.1 substituteAllString命令 312
16.2.2 tokenize命令 313
16.3文件操作命令 314
16.3.1 fopen命令 314
16.3.2 fprint命令 315
16.3.3 fgetline命令 315
16.3.4 fclose命令 315
16.3.5 workspace命令 316
16.3.6 file命令 316
16.3.7 filetest命令 317
16.4其他命令 318
16.4.1 symbolButton命令 318
16.4.2 confirmDialog命令 319
16.4.3脚本命令setWorkingDirectory和fileBrowser 321
16.5文件检查脚本 321
16.5.1脚本内容 321
16.5.2脚本剖析 325
16.5.3特殊模块说明 332
16.6内容回顾 333
第17章 物体批量改名 334
17.1脚本的工作方式 334
17.2脚本说明 344
17.2.1脚本内容 344
17.2.2操作窗口 352
17.2.3改名操作主程序 356
17.2.4给指定物体加前缀 359
17.2.5给指定物体加后缀 360
17.2.6替换物体名中的字符 361
17.2.7物体形状节点改名 362
17.2.8重新命名指定物体 363
17.2.9文件结构 364
17.3内容回顾 364
附录A Maya函数 365
A.1限制函数 365
A.1.1取整函数 365
A.1.2 ceil向上取整 365
A.1.3 floor向下取整 366
A.1.4 trunc截断取整 366
A.1.5 int取整 367
A.1.6 abs绝对值函数 368
A.1.7 clamp夹函数 368
A.1.8 min函数 369
A.1.9 max函数 369
A.1.10 sign符号函数 370
A.2幂函数 370
A.2.1幂函数的数学含义 370
A.2.2 exp函数 371
A.2.3 log函数 372
A.2.4 log10函数 372
A.2.5 pow函数 373
A.2.6 sqrt函数 373
A.3三角函数 374
A.3.1三角函数概述 374
A.3.2 cos函数 375
A.3.3 cosd函数 376
A.3.4 sin函数 377
A.3.5 sind函数 378
A.3.6 tan函数 379
A.3.7 tand函数 380
A.3.8 acos函数 380
A.3.9 acosd函数 381
A.3.10 asin函数 382
A.3.11 asind函数 382
A.3.12 atan函数 383
A.3.13 atand函数 384
A.3.14 atan2函数 384
A.3.15 atan2d函数 385
A.4向量函数 385
A.4.1 mag模函数 385
A.4.2 unit单位函数 386
A.4.3 angle夹角函数 386
A.4.4 cross叉积函数 387
A.4.5 dot点积函数 387
A.4.6 rot旋转函数 388
A.5转换函数 389
A.5.1 deg_to_rad 389
A.5.2 rad_to_deg 389
A.5.3 hsv_to_rgb 390
A.5.4 rgb_to_hsv 390
A.6阵列函数 391
A.6.1 size函数 391
A.6.2 sort函数 392
A.6.3 clear函数 393
A.7随机函数 393
A.7.1 gauss函数 393
A.7.2 noise函数 396
A.7.3 dnoise函数 397
A.7.4 rand函数 397
A.7.5 sphrand函数 399
A.7.6 seed 402
附录B 常用MEL命令 404
B.1通用MEL命令 404
B.1.1 ls命令 404
B.1.2 select命令 406
B.1.3 getAttr命令 407
B.1.4 setAttr命令 408
B.1.5 parent命令 409
B.1.6 makeldentity命令 409
B.1.7 group命令 410
B.1.8 move命令 411
B.1.9 spaceLocator命令 412
B.1.10 xform命令 412
B.2用户窗口命令 413
B.2.1定义新窗口命令——window 413
B.2.2显示窗口命令——showWindow 414
B.3窗口布局 414
B.3.1 formLayout命令 414
B.3.2 columnLayout命令 416
B.3.3 rowLayout命令 418
B.3.4 scrollLayout命令 422
B.3.5 frameLayout命令 423
B.3.6 setParent命令 426
B.3.7 deleteUI命令 426
B.4颜色控制体 427
B.4.1 attrColorSliderGrp命令 427
B.4.2 colorIndexSliderGrp命令 429
B.5数字输入控制体 432
B.5.1数字输入控制体所包含的内容 433
B.5.2 floatField命令 434
B.5.3 floatFieldGrp命令 435
B.5.4 floatSlider命令 439
B.5.5 floatSliderButtonGrp命令 440
B.5.6 floatSliderGrp命令 444
B.5.7 intField命令 449
B.5.8 intFieldGrp命令 450
B.5.9 intSlider命令 454
B.5.10 intSliderGrp命令 455
B.6文字控制体 460
B.6.1 text命令 460
B.6.2 textField命令 461
B.6.3 textFieldButtonGrp命令 462
B.6.4 textFieldGrp命令 466
B.7选择控制体 470
B.7.1 radioButton命令 470
B.7.2 radioButtonGrp命令 472
B.7.3 radioCollection命令 478
B.7.4 checkBoxGrp命令 478
B.8按钮命令——button 480
B.9菜单命令 481
B.9.1 menu命令 481
B.9.2 menuItem命令 482
B.10其他窗体命令 484
B.10.1 symbolButton命令 484
B.10.2 confirmDialog命令 485
B.10.3脚本命令setWorkingDirectory和fileBrowser 487
B.11 NURBS相关常用命令 487
B.11.1 pointOnCurve命令 487
B.11.2 pointOnSurface命令 488
B.12节点操作命令 489
B.12.1 createNode命令 489
B.12.2 nodeType命令 490
B.12.3 listRelatives命令 490
B.12.4 connectAttr命令 490
B.13字符处理 491
B.13.1 tokenize命令 491
B.13.2 stringArrayRemove命令 491
B.14设置操作命令 492
B.14.1 ikHandle命令 492
B.14.2 aimConstraint命令 492
B.14.3 pointConstraint命令 492
B.14.4 onentConstraint命令 492
B.14.5 expression命令 492
B.14.6 dynExpression命令 493
B.15 文件操作命令 493
B.15.1 fopen命令 493
B.15.2 fprint命令 494
B.15.3 fgetline命令 494
B.15.4 fclose命令 494
B.15.5 workspace命令 495
B.15.6 file命令 495
B.15.7 filetest命令 496
附录C 常用MEL命令列表 497
附录D 向量的点乘与叉乘 510
D.1向量的点乘 510
D.2向量的叉积(矢性积) 511