Always respond in 中文, 先阅读知识库,并按照 Readme.md 来查看文件路径以及参考品文档和参考代码来协助用户完成项目 # MetaFusion 开发文档 ## 一 本地知识库导航 ### 1 文档 Reference\docs\Metahuman解析.pdf Reference\docs\SuperRiggingEditor使用文档.pdf Reference\DNA_Calibration\docs\dna_api.md Reference\DNA_Calibration\docs\dna_viewer_api_build_meshes.md Reference\DNA_Calibration\docs\dna_viewer_api_build_rig.md Reference\DNA_Calibration\docs\dna_viewer_API.md Reference\DNA_Calibration\docs\dna_viewer_maya.md Reference\DNA_Calibration\docs\dna_viewer.md Reference\DNA_Calibration\docs\dna.md Reference\DNA_Calibration\docs\dnacalib_api.md Reference\DNA_Calibration\docs\dnacalib.md Reference\DNA_Calibration\docs\faq.md Reference\DNA_Calibration\docs\repository_organization.md DNA_Calibration在线文档: https://epicgames.github.io/MetaHuman-DNA-Calibration ### 2 代码参考 Reference\DNA_Calibration Reference\MSLiveLink Reference\SuperRiggingEditor Reference\Utils ### 3 UI参考图片 Reference\UI ## 二 项目描述 ### 1 目标 做一个Maya的Metahuman自定义的插件,语言:基于Python,Maya版本:2022, 2023, 2024, 2025 ### 项目描述 - 本项目是一个Maya插件,主要功能是提供与MetaHuman相同拓扑的模型或者自定义的3d模型以来完成自定义绑定,编辑DNA,校准骨骼位置,保存DNA,载入DNA,导出fbx,保存DNA文件, 编辑BlendShape,等功能。 ### 2 主要功能 - 提供与MetaHuman相同拓扑的模型或者自定义的3d模型以来完成自定义绑定,编辑DNA,校准骨骼位置,保存DNA,载入DNA,导出fbx,保存DNA文件, 编辑BlendShape,等功能。 ### 3 注意Reference路径不参与参见功能实现,只作为参考。Reference只作为参考,可以从中拷贝必要的文件到当前项目中 ### 4 代码规范 - 所有代码必须使用UTF-8编码 - 所有模块开头必须添加 : ```. #!/usr/bin/env python # -*- coding: utf-8 -*- ``` - 代码必须考虑兼容 Maya2022, Maya2023, Maya2024, Maya2025 - 代码必须考虑兼容 Python3.10, Python3.11, Python3.12 - 所有模型引用关系自动更新修正 - UI样式必须统一的一个样式文件来实现 - 所有UI必须使用Qt来实现 - 所有Pyside代码必须使用 widget, layout, connection 的结构来实现 - 文件夹结构尽量以目前的代码结构来触发实现,各个模块各功能给要条理清晰 - 使用config.py文件来统一实现配置文件 - 使用style.qss文件来实现UI样式 - 功能函数放在utils文件夹中 ### 5 文件基本结构 (参考), 以"\"结尾的行为文件夹 - 参考[MetaFusion 文件基本结构](#metafusion-文件基本结构) #### MetaFusion 文件基本结构 ```. ├── assets\ │ ├── dna\ DNA文件路径 │ ├── img\ DNA图标路径 │ ├── maya\ Maya资源文件路径 │ ├── MH.2\ MetaHuman 2.0文件路径 │ ├── MH.4\ MetaHuman 4.0文件路径 ├── icons\ 插件图标路径 ├── plugins\ │ └── Linux\ │ │ ├── 2022\ │ │ ├── 2023\ │ │ ├── 2024\ │ │ ├── 2025\ │ │ ├── pydna\ │ │ │ ├── python3\ │ │ │ ├── python311\ │ │ │ ├── python397\ │ │ │ ├── python3108\ │ └── Windows\ │ │ ├── 2022\ │ │ ├── 2023\ │ │ ├── 2024\ │ │ ├── 2025\ │ │ ├── pydna\ │ │ │ ├── python3\ │ │ │ ├── python311\ │ │ │ ├── python397\ │ │ │ ├── python3108\ ├── Reference\ 参考模块(不引用,仅供参考) │ ├── DNA_Calibration 参考模块:DNA_Calibration │ ├── MSLiveLink 参考模块:MSLiveLink │ ├── SuperRiggingEditor 参考模块:SuperRiggingEditor ├── scripts\ │ ├── builder\ │ │ ├── maya\ │ │ │ ├── __init__.py │ │ │ ├── mesh.py │ │ │ ├── skin_weights.py │ │ │ ├── util.py │ │ ├── __init__.py │ │ ├── builder.py │ │ ├── config.py │ │ ├── joint.py │ │ ├── mesh.py │ │ ├── rig_builder.py │ ├── dnacalib\ │ │ ├── CMakeModulesExtra\ │ │ ├── DNACalib\ │ │ ├── PyDNA\ │ │ ├── PyDNACalib\ │ │ ├── SPyUS\ │ │ ├── CMakeLists.txt │ ├── dnalib\ │ │ ├── __init__.py │ │ ├── behavior.py │ │ ├── definition.py │ │ ├── descriptor.py │ │ ├── dnalib.py │ │ ├── geometry.py │ │ ├── layer.py │ ├── ui\ │ │ ├── __init__.py │ │ ├── style.qss UI样式文件 │ │ ├── menu.py UI菜单UI文件 │ │ ├── toolshelf.py UI工具架UI文件 │ │ ├── meshes.py UI模型UI文件 │ │ ├── rigging.py UI绑定UI文件 │ │ ├── behaviour.py UI行为UI文件 │ │ ├── definition.py UI定义UI文件 │ ├── utils\ 功能模块路径 │ │ ├── __init__.py │ │ ├── ... │ ├── MetaFusion.py 插件主文件 │ ├── config.py 配置文件 ├── Install.mel 拖入maya安装文件 ├── Install.py 安装执行文件 ├── CleanPycache.bat 清除pycache文件(不修改) ├── README.md 开发文档 ``` ### 6 UI界面风格 - 扁平化设计风格, - 要有高级感和科幻未来感 - 圆角设计 - 中文要清晰大气 - 英文要简洁明了 - 颜色要统一 - 字体要统一 - 字体大小要统一 - 按钮要统一 - 输入框要统一 - 标签要统一 ### 7 UI界面 UI参考图片: Reference\UI\01_Menu_File.jpg Reference\UI\02_Menu_Edit.jpg Reference\UI\03_Menu_Tools.jpg Reference\UI\04_Language.jpg Reference\UI\05_Menu_Help.jpg Reference\UI\06_Tool_Shelf.jpg Reference\UI\07_Meshes_LOD0.jpg Reference\UI\08_Meshes_LOD1.jpg Reference\UI\09_Meshes_LOD2.jpg Reference\UI\10_Meshes_LOD3.jpg Reference\UI\11_Meshes_LOD4.jpg Reference\UI\12_Meshes_LOD5.jpg Reference\UI\13_Meshes_LOD6.jpg Reference\UI\14_Meshes_LOD7.jpg Reference\UI\15_Rigging.jpg Reference\UI\16_Behaviour.jpg Reference\UI\17_Definitions.jpg #### MetaFusion UI 结构 ##### 一、菜单栏 ###### 1. 文件菜单 (File) - 打开 DNA | icons\open.png - 保存 DNA | icons\save.png - 加载当前项目 DNA | icons\open.png - 修改混合目标名称 | icons\rename.png - 重置混合目标名称 | icons\resetname.png - 导出 FBX | icons\export.png - 退出 | icons\exit.png ###### 2. 编辑菜单 (Edit) - 创建 RL4 节点 | icons\connect.png - 删除 RL4 节点 | icons\disconnect.png - 镜像左至右 | icons\mirrorL.png - 镜像右至左 | icons\mirrorR.png - 姿势由 A 型转 T 型 | icons\pose_A_To_T.png - 姿势由 T 型转 A 型 | icons\pose_T_To_A.png - 传输 LOD 贴图 | icons\locator.png - 设置关节颜色 | icons\color.png - 取消全部标记 | icons\unmark_all.png - 重建所有目标 | icons\rebuildTargets.png - 为所有表情设置关键帧 | icons\bakeAnimation.png - 烘焙所有表情的关键帧 | icons\centerCurrentTime.png ###### 3. 工具菜单 (Tools) - 导出蒙皮 | icons\export_skin.png - 导入蒙皮 | icons\import_skin.png - 拷贝装皮 | icons\copy_skin.png - RBF变形器 | icons\blendShape.png - 快速绑定服装 | icons\clothing_weight.png - 克隆混合变形 | icons\blendShape.png - UV传递点序 | icons\repair_vertex_order.png - 面部生成控制器 | icons\controller.png - 提取52BS | icons\ARKit52.png - 关节轴向修复 | icons\joint.png - 生成身体控制器 | icons\create_body_ctrl.png - 导入面部动画 | icons\import_face_anim.png - 导入身体动画 | icons\import_body_anim.png ###### 4. 语言菜单 (Language) - 中文 | icons\chinese.png - English | icons\english.png ###### 5. 帮助菜单 (Help) - 检查更新 | icons\update.png - 帮助文档 | icons\help.png - 关于 | icons\about.png ##### 二、工具架 横向排列 - 保存 DNA | icons\save.png - 加载当前项目 DNA | icons\open.png - 分隔符 separator - 创建RL4节点 | icons\connect.png - 删除RL4节点 | icons\disconnect.png - 分隔符 separator - 导出 蒙皮 | icons\export_skin.png - 导入 蒙皮 | icons\import_skin.png - 复制 蒙皮 | icons\copy_skin.png - 分隔符 separator - 帮助文档 | icons\help.png - 关于 | icons\about.png ##### 三、主界面功能区 ###### 1. 模型视图 (Meshes) ####### LOD选项卡 (LOD0-LOD7) 每个LOD包含以下模型项: - LOD0: ["*头部", "*牙齿", "*牙龈", "*左眼", "*右眼", "*虹膜", "*睫毛", "*眼睑", "*软骨", "*身体"] - LOD1: ["头部", "牙齿", "牙龈", "左眼", "右眼", "虹膜", "睫毛", "眼睑", "软骨", "身体"] - LOD2: ["头部", "牙齿", "牙龈", "左眼", "右眼", "虹膜", "睫毛", "眼睑", "身体"] - LOD3: ["头部", "牙齿", "左眼", "右眼", "虹膜", "睫毛", "眼睑", "身体"] - LOD4: ["头部", "牙齿", "左眼", "右眼", "虹膜"] - LOD5: ["头部", "牙齿", "左眼", "右眼"] - LOD6: ["头部", "牙齿", "左眼", "右眼"] - LOD7: ["头部", "牙齿", "左眼", "右眼"] ####### 功能按钮 (是在LOD0-LOD7中的底部) 自动加载模型(icons\load_meshes.png);标准化命名(icons\standardize_name.png);自动分组(icons\auto_group.png); ####### 工具栏功能 第一行:拓扑结构(下拉框,默认:MetaHuman);选择LOD(下拉框,默认:LOD0,LOD1~LOD7);创建LOD(icons\create_lod.png); 第二行:模型分离(icons\separate.png);生成面部配件(icons\face_accessory.png); 第三行:修复法线(icons\fix_normal.png);修复点序(icons\fix_vertex_order.png); 第四行:修复接缝(icons\fix_seam.png); ###### 2. 绑定视图 (Rigging) ####### 预设 - DNA浏览器 - 图标缩放滑条; - 导入/导出设置按钮 ####### 资产 - 项目路径: 输入框; 加载按钮 - 预设文件: 输入框; 加载按钮 - 数据分层: 下拉框(默认:行为(包括基础定义)); - 勾选框(勾选):覆盖表情 ####### 描述 - 名称:输入框(默认:Archetype); - 变换单位:下拉框(默认:厘米) - 原型:下拉框(默认:亚洲人); - 旋转单位:下拉框(默认:角度) - 性别:下拉框(默认:女性); - 向上轴标:下拉框(默认:Z轴向上) - 年龄:数值调节(默认:24); - LOD计数:数值调节(默认:8) ####### 功能按钮 - 清空选项(icons\delete.png); - 导入骨架(icons\HIKCharacterToolSkeleton.png); - 创建骨架(icons\HIKcreateControlRig.png); ###### 3. 行为视图 (Behaviour) ####### Raw Control [000/000] (在行为视图的左侧) - 搜索过滤 - BlendShape列表 - 恢复表情按钮;- 混合筛选按钮 - 全部按钮,2按钮,3按钮,4按钮,5按钮,6按钮 - 范围控制(0.010),滑块,勾选框(未勾选), 文字"全部" - 范围+按钮,范围-按钮 ####### Related Blend Shapes [000/000] (在行为视图的右侧) - 关联BlendShape列表 - 范围控制(0.000),滑块,勾选框(未勾选), 文字"全部" - 翻转目标 - 镜像目标 - 查找翻转目标 - 添加混合目标 - 删除混合目标 - 批量混合目标 - 重建混合目标 - 重建所有混合目标 - 范围控制(0.010),滑块,勾选框(未勾选), 文字"全部" - 范围+按钮,范围-按钮 ####### 功能按钮 - 第一行 :PSD - BSE - KEY - MIR - ARK - CTR - 第二行 :范围控制(0.000),滑块,"+"按钮, 勾选框(未勾选), 文字"全部" - 第三行 按钮:还原默认表情;查找选择表情;写入当前表情 - 第四行 按钮:控制面板查找;选择关联关节;写入镜像表情 ###### 4. 定义视图 (Definition) ####### LODs列表 - LOD 0-7 - Define Joint For LOD ####### Meshes [010/54] - head_lod0_mesh (000) - teeth_lod0_mesh (001) - saliva_lod0_mesh (002) - eyeLeft_lod0_mesh (003) - eyeRight_lod0_mesh (004) - eyeshell_lod0_mesh (005) - eyelashes_lod0_mesh (006) - eyeEdge_lod0_mesh (007) - Create Geometry 按钮 ####### Joints [840/870] - FACIAL_C_NeckB Group: 001 - FACIAL_L_NeckB1 Group: 002 - FACIAL_R_NeckB1 Group: 003 - FACIAL_L_NeckB2 Group: 002 - FACIAL_R_NeckB2 Group: 003 - FACIAL_C12PV_NeckB1 Group: 001 ####### Blend Shapes [782/782] - brow_down_L 000 - brow_down_R 001 - brow_lateral_L 002 - brow_lateral_R 003 - brow_raiseIn_L 004 - brow_raiseIn_R 005 ####### AnimatedMap [082/82] - head_cm2_color.head_wm2.browsDown 000 - head_cm2_color.head_wm2.browsDown 001 - head_cm2_color.head_wm2.browsLate 002 - head_cm2_color.head_wm2.browsLate 003 - head_cm1_color.head_wm1.browsRais 004 - head_cm1_color.head_wm1.browsRais 005 ####### 操作区域 - Write: - Write Neutral Pose Joint Position - Write Geometry - Write Skin Weights - Write Blend Shapes Targets - Create: - Create Blend Shapes For Mesh - Bind Skin For Mesh - Unbind Skin For Mesh - Tools: - New Neutral Joint Transform - Quickly Create Presets