第1章 计算机动画概述 1
1.1 感知 1
1.2 动画的变迁 3
1.2.1 早期设备 3
1.2.2 早期的传统动画 5
1.2.3 迪斯尼(Disney) 6
1.2.4 其他贡献者 7
1.2.5 其他动画媒介 8
1.2.6 动画的原理 8
1.2.7 电影制作的原理 9
1.3 动画的生产 12
1.4 计算机动画的生产 16
1.4.1 计算机动画的生产任务 17
1.4.2 数字编辑 19
1.4.3 数字视频 21
1.4.4 数字音频 22
1.5 计算机动画简史 23
1.5.1 早期的活跃者(1980年以前) 23
1.5.2 中间的几年(1980年左右) 25
1.5.3 动画时代(20世纪80年代中期至今) 27
1.6 本章总结 30
参考文献 30
第2章 技术背景 33
2.1 空间与变换 33
2.1.1 显示流水线 34
2.1.2 齐次坐标和变换矩阵 38
2.1.3 变换的合成:级联变换矩阵 38
2.1.4 基本变换 39
2.1.5 任意方位的重新表达 41
2.1.6 从矩阵中分解变换 44
2.1.7 显示流水线中的变换操作 45
2.1.8 误差估计 46
2.2 方位的表达 49
2.2.1 固定角度(Fixed-Angle)表示法 50
2.2.2 欧拉角度(Euler Angle)表示法 52
2.2.3 角度与轴(Angle and Axis)表示法 53
2.2.4 四元数(Quaternion)表示法 54
2.2.5 指数映射(Exponential Map)表示法 56
2.3 本章总结 56
参考文献 56
第3章 运动捕捉入门 57
3.1 运动捕捉与表演动画 57
3.2 表演动画在娱乐业的发展历史 57
3.2.1 转描(Rotoscope) 57
3.2.2 Brilliance 58
3.2.3 Pacific Data Images 60
3.2.4 deGraf/Wahrman 63
3.2.5 Kleiser-Walczak公司 63
3.2.6 Homer and Associates 64
3.3 动作捕捉的类型 66
3.3.1 光学动作捕捉系统 66
3.3.2 电磁追踪器 69
3.3.3 机电设备 72
3.3.4 数字电枢 73
3.3.5 其他动作捕捉系统 75
3.4 动作捕捉在各行各业中的应用 77
3.4.1 医学界 77
3.4.2 体育界 78
3.4.3 娱乐界 78
3.4.4 法律界 79
第4章 运动数据 81
4.1 运动数据类型与格式 81
4.1.1 Acclaim文件格式 82
4.1.2 .asf文件 83
4.1.3 .amc文件 85
4.1.4 .bva文件格式 87
4.1.5 .bvh文件格式 88
4.1.6 .trc文件格式 91
4.1.7 .htr文件格式 94
4.2 编写运动捕捉解析工具 102
第5章 面部特征动画 132
5.1 人脸 132
5.1.1 面部结构解析 132
5.1.2 面部表情编码系统(FACS) 132
5.2 面部模型 134
5.2.1 构建连续的表面模型 135
5.2.2 纹理 139
5.3 制作面部动画 139
5.3.1 参数化模型 139
5.3.2 融合变形 140
5.3.3 肌肉模型 140
5.3.4 表情 143
5.3.5 总结 144
5.4 口型同步动画制作 144
5.4.1 发音器 144
5.4.2 音素 145
5.4.3 协同发音 146
5.4.4 韵律学 146
5.5 本章总结 146
参考文献 146
第6章 实体空间的动画 149
6.1 动画路径 150
6.2 实体纹理(solid texture)的动画化 150
6.2.1 大理石生成 151
6.2.2 大理石运动 153
6.2.3 实体纹理透明(solid-textured transparency)的动画 154
6.3 气体体积的动画 155
6.4 三维晶格体 162
6.4.1 访问晶格体数据 163
6.4.2 功能流程形式的晶格体 163
6.4.3 功能流程函数 164
6.4.4 功能的集合 167
6.5 超纹理(hypertexture)的动画化 170
6.6 粒子系统:另一种过程动画技术 171
6.7 本章总结 174
参考文献 174
第7章 流体和气体的动画化 176
7.1 特殊的流体类型 176
7.1.1 水的模型 176
7.1.2 云的模型(作者:David Ebert) 185
7.1.3 火的模型 192
7.2 计算流体力学 194
7.2.1 建模流体的一般方法 195
7.2.2 计算流体力学方程 196
7.3 本章总结 200
参考文献 200
第8章 动画生物学 203
8.1 概述 203
8.2 动画和电影的感知 203
8.2.1 视觉的简述 203
8.2.2 运动和动画的视觉 205
8.3 动画师的工作流程 206
8.4 工作流程三段论 207
8.4.1 流程阶段1:预生产 208
8.4.2 流程阶段2:生产 213
8.4.3 流程阶段3:生产后处理 220
8.4.4 放在一起考虑 220
8.5 动画 221
8.6 Maya 221
8.6.1 过程式动画与关键帧动画 221
8.6.2 关键帧与内存 222
8.6.3 Animation菜单集 222
8.6.4 设置关键帧 223
8.6.5 自动关键帧 224
8.6.6 图示动画 224
8.6.7 删除关键帧 226
8.6.8 时间单位 226
8.6.9 回放设置 226
8.7 教程08.01:关键帧动画 227
8.7.1 准备工作 227
8.7.2 设置关键帧 228
8.7.3 播放、拖动和停止动画 229
8.7.4 编辑动画曲线 229
8.7.5 Graph Editor 230
8.7.6 Graph Editor的Graph View 230
8.7.7 Graph Editor工具栏 231
8.7.8 移动关键帧项 232
8.8 Hypergraph和Attribute Editor中的动画节点 232
8.9 教程08.02:简单的过程式动画 233
8.9.1 动画表达式概述 233
8.9.2 创建动画表达式 233
8.9.3 动画表达式节点 235
8.10 本章总结 235
参考文献 236
第9章 基于点的动画 237
9.1 导言 237
9.2 无网格的有限元 237
9.2.1 概述 237
9.2.2 连续弹力 238
9.2.3 无网格的离散化 241
9.2.4 移动最小二乘法 242
9.2.5 更新应变与应力 243
9.2.6 通过应变能量计算受力 244
9.2.7 弹性物体的动画化 245
9.2.8 塑料 247
9.2.9 被动的表面点集(surfel)对流 248
9.2.10 总结 248
9.3 碎裂材质的动画 248
9.3.1 概述 249
9.3.2 历史背景 250
9.3.3 不连续的建模 250
9.3.4 表面模型 252
9.3.5 裂缝的初始化和增殖 253
9.3.6 拓扑控制 253
9.3.7 体积采样 255
9.3.8 破碎的控制 257
9.3.9 模拟流水线 257
9.3.10 结论 258
9.4 流体模拟 258
9.4.1 概述 258
9.4.2 模拟方法 258
9.4.3 平滑粒子的流体动力学 260
9.4.4 表面表达 264
9.4.5 使用采样点进行表面跟踪 265
9.4.6 总结 268
参考文献 268
第10章 Maya内部原理解析 272
10.1 为什么要剖析Maya内部原理 272
10.2 从属图、属性、属性连接 272
10.3 范例1:使用Hypergraph浏览从属图 277
10.4 变换层次与父子关系 280
10.5 检查层次结构 281
10.6 变换节点(Transform)和形状节点(Shape) 282
10.7 范例2:了解变换节点和形状节点、实例化,以及历史节点 282
10.8 MEL和Maya用户界面 285
10.9 Maya场景的后台处理备忘录 285
第11章 MEL动画 286
11.1 动画 286
11.1.1 时间 286
11.1.2 实时回放 288
11.1.3 动画曲线 289
11.1.4 骨骼系统 305
11.1.5 运动路径(motion path) 317
第12章 MEL的刚体动力学范例 320
12.1 范例1:粒子碰撞 320
12.1.1 创建场景 320
12.1.2 与粒子碰撞 323
12.1.3 对碰撞进行控制 325
12.1.4 geoConnector中的其他控制手段 325
12.1.5 在MEL中完成场景 326
12.2 范例2:碰撞事件 327
12.2.1 概述 328
12.2.2 添加发射器和粒子 328
12.2.3 动力学关系 330
12.2.4 限制粒子数目,添加重力 331
12.2.5 添加更多的碰撞 332
12.2.6 事件 332
12.2.7 篮子的表达式 334
12.2.8 编辑设置来修复问题 336
12.2.9 速度 337
12.3 范例3:刚体动力学的物体间碰撞 337
12.3.1 编写复制和定位的脚本 339
12.3.2 组装字符串变量时的常见错误 340
12.3.3 创建碰撞盒 341
12.3.4 反转碰撞盒的法线 342
12.3.5 主动和被动的刚体 343
12.3.6 将每个网格平面都变成被动碰撞对象 346
12.3.7 打开碰撞数据选项 347
12.3.8 改变网格碰撞时的颜色 348
12.4 范例4:刚体动力学与粒子 351
12.4.1 使用MEL创建瞄准窗口 352
12.4.2 向工具栏添加新的窗口控件 353
12.4.3 将平面转换为多边形,并且分解为多片 354
12.4.4 向分片添加动力学和表达式 356
12.4.5 创建完整的MEL脚本 358
12.4.6 加载场景并运行脚本 360
12.4.7 向panelBreakup传递一个浮点数 361
第13章 MEL的角色装配范例 362
13.1 范例1:角色控制 362
13.1.1 场景载入 363
13.1.2 场景概述 363
13.1.3 mrBlah控制的概述 364
13.1.4 锁定属性 366
13.1.5 手臂控制 367
13.1.6 建立mrBlah的脊柱控制 368
13.1.7 选中足部时产生摇摆的效果 371
13.2 范例2:创建角色的用户界面 373
13.2.1 加载保存的mrBlah场景 374
13.2.2 设计用户控件 374
13.2.3 创建mrBlahControls.mel 375
13.2.4 创建滑块来控制spinCtrl的属性 378
13.2.5 为窗口空间创建布局 379
13.2.6 测试窗口 380
13.2.7 向用户显示有限的信息 381
13.2.8 给窗口创建一个脚本节点 381
13.2.9 创建工具栏图标来打开窗口 382
13.2.10 mrBlahControls.mel的完整代码 382
第14章 建立你的角色 386
14.1 设置角色的旋转数据 386
14.2 设置角色的平移数据 387
14.3 提示与技巧 396
14.3.1 改变旋转的顺序 396
14.3.2 旋转的分配 398
14.3.3 使用三次参数曲线 402
14.3.4 插值 403
14.3.5 关键帧简化 405
14.3.6 捕捉数据的重适应 406
第15章 MEL命令基础 407
15.1 不写脚本也能使用MEL吗 407
15.2 命令行和命令反馈行 407
15.3 Shell 408
15.4 脚本编辑器 408
15.5 脚本编辑器VS Shell 409
15.6 脚本编辑器的信息作为MEL代码 410
15.7 把一个MEL脚本制作成工具栏按钮 411
15.8 保存一个MEL脚本 411
15.9 状态消息区的危险诱惑 412
15.10 whatIs命令 413
15.11 MEL命令的基本结构 413
15.12 在网络上哪里可以找到关于Maya和MEL的信息 414
15.13 如何使用在网上找到的MEL脚本 414
15.14 备忘录 415