Maya Python 游戏与影视编程指南

Maya Python 游戏与影视编程指南
书籍作者:
[美] Adam Mechtley
书籍出版:
人民邮电出版社
书籍页数:
332
书籍ISBN:
9787115406699
书籍人气:
1868
推荐指数:
★★★★

Maya Python 游戏与影视编程指南
编辑推荐 假设你正在Maya中为一个角色创建动画。在为此角色创建动画的过程中,你会发现自己在重复以下几个步骤。
1. 引用一个角色。
2. 导入一个动作捕捉动画。
3. 设置帧范围。
4. 引用背景场景。
5. 配置摄像机。
如果参与一个包含10到50名动画师的大型制作项目,这些简单的步骤可能会带来一些问题。如果分解此过程,可以发现许多适合引入工具的地方。
首先,动画师需要查找角色的正确路径。可以在任意给定时间更改此路径,所以让动画师任意选择此文件可能导致挑选了错误的文件。包含角色列表的简单工具可帮助快速、可靠地完成此任务。
接下来,你需要一个工具来对将运动捕捉数据正确地导入角色控件的过程进行组织和管理。在此过程中,此工具也可设置动画的帧范围并将摄像机移动到正确的位置。
引用正确的背景场景,动画师每次手动搜索正确的文件时,可能都要花一分钟。可创建另一个简单工具,显示可供选择的所有背景的列表。
你会看到这些工具能够节省时间,让文件选择更准确,而且让动画师能专心完成其创造性工作。创建这些工具的方式是使用Maya的一种内置脚本语言——具体来讲就是Python。
Python是一种在Maya外部开发的脚本语言,所以它拥有强大的功能集合和庞大的用户群。在Maya 8.5 中,Autodesk添加了对Python脚本语言的正式支持。此语言已合并到Maya现有的编程界面中(MEL脚本语言和C++ API)。Maya嵌入式语言(MEL)已存在多年,所以你可能想知道为什么Python至关重要。通过更宽广的视角可很快发现许多重要优势。
社区:与Python相比,MEL拥有非常小的用户群,因为只有Maya开发人员使用MEL。而所有软件开发人员和许多类型的应用程序都可以使用Python。
强大功能:Python是一种更高级的脚本语言,它可完成在MEL 中无法完成的工作。Python是完全面向对象的,而且它能够轻松地与Maya命令引擎和C++ API通信,支持使用同一种语言编写脚本和插件。即使使用C++编写插件,Python也支持在Maya脚本编辑器中交互式地测试API代码!
跨平台:Python可在任何操作系统上执行,这消除了针对不同操作系统、处理器架构或软件版本而重新编译工具的需求。事实上完全不需要编译!
行业标准:由于Python的优势,它正被迅速集成到对娱乐行业专业人员至关重要的许多其他应用程序中。可以在Maya和你的渠道(如MotionBuilder)中的其他应用程序之间轻松共享库。内容简介本书涵盖了与Maya相关的Python的主要方面的内容,解答了有关Maya的多个Python实施问题,包括强大的PyMEL和漂亮的PyQt用户界面。本书内容包括基础知识和更高级的主题,分为3部分,共12章。第1部分为Python和Maya的基础知识,第2部分是使用Python设计Maya工具,第3部分介绍了Maya Python API基础知识。其中,面向对象编程和过程式编程、环境设置和PyQt GUI等一般性主题也有所涉及,但着眼点是在Maya中的集成。掌握了本书的内容,读者可为以后的学习奠定坚实的基础。
本书适用于运用Maya Python或Maya API编程的专业人员,以及影视特效脚本编写的专业人员。 作者简介Adam Mechtley进入游戏行业后,负责当时的游戏(Xbox 360/SP3)的角色技术。他参与了大量获奖游戏制作,并且参与过Autodesk的项目等。Ryan Trowbridge是Naughty Dog Inc.的一名角色技术总监,他于2000年加入Pipeworks Software,先是担任纹理和环境美工,然后担任角色和动画美工,他从事角色流程、工具和动画方面的工作。 目录致谢 xi
引言:欢迎使用Maya Python xii

第 1 部分 Python和Maya的基础知识 1

第 1 章 Maya 命令引擎和用户界面 2
1.1 与Maya 进行交互 3
Maya 嵌入式语言 3
Python 3
C++ 应用程序编程界面 3
Python API 4
1.2 在Maya 中执行Python 4
命令行 4
脚本编辑器 5
Maya 工具架 7
1.3 Maya 命令和依存关系图 8
1.4 Python 命令简介 10
1.5 标志参数和Python 核心对象类型 14
数字 15
字符串 15
列表 15
元组 15
布尔型 15
标志=对象类型 15
1.6 命令模式和命令参数 16
创建模式 16
编辑模式 17
查询模式 17
1.7 Python命令参考 17
总览 18
返回值 18
相关 18
标志 19
Python 示例 19
1.8 Python 版本 19
1.9 Python 在线文档 20
1.10 小结 20

第 2 章 Python 数据基础知识 21
2.1 变量和数据 22
MEL 中的变量 23
关键字 24
Python 的数据模型 24
2.2 结合使用变量和Maya 命令 27
捕获结果 28
getAttr 和setAttr 28
connectAttr 和disconnectAttr 29
2.3 使用数字 30
数字类型 30
基本运算符 31
2.4 使用布尔值 32
布尔运算符和位运算符 32
2.5 使用序列类型 33
运算符 33
字符串类型 36
格式化字符串 37
有关列表的更多内容 39
2.6 其他容器类型 41
集合 41
字典 42
2.7 小结 45

第 3 章 在Maya 中编写Python 程序 46
3.1 创建Python 函数 47
函数定义剖析 47
函数参数 48
返回值 53
3.2 Maya 命令 54
列出和选择节点 55
file 命令 56
添加属性 57
3.3 迭代和分支 58
for语句 59
分支 62
列表解析 70
while 语句 71
3.4 捕获错误 73
try、except、raise 和finally 73
3.5 设计实用的工具 76
3.6 小结 86

第 4 章 模块 87
4.1 什么是模块 88
4.2 模块与范围 88
模块封装和属性 89
_main_模块 90
4.3 创建模块 91
spike模块 92
默认属性和help() 93
包 95
4.4 导入模块 97
import 与reload() 的比较分析 97
as 关键字 98
from关键字 98
4.5 Python 路径 99
sys.path 99
临时添加路径 100
userSetup 脚本 101
sitecustomize 模块 103
设置PYTHONPATH 环境变量 105
4.6 使用Python IDE 109
下载IDE 109
基本IDE 配置 110
4.7 小结 112

第 5 章 Maya 中的面向对象编程 113
5.1 面向对象编程与过程式编程 114
在Python 中实现类的基础知识 115
实例化 115
5.2 属性 116
数据属性 117
方法 119
类属性 123
Human 类 125
5.3 继承 127
5.4 Maya 中的过程式编程与面向对象编程… 130
安装PyMEL 130
PyMEL 介绍 130
PyNodes 131
PyMEL 特性 131
优点和缺点 133
PyMEL 示例 133
5.5 小结 135

第 2 部分 使用Python 设计Maya 工具 137

第 6 章 Maya 工具设计原则 138
6.1 为用户设计的技巧 139
沟通和观察 139
准备、设置、规划 139
简化和培训 140
6.2 Maya 中的工具 141
选择 141
标记菜单 143
选项窗口 145
6.3 小结 146

第 7 章 使用Maya 命令创建基本工具 147
7.1 Maya 命令与Maya GUI 147
7.2 基本GUI 命令 149
窗口 149
7.3 构建窗口基类 150
菜单和菜单项 151
对GUI 对象执行命令 154
布局和控件 159
完整的AR_OptionsWindow 类 166
7.4 扩展GUI 类 169
单选按钮组 170
框架布局和浮动字段组 171
颜色选取器 173
7.5 创建更高级的工具 174
姿势管理器窗口 175
将窗体与功能分开 176
使用cPickle 模块序列化数据 176
使用文件对话框 178
7.6 小结 181

第 8 章 使用Qt 设计高级图形用户界面 182
8.1 Qt 与Maya 182
固定窗口 183
8.2 安装Qt 工具 185
Qt SDK 186
8.3 Qt Designer 187
小组件 188
信号和插槽 188
Qt Designer 实践 189
8.4 将Qt GUI 加载到Maya 中 192
loadUI 命令 194
访问控件上的值 195
使用信号和插槽来映射小组件 196
8.5 PyQt 198
安装PyQt 198
在Maya 2011 及更高版本中使用PyQt 199
在更低的Maya 版本中使用PyQt 200
8.6 小结 201

第 3 部分 Maya Python API 基础知识 203

第 9 章 理解C++ 和API 文档 204
9.1 面向对象编程的高级主题 205
继承 206
虚拟函数和多态性 206
9.2 Maya API 的结构 207
Maya 的核心对象类MObject 简介 207
9.3 Python 与Maya API 通信的方式 209
9.4 如何查阅API文档 210
9.5 Python与C++ API 之间的重要区别 218
MString 和MStringArray 218
MStatus 218
Void* 指针 218
代理类和对象所有权 218
带参数的命令 218
撤销 219
MScriptUtil 219
9.6 小结 219

第 10 章 设计命令 220
10.1 加载脚本化插件 221
10.2 脚本化命令剖析 222
OpenMayaMPx 模块 223
命令类定义 223
doIt() 223
命令创建器 224
初始化和取消初始化 224
10.3 添加自定义语法 225
映射旋转顺序 228
类定义 229
语法创建器 230
语法的初始化 232
doIt() 233
doItQuery() 235
10.4 Maya 的撤销/ 重做机制 238
10.5 支持多种命令模式和撤销/ 重做 241
撤销和重做 241
命令模式 242
语法创建器 244
_init_() 方法 245
doIt() 246
redoIt() 250
undoIt() 251
10.6 小结 252

第 11 章 Maya 中的数据流 253
11.1 依存关系图 253
依存关系节点 254
连接 257
调试依存关系图 259
dgTimer 命令 261
11.2 有向无环图 262
DAG 路径和实例化 265
对拓节点 267
11.3 小结 270

第 12 章 设计依存关系节点 271
12.1 脚本化节点剖析 271
ar_averageDoubles 节点 272
节点类定义 273
节点创建器 274
节点初始化 274
compute() 275
初始化和取消初始化 277
12.2 属性和plug 278
属性的特性 279
可读、可写和可连接 279
可存储的属性和默认值 280
缓存的属性 280
使用数组 280
复合属性 286
12.3 小结 290

致谢 xi
引言:欢迎使用Maya Python xii

第 1 部分 Python和Maya的基础知识 1

第 1 章 Maya 命令引擎和用户界面 2
1.1 与Maya 进行交互 3
Maya 嵌入式语言 3
Python 3
C++ 应用程序编程界面 3
Python API 4
1.2 在Maya 中执行Python 4
命令行 4
脚本编辑器 5
Maya 工具架 7
1.3 Maya 命令和依存关系图 8
1.4 Python 命令简介 10
1.5 标志参数和Python 核心对象类型 14
数字 15
字符串 15
列表 15
元组 15
布尔型 15
标志=对象类型 15
1.6 命令模式和命令参数 16
创建模式 16
编辑模式 17
查询模式 17
1.7 Python命令参考 17
总览 18
返回值 18
相关 18
标志 19
Python 示例 19
1.8 Python 版本 19
1.9 Python 在线文档 20
1.10 小结 20

第 2 章 Python 数据基础知识 21
2.1 变量和数据 22
MEL 中的变量 23
关键字 24
Python 的数据模型 24
2.2 结合使用变量和Maya 命令 27
捕获结果 28
getAttr 和setAttr 28
connectAttr 和disconnectAttr 29
2.3 使用数字 30
数字类型 30
基本运算符 31
2.4 使用布尔值 32
布尔运算符和位运算符 32
2.5 使用序列类型 33
运算符 33
字符串类型 36
格式化字符串 37
有关列表的更多内容 39
2.6 其他容器类型 41
集合 41
字典 42
2.7 小结 45

第 3 章 在Maya 中编写Python 程序 46
3.1 创建Python 函数 47
函数定义剖析 47
函数参数 48
返回值 53
3.2 Maya 命令 54
列出和选择节点 55
file 命令 56
添加属性 57
3.3 迭代和分支 58
for语句 59
分支 62
列表解析 70
while 语句 71
3.4 捕获错误 73
try、except、raise 和finally 73
3.5 设计实用的工具 76
3.6 小结 86

第 4 章 模块 87
4.1 什么是模块 88
4.2 模块与范围 88
模块封装和属性 89
_main_模块 90
4.3 创建模块 91
spike模块 92
默认属性和help() 93
包 95
4.4 导入模块 97
import 与reload() 的比较分析 97
as 关键字 98
from关键字 98
4.5 Python 路径 99
sys.path 99
临时添加路径 100
userSetup 脚本 101
sitecustomize 模块 103
设置PYTHONPATH 环境变量 105
4.6 使用Python IDE 109
下载IDE 109
基本IDE 配置 110
4.7 小结 112

第 5 章 Maya 中的面向对象编程 113
5.1 面向对象编程与过程式编程 114
在Python 中实现类的基础知识 115
实例化 115
5.2 属性 116
数据属性 117
方法 119
类属性 123
Human 类 125
5.3 继承 127
5.4 Maya 中的过程式编程与面向对象编程… 130
安装PyMEL 130
PyMEL 介绍 130
PyNodes 131
PyMEL 特性 131
优点和缺点 133
PyMEL 示例 133
5.5 小结 135

第 2 部分 使用Python 设计Maya 工具 137

第 6 章 Maya 工具设计原则 138
6.1 为用户设计的技巧 139
沟通和观察 139
准备、设置、规划 139
简化和培训 140
6.2 Maya 中的工具 141
选择 141
标记菜单 143
选项窗口 145
6.3 小结 146

第 7 章 使用Maya 命令创建基本工具 147
7.1 Maya 命令与Maya GUI 147
7.2 基本GUI 命令 149
窗口 149
7.3 构建窗口基类 150
菜单和菜单项 151
对GUI 对象执行命令 154
布局和控件 159
完整的AR_OptionsWindow 类 166
7.4 扩展GUI 类 169
单选按钮组 170
框架布局和浮动字段组 171
颜色选取器 173
7.5 创建更高级的工具 174
姿势管理器窗口 175
将窗体与功能分开 176
使用cPickle 模块序列化数据 176
使用文件对话框 178
7.6 小结 181

第 8 章 使用Qt 设计高级图形用户界面 182
8.1 Qt 与Maya 182
固定窗口 183
8.2 安装Qt 工具 185
Qt SDK 186
8.3 Qt Designer 187
小组件 188
信号和插槽 188
Qt Designer 实践 189
8.4 将Qt GUI 加载到Maya 中 192
loadUI 命令 194
访问控件上的值 195
使用信号和插槽来映射小组件 196
8.5 PyQt 198
安装PyQt 198
在Maya 2011 及更高版本中使用PyQt 199
在更低的Maya 版本中使用PyQt 200
8.6 小结 201

第 3 部分 Maya Python API 基础知识 203

第 9 章 理解C++ 和API 文档 204
9.1 面向对象编程的高级主题 205
继承 206
虚拟函数和多态性 206
9.2 Maya API 的结构 207
Maya 的核心对象类MObject 简介 207
9.3 Python 与Maya API 通信的方式 209
9.4 如何查阅API文档 210
9.5 Python与C++ API 之间的重要区别 218
MString 和MStringArray 218
MStatus 218
Void* 指针 218
代理类和对象所有权 218
带参数的命令 218
撤销 219
MScriptUtil 219
9.6 小结 219

第 10 章 设计命令 220
10.1 加载脚本化插件 221
10.2 脚本化命令剖析 222
OpenMayaMPx 模块 223
命令类定义 223
doIt() 223
命令创建器 224
初始化和取消初始化 224
10.3 添加自定义语法 225
映射旋转顺序 228
类定义 229
语法创建器 230
语法的初始化 232
doIt() 233
doItQuery() 235
10.4 Maya 的撤销/ 重做机制 238
10.5 支持多种命令模式和撤销/ 重做 241
撤销和重做 241
命令模式 242
语法创建器 244
_init_() 方法 245
doIt() 246
redoIt() 250
undoIt() 251
10.6 小结 252

第 11 章 Maya 中的数据流 253
11.1 依存关系图 253
依存关系节点 254
连接 257
调试依存关系图 259
dgTimer 命令 261
11.2 有向无环图 262
DAG 路径和实例化 265
对拓节点 267
11.3 小结 270

第 12 章 设计依存关系节点 271
12.1 脚本化节点剖析 271
ar_averageDoubles 节点 272
节点类定义 273
节点创建器 274
节点初始化 274
compute() 275
初始化和取消初始化 277
12.2 属性和plug 278
属性的特性 279
可读、可写和可连接 279
可存储的属性和默认值 280
缓存的属性 280
使用数组 280
复合属性 286
12.3 小结 290
  • 下载地址

数据库书籍

网络通讯书籍

系统管理书籍