MetaFusion/README.md
2025-02-10 03:31:15 +08:00

411 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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自定义的插件语言:基于PythonMaya版本: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下拉框默认LOD0LOD1~LOD7创建LODicons\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