# 项目目标 我想做一个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