4.0 KiB
4.0 KiB
Skin API Module
强大的 Maya 蒙皮权重管理工具,支持权重的导出、导入和蒙皮解绑功能。
📁 文件结构
skin_api/
├── __init__.py # 模块初始化
├── ui.py # UI 函数(导出、导入、解绑)
├── apiVtxAttribs.py # 核心 API 类
├── Skinning.py # 蒙皮操作函数
├── Utils.py # 工具函数
└── README.md # 本文档
🚀 使用方法
从工具架启动
- 打开 Maya
- 切换到 Nexus_Rigging 工具架
- 使用对应的按钮:
- Export Weights - 导出蒙皮权重
- Import Weights - 导入蒙皮权重
- Unbind Skin - 解绑蒙皮
从 Python 调用
导出权重
from rigging_tools.skin_api import WeightExport
WeightExport()
导入权重
from rigging_tools.skin_api import WeightImport
WeightImport()
解绑蒙皮
from rigging_tools.skin_api import UnbindSkin
UnbindSkin()
使用核心 API
from rigging_tools.skin_api import ApiVtxAttribs
# 创建 API 实例
api = ApiVtxAttribs()
# 导出权重
api.exportSkinWeights(selected=True, saveJointInfo=True)
# 导入权重
api.importSkinWeights(selected=False, stripJointNamespaces=False, addNewToHierarchy=True)
✨ 主要功能
- 权重导出 - 导出选中或所有蒙皮物体的权重数据
- 权重导入 - 导入权重到选中或匹配的物体
- 蒙皮解绑 - 快速解绑选中物体的蒙皮
- 关节信息保存 - 可选保存关节方向、世界变换和父级信息
- 智能匹配 - 基于名称和顶点数量自动匹配物体
- 命名空间处理 - 支持剥离关节命名空间
🔧 版本兼容性
支持的 Maya 版本
- 所有 Maya 版本 - 从 Maya 2016 到最新版本
API 兼容性
模块采用双重 API 支持策略:
- PyMEL - 优先使用 PyMEL(如果可用)
- Maya Commands - 自动降级到
maya.cmds(如果 PyMEL 不可用) - Maya API - 使用
maya.OpenMaya和maya.OpenMayaAnim进行高性能操作
兼容性特性
- 自动 API 检测 - 运行时检测可用的 API
- 优雅降级 - PyMEL 不可用时自动使用 cmds
- 相对导入 - 支持作为包导入或独立模块使用
- 异常处理 - 完善的错误处理和用户提示
📝 文件格式
权重文件使用 .skinWeights 格式(基于 Python pickle):
- 包含顶点权重数据
- 包含影响对象(关节)信息
- 可选包含关节变换信息
- 支持多物体批量导出
💡 使用技巧
导出权重
- 选择需要导出的蒙皮物体
- 运行
WeightExport() - 选择保存位置和文件名
- 建议启用
saveJointInfo以保存完整的关节信息
导入权重
- 选中物体导入 - 选择目标物体后导入(仅导入到选中物体)
- 自动匹配导入 - 不选择物体导入(自动匹配场景中的所有物体)
- 确保物体名称和顶点数量匹配
- 如果关节缺失,可启用
addNewToHierarchy自动创建
解绑蒙皮
- 选择需要解绑的物体
- 运行
UnbindSkin() - 确认对话框后执行解绑
- 支持批量解绑多个物体
⚠️ 注意事项
- 导入权重时,目标物体的顶点数量必须与导出时一致
- 物体名称需要匹配(支持短名称匹配)
- 建议在导入前备份场景
- 大量物体操作时会显示进度条
- 权重文件使用 pickle 格式,不同 Python 版本间可能存在兼容性问题
🐛 故障排除
导入失败
- 检查物体名称是否匹配
- 检查顶点数量是否一致
- 确认权重文件路径正确
- 查看 Maya 脚本编辑器的详细错误信息
关节缺失
- 启用
addNewToHierarchy参数 - 确保导出时使用了
saveJointInfo=True - 手动创建缺失的关节
PyMEL 相关问题
- 模块会自动降级到 cmds,无需担心
- 如果需要强制使用 cmds,可以在导入前设置环境变量