Maya-Python开发扩展介绍
/ / 点击 / 阅读耗时 6 分钟介绍
Maya 包括自己的 Python 3 解释器、mayapy 和 Python 3 库
userSetup.py 脚本使 Maya 在启动时运行特定命令
(Windows -> %MAYA_APP_DIR%/<版本>/scripts)
Maya Python 开发库
maya.cmds:适用于 MEL 命令的 Python 包裹器,可用于代替 MEL。有关详细信息,请参见使用 Python 和 Python 命令参考。
pymel:PyMEL 是 MEL 命令的第三方包裹器,不受 Autodesk 支持。PyMEL 可以作为 Maya 组件安装,也可以使用 pip 进行安装。
maya.OpenMaya:称为 Python API 1.0。它用于开发 Maya 插件和应用程序。有关 Python API 1.0 的详细信息,请参见 Maya 开发人员帮助中的 Maya Python API 1.0。
maya.api.OpenMaya:称为 Python API 2.0。它还用于开发 Maya 插件和应用程序。与 Python API 1.0 相比,它更加符合 Python,但不太全面。有关详细信息,请参见 Maya 开发人员帮助中的 Maya Python API 2.0 和 Maya Python API 2.0 参考。
外部 Python 库与 Maya Python 结合使用
如果要在 Python 脚本中使用 Maya 外部的库,则必须在启动 Maya 之前将这些库添加到 PYTHONPATH 环境变量,或者通过从 Python 解释器中调用 sys.path.append() 将它们添加到系统路径。
Maya.env 文件中将这些库添加到 PYTHONPATH 环境变量,也可以在启动 Maya 之前在环境中设置该变量。
Maya.env 文件位于 C:\Users<用户名>\Documents\maya<版本号>\(对于 Windows)、$HOME/maya/<版本号>/(对于 Linux)和 $HOME/Library/Preferences/Autodesk/maya/<版本号>/(对于 macOS)。
1 | import sys |
Python 中初始化和未初始化
在 mayapy 或其他外部 Python 解释器中使用 Maya Python 之前,您需要在解释器中加载和初始化 Maya 库。
使用 import maya.standalone 在解释器中加载库,然后使用 initialize() 初始化它们:
1 | import maya.standalone |
如果您是从 Maya 脚本编辑器中运行脚本,则无需调用 initialize()。这是因为 Maya 库会在脚本编辑器中自动加载和初始化。从脚本编辑器中调用 initialize() 会生成错误。如果您正在写入的脚本可能是从 Maya 脚本编辑器或外部解释器中调用的,则需要将对 initialize() 的调用包含在 try 块中。
1 | try: |
这将安全地捕获从脚本编辑器中调用 initialize() 时生成的错误。
您的脚本应该在退出之前调用 maya.standalone.uninitialize()。这将完全终止脚本与 Maya 的连接。对 uninitialize() 的调用也将在脚本编辑器中失败。它也应包含在 try 块中。
1 | try: |
MayaPy 和 Python 包管理
可使用 Maya Python 解释器 mayapy 从命令行调用 pip。无法在 Maya Python 脚本编辑器中调用它。
Windows C:\Program Files\Autodesk\Maya<版本号>\bin
pip 会将软件包安装到 Maya 的站点软件包目录。您需要管理员权限(在 Windows 上)或超级用户权限(在 macOS 和 Linux 上),才能在这些目录中安装软件包
1 | mayapy -m pip install <标志> <软件包> |
安装导入PyMel
PyMEL 是开源 Python 库,它通过提供用于常见操作的简化语法来帮助开发 Maya 扩展
1 | mayapy -m pip install pymel |