夜雨聆风学习资料网

ARTICLE · 1216813

Maya 2027 插件迁移:Py3.13 + Qt6 + .NET 10 三个 breaking change 一次拆完

Maya 2027 插件迁移:Py3.13 + Qt6 + .NET 10 三个 breaking change 一次拆完

Maya 2027 这版 devkit 动得不小,我把团队要跟着升的工具链捋了一遍。Python 直接跳到 3.13.3、Qt 上 6、.NET SDK 进 10,再加上 libxml2 头文件挪了位置,老插件基本没有"零改动"能跑的。下面按迁移优先级把要动的点列清楚,省得你挨个翻 release note。

先把必须重编、重写的三个运行时坑排掉,再看渲染侧和动捕侧的新东西值不值得跟。

Python 3.13:OpenMaya 命名空间切到 cpython-313

效果:所有带 .pyc 缓存和编译扩展的老插件在 2027 上会直接 import 失败,纯 .py 脚本虽然能跑,但 OpenMaya API 2.0 的 ABI 已经绑到新解释器。

怎么用:

  • 删掉仓库里所有预编译 .pyc 和 __pycache__,让 Maya 自带的 3.13.3 解释器重新生成字节码。
  • 用新版 devkit 重新编译 .pyd/.so,OpenMayaPythonAPI 的命名空间路径已经变成 cpython-313,旧 wheel 别再往插件目录塞。
  • 跑一轮 import 冒烟,凡是 import 失败的扩展模块,按新 devkit 的 include/lib 路径重新链接。

Qt6:PySide2 整体切到 PySide6

效果:老的 PySide2 插件 UI 在 2027 里起不来,shiboken2 绑定和 Qt5 时代的信号槽写法都过不了。

怎么用:

  • 全局把 from PySide2 改成 from PySide6,QRegExp、QFontMetrics.elidedText 这类被删或挪窝的 API 逐个替换。
  • 注意 Qt6 里 QAction 从 QtWidgets 挪到了 QtGui,菜单和工具栏按钮的 import 要跟着改。
  • 用 mayapy 起一个最小 UI 冒烟,确认 maya.OpenMayaUI 取主窗口、把自定义 widget 嵌进 Maya 窗口这条链路没破。

.NET 10 与 C++ 插件的 libxml2 路径

效果:MCG 和 .NET 工具节点必须在 .NET 10 SDK 下重编,C++ 插件则因为 libxml2 header 目录搬家而 link 不过。

怎么用:

  • .NET 插件和 MCG 工程把 target framework 切到 .NET 10,按新版 devkit 重新 build,别再钉在老 SDK 上。
  • C++ 插件把 libxml2 的 include 路径指到 2027 devkit 里新的头文件目录,旧的硬编码相对路径全部清掉。
  • 构建机顺手对齐:Windows 要 VS2022 17.14.13,macOS 要 Xcode 16.2,Linux 这边是 RHEL 8.10 加 gcc 14.2.1。

MtoA 5.6 与 MotionMaker

效果:MtoA 这版给大场景开了轻量 USD instancing,配合新的头发散射模式和更灵活的灯光采样,视口和渲染两头都能省;Maya Creative 2027.2 的 MotionMaker 则支持拿自己的数据训一个 ML 动作模型直接指派给角色。

怎么用:

  • 大场景里把 USD 引用走 lightweight instancing 路径,instance 量大的关卡先拿这招压视口开销。
  • 头发材质在 Arnold 里切到新 scattering 模式,布光采样参数按新 UI 重调一遍。
  • MotionMaker 里喂一段角色动捕或手工 clip 训出自有模型,再在 Editor 里指派给对应 rig,路径贴合靠新加的 Path Locator 属性微调。

每周更新游戏技术美术前沿干货,点个关注不迷路。

觉得有用,也点个「在看」,让更多同路人看到。

相关学习资料