11 KiB
项目目标
我想做一个Maya的Metahuman自定义的插件,
语言:基于Python
Maya版本:2022, 2023, 2024, 2025
项目描述
本项目是一个Maya插件,主要功能是提供与MetaHuman相同拓扑的模型或者自定义的3d模型以来完成自定义绑定,编辑DNA,校准骨骼位置,保存DNA,载入DNA,导出fbx,保存DNA文件, 编辑BlendShape,等功能。
这个插件主要功能
提供与MetaHuman相同拓扑的模型或者自定义的3d模型以来完成自定义绑定,编辑DNA,校准骨骼位置,保存DNA,载入DNA,导出fbx,保存DNA文件, 编辑BlendShape,等功能。
注意Reference路径不参与参见功能实现,只作为参考。Reference只作为参考,可以从中拷贝必要的文件到当前项目中
代码实现
根据Maya和Python版本来获取plugin的路径,并尽可能使用PySide编写UI,要保证PySide的通用性,使用单独的ccs文件来定义定义样式。
根据Maya不同的版本来定义PySide的UI定义,版本通用性参考MSLiveLink。
参考代码
DNA_Calibration中主要参考DNA编辑等功能更,SuperRigigng主要参考UI样式并获取对应的功能的实现逻辑,MSLiveLink主要参开DNA编辑和文件处理方式。
产品功能对标
DNA Calibration Document : https://epicgames.github.io/MetaHuman-DNA-Calibration/index.html
MetaHuman-DNA-Calibration 代码:https://github.com/EpicGames/MetaHuman-DNA-Calibration
SuperRigging:https://docs.pointart.net/
AnimCraft:https://geekdaxue.co/read/animcraft@cn/
代码基本结构
以""结尾的行为文件夹
├── dnacalib\
│ ├── CMakeModulesExtra\
│ ├── DNACalib\
│ ├── PyDNA\
│ ├── PyDNACalib\
│ ├── SPyUS\
│ ├── CMakeLists.txt
├── plugins\
│ └── Linux\
│ │ ├── 2022\
│ │ │ ├── _py3dnacalib.so
│ │ │ ├── dnacalib.py
│ │ │ ├── libdnacalib.so.6
│ │ │ ├── libembeddedRL4.so
│ │ │ ├── libembeddedRL4.so.8
│ │ │ ├── libembeddedRL4.so.8.0.8
│ │ │ ├── MayaUE4RBFPlugin2022.mll
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── 2023\
│ │ │ ├── _py3dnacalib.so
│ │ │ ├── dnacalib.py
│ │ │ ├── libdnacalib.so.6
│ │ │ ├── libembeddedRL4.so
│ │ │ ├── libembeddedRL4.so.8
│ │ │ ├── libembeddedRL4.so.8.0.8
│ │ │ ├── MayaUE4RBFPlugin2023.mll
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── 2024\
│ │ │ ├── _py3dnacalib.so
│ │ │ ├── dnacalib.py
│ │ │ ├── libdnacalib.so.6
│ │ │ ├── libembeddedRL4.so
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── 2025\
│ │ │ ├── _py3dnacalib.so
│ │ │ ├── dnacalib.py
│ │ │ ├── embeddedRL4.so
│ │ │ ├── libdnacalib.so.6
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── pydna\
│ │ │ ├── python3
│ │ │ │ ├── _py3dna.so
│ │ │ │ ├── dna.py
│ │ │ │ ├── libdna.so.7.1.0
│ │ │ ├── python311
│ │ │ │ ├── _py3dna.so
│ │ │ │ ├── dna.py
│ │ │ │ ├── libdna.so.7
│ │ │ ├── python397
│ │ │ │ ├── _py3dna.so
│ │ │ │ ├── dna.py
│ │ │ │ ├── libdna.so.7.1.0
│ │ │ ├── python3108
│ │ │ │ ├── _py3dna.so
│ │ │ │ ├── dna.py
│ │ │ │ ├── libdna.so.7.1.0
│ └── Windows\
│ │ ├── 2022\
│ │ │ ├── _py3dnacalib.pyd
│ │ │ ├── dnacalib.dll
│ │ │ ├── dnacalib.py
│ │ │ ├── embeddedRL4.mll
│ │ │ ├── MayaUE4RBFPlugin2022.mll
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── 2023\
│ │ │ ├── _py3dnacalib.pyd
│ │ │ ├── dnacalib.dll
│ │ │ ├── dnacalib.py
│ │ │ ├── embeddedRL4.mll
│ │ │ ├── MayaUE4RBFPlugin2023.mll
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── 2024\
│ │ │ ├── _py3dnacalib.pyd
│ │ │ ├── dnacalib.dll
│ │ │ ├── dnacalib.py
│ │ │ ├── embeddedRL4.mll
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── 2025\
│ │ │ ├── _py3dnacalib.pyd
│ │ │ ├── dnacalib.dll
│ │ │ ├── dnacalib.py
│ │ │ ├── embeddedRL4.mll
│ │ │ ├── MayaUERBFPlugin.mll
│ │ ├── pydna\
│ │ │ ├── python3\
│ │ │ │ ├── _py3dna.pyd
│ │ │ │ ├── dna.dll
│ │ │ │ ├── dna.py
│ │ │ ├── python311\
│ │ │ │ ├── _py3dna.pyd
│ │ │ │ ├── _py3dna9_4_3.pyd
│ │ │ │ ├── dna.dll
│ │ │ │ ├── dna.py
│ │ │ │ ├── dna9_4_3.dll
│ │ │ │ ├── polyalloc1_3_12.dll
│ │ │ │ ├── statuscode1_2_6.dll
│ │ │ │ ├── trio4_0_16.dll
│ │ │ ├── python397\
│ │ │ │ ├── _py3dna.pyd
│ │ │ │ ├── dna.dll
│ │ │ │ ├── dna.py
│ │ │ ├── python3108\
│ │ │ │ ├── _py3dna.pyd
│ │ │ │ ├── dna.dll
│ │ │ │ ├── dna.py
├── Reference\ 参考模块(不引用,仅供参考)
│ ├── DNA_Calibration 参考模块:DNA_Calibration
│ ├── MSLiveLink 参考模块:MSLiveLink
│ ├── SuperRiggingEditor 参考模块:SuperRiggingEditor
├── resources\
│ ├── assets\
│ │ ├── YAxisUp\
│ │ │ ├── full_rig.mb Y轴向上全身绑定Maya基础文件
│ │ │ ├── sub_ctrl.mb Y轴向上次级控制器Maya基础文件
│ │ ├── ZAxisUp\
│ │ │ ├── full_rig.mb Z轴向上全身绑定Maya基础文件
│ │ │ ├── sub_ctrl.mb Z轴向上次级控制器Maya基础文件
│ ├── dna\
│ │ ├── NDA文件...
│ ├── icons\
│ │ ├── NDA图标...
│ ├── data\
│ │ ├── MetaHuman\
│ │ │ ├── Deploy.dna 部署dna
│ │ │ ├── JointsInfo.json 骨骼基础信息
│ │ │ ├── VertexsInfo.json 顶点基础信息
│ │ ├── ARKit.json ARKit基础信息
│ │ ├── BodyJoints.json 身体骨骼基础信息
│ │ ├── JointsInfluence.json 骨骼影响基础信息
│ │ ├── Topology.json 拓扑基础信息
│ ├── maps\ 贴图路径(DDS)
│ ├── mask\ Mask贴图路径(TGA)
│ ├── meta_anim\
│ │ ├── meta_body_anim.py MetaHuman Body Animation
│ │ ├── meta_face_anim.py MetaHuman Face Animation
│ ├── meta_body_ctrl\
│ │ ├── meta_body_ctrl.py MetaHuman Body Control
│ ├── meta_motion_apply\
│ │ ├── match_files\
│ │ │ ├── metahuman_match_file.txt MetaHuman Motion 资源依赖文件
│ │ │ ├── meta_motion_apply.py MetaHuman Motion 应用
│ ├── shaders\
│ │ ├── dx11_shd_body.fx DX11身体材质
│ │ ├── dx11_shd_eyeLeft.fx DX11左眼球材质
│ │ ├── dx11_shd_eyeRight.fx DX11右眼球材质
│ │ ├── dx11_shd_head.fx DX11头材质
│ │ ├── dx11_shd_teeth.fx DX11牙齿材质
│ ├── skinCluster\
│ │ ├── CTRL_Root_Face.skin Skin Cluster
│ ├── additional_assemble_script.py 附加组装脚本
│ ├── analog_gui.ma 模拟图形用户界面MA文件
│ ├── gui.ma Maya GUI文件
│ ├── vtx_color.py 顶点色配置
├── 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
│ ├── config\
│ │ ├── __init__.py
│ │ ├── data.py 配置变量
│ ├── dnalib\
│ │ ├── __init__.py
│ │ ├── behavior.py
│ │ ├── definition.py
│ │ ├── descriptor.py
│ │ ├── dnalib.py
│ │ ├── geometry.py
│ │ ├── layer.py
│ ├── ui\
│ │ ├── __init__.py
│ │ ├── Qt.py Qt模块:根据Maya不同版本来设置Qt相关的模块
│ │ ├── style.qss 样式文件
│ │ ├── menu.py 菜单UI模块
│ │ ├── toolshelf.py 工具栏UI模块
│ │ ├── mesh.py 模型UI模块
│ │ ├── rigging.py 绑定UI模块
│ │ ├── adjust.py 调整UI模块
│ │ ├── define.py 定义UI模块
│ │ ├── menu_utils.py 菜单UI功能模块(文件,语言,帮助菜单功能,编辑和工具菜单功能从其他功能模块引用)
│ │ ├── mesh_utils.py 模型UI功能模块
│ │ ├── rigging_utils.py 绑定UI功能模块
│ │ ├── adjust_utils.py 调整UI功能模块
│ │ ├── define_utils.py 定义UI功能模块
│ ├── utils\ 功能模块
│ │ ├── __init__.py
│ │ ├── ... 功能模块
│ ├── MetaFusion.py 插件启动框架
├── CleanPycache.bat
├── Install.mel 拖入maya安装文件
├── Install.py 安装执行文件
├── CleanPycache.bat
├── Metahuman.pdf 官方Metahuman解析说明文档```
# 参考这些文件,并基于目前的项目文件来完善项目:
DNA Calibration Document : https://epicgames.github.io/MetaHuman-DNA-Calibration/index.html
MetaHuman-DNA-Calibration 代码:https://github.com/EpicGames/MetaHuman-DNA-Calibration
@Metahuman.pdf