
MMD 的模型和动作资源在网上是一抓一大把但真要把它们塞进 Unity、Unreal、Cocos 或者做后续的 3D 可视化流程里绕不开这一条路用 Blender 把 PMX 模型和 VMD 动作接进来处理干净把物理和约束烘焙成实打实的关键帧最后导出 FBX。这四个关键词——Blender、mmd、FBX、烘焙动画——合在一起基本就是MMD 资源工业化的最小闭环。我自己断断续续折腾这套流程有几年了从早期手改骨骼名字到现在写脚本批量跑踩过的坑能拉一个长长的清单。这篇就把整套链路拆开讲包括为什么这么选、每一步在干什么、参数怎么算、导出炸了怎么定位。不管你是刚下载完 Blender 想做个二次元小动画还是要把几十个角色批量塞进项目里下面的内容都能直接抄。1. 为什么 MMD 转 FBX 这件事值得单独拿出来讲1.1 MMD 资源与通用引擎之间的鸿沟在哪MMD 生态自成一体。它的模型是.pmx/.pmd动作是.vmd靠一套日文命名的骨骼系统センター、上半身、左足 之类驱动头发和裙子的飘动用的是刚体加关节的物理模拟而不是骨骼动画。这套东西在 MMD 本体里跑得好好的但你把.pmx扔给 UnityUnity 根本不认识.vmd更是没有任何主流引擎会读。所以中间必须有一个人来翻译。Blender 加 mmd_tools 插件是目前最成熟、成本最低的翻译层。它能把 PMX 解析成标准的网格加骨架把 VMD 采样成关键帧把 MMD 的物理模拟转成骨骼的烘焙动画最后再统一输出成 FBX 这种几乎所有引擎都吃的格式。整条链路里Blender 是唯一的枢纽。这里有个认知要先建立起来转换不是格式另存为而是一次重建。材质系统、坐标朝向、单位比例、骨骼层级、动画采样方式全都变了。你把它当成换个壳子去做导出后一定会出问题。1.2 哪些人真的需要这套流程我把需求大致分成三类每类的侧重点不一样。第一类是内容创作者想做 MMD 风格的短片、舞蹈视频但不想被 MMD 的渲染能力限制想用 Blender 的 Cycles 或 EEVEE 出片甚至用几何节点做特效。这类人最关心的是动作对不对、物理飘不飘、材质好不好看。第二类是游戏和应用的开发者需要把 MMD 角色做成可操控的资产进 Unity、UE 或者 Cocus 这类引擎。这类人最关心的是骨骼数、蒙皮权重、绑定是否干净、动画能不能被引擎正常切分。第三类是可视化和数字孪生方向比如把 FBX 再转成 3D Tiles 做在线展示或者做虚拟展馆。这类场景对动画要求低但对模型体积、贴图格式、坐标朝向极其敏感。三类需求对参数的要求完全不同。我见过太多人直接照抄网上的导出设置结果进引擎角色脸朝下——原因就是没搞清楚自己是哪一类。1.3 整条链路的分段与耗时预期把流程拆开大概是这么几段我按自己的实际经验给个耗时参考以单个中等复杂度模型为例阶段主要工作熟练后耗时环境准备装 Blender、装 mmd_tools、验版本15 分钟一次性模型导入导入 PMX、检查缩放与材质3 到 10 分钟模型清理合并 D 骨、限制权重、修法线10 到 30 分钟动作导入导入 VMD、对齐帧率与缩放5 分钟物理烘焙模拟刚体并烘焙成骨骼关键帧3 到 20 分钟看帧数导出 FBX参数配置、验证、修错5 到 15 分钟真正花时间的不是操作而是排查。所以后面我会把常见故障单独拉一节出来那张速查表比任何教程都值钱。2. 环境准备Blender 和 mmd_tools 到底怎么装才不出事2.1 Blender 版本怎么选Blender 的版本选择在这条链路里比想象中重要。原因很简单mmd_tools 是第三方插件它对 Blender 的 API 有依赖Blender 每次大版本更新都可能改掉一些接口。我的建议是用 mmd_tools 明确声明支持的版本不要盲目追新。如果你只是做 MMD 相关的工作Blender 3.6 LTS 是一个很稳的选择生态成熟插件兼容性好。如果你要用到一些新特性比如更好的几何节点或者 4.x 的渲染改进那就需要确认你手上的 mmd_tools 版本是给 4.x 用的分支。下载渠道只走官网安装包解压即用不需要安装程序。这里提一句常被问到的问题有人解压后找不到界面上的某些面板八成是没在偏好设置里启用插件或者窗口布局被改乱了。Blender 的界面元素都是可以拖拽和隐藏的比如摄像头的边框框选显示如果不见了去视图叠加层Overlay里重新勾选就行跟插件没关系。2.2 mmd_tools 的获取与启用插件本体在 GitHub 上作者维护过几个分支社区里比较活跃的版本号已经到了 2.x 系列比如 v2.10.x。有些国内镜像站会同步一份下载速度会好一些但要注意镜像可能滞后于主仓库遇到 bug 优先去主仓库看 issue。安装步骤打开 Blender进入编辑→偏好设置→插件。点右上角的安装Install选中下载好的 zip 包不要解压直接选 zip。在搜索框输入MMD勾选列表里的MMD Tools。展开插件面板确认没有报错信息。启用成功后3D 视图右侧按N调出的侧边栏里会多出一个MMD标签页文件菜单的导入里也会多出MMD 模型 (.pmx/.pmd)和MMD 动作 (.vmd)两个选项。如果这两处有一处没出现说明插件没真正加载成功去看一下控制台窗口的报错通常是版本不匹配。注意插件列表里可能存在名字相似的旧插件比如只支持 PMD 的老版本。确认你勾选的是完整版的 MMD Tools不然导入 PMX 会直接失败。2.3 导入前的场景基线设置很多人一上来就导入模型结果做完才发现单位、帧率全不对回头改很痛苦。导出前该定的东西导入前就定好。第一把场景帧率改成 30 fps。MMD 的动作采样就是 30 fpsBlender 默认的 24 fps 会让动作整体节奏变慢看起来没劲。改的地方在输出属性→帧率。第二把单位系统确认一下。默认的无单位或者公制都可以关键是整条链路保持一致。第三清理掉默认场景里的立方体、灯光、摄像机。别小看这一步导出 FBX 的时候如果把默认物体也带上引擎里会莫名其妙多出几个东西排查起来很烦。第四养成随时Ctrl S保存.blend的习惯。后面要讲的导出报错里有一大类就是因为 Blender 试图在未保存的临时状态下去写 FBX 导致的。3. MMD 模型导入后的清场与修理3.1 缩放、朝向与轴心问题导入 PMX 时导入面板里有一个缩放Scale参数默认通常是 0.08。这个数字不是随便来的MMD 模型的头顶高度大概在 20 个单位左右乘 0.08 正好是 1.6 米符合真人身高。这个值不要随意改改了你后面导入 VMD 时的缩放也必须同步改否则动作会整体偏移。导入后模型的朝向一般是面朝 -Y 或者 Y取决于版本。这里不急着转因为 FBX 导出时会统一处理坐标系Blender 的 Z 轴向上FBX 默认 Y 轴向上。真正要检查的是模型的轴心Origin在哪。MMD 模型导入后根物体通常是一个空物体Empty作为父级骨架挂在它下面。如果轴心跑到脚底以外的地方旋转和位移动画会出问题。修正方法是在物体模式下选中根空物体物体→设置原点→原点到几何中心或者手动归零。实操心得如果模型进引擎后脚陷进地面或者悬空九成是轴心位置加上导出时的应用缩放设置组合出的问题。先用一个纯色材质的小方块做参照物对比高度能快速定位是模型本身的问题还是引擎导入设置的问题。3.2 材质与贴图看着好不等于导出后好MMD 的材质体系跟 PBR 差得很远。它用的是漫反射贴图加 Toon 贴图或者叫球面贴图 SPH/SPA加上边缘光、半透明这些参数。mmd_tools 导入后会尽量把这些参数翻译成 Blender 的节点但翻译得并不完美。这里有一个非常典型的坑我几乎每次都会提醒别人在 Blender 里看着贴图好好的导出 FBX 后进引擎贴图报错或者直接变成灰白。原因通常有这么几个贴图路径是相对路径且导出时没有勾选嵌入纹理引擎找不到文件。贴图格式是.tga、.dds或者带透明通道的特殊格式引擎不支持或者需要额外配置。材质里用到了 mmd_tools 生成的球面贴图节点或者自定义节点组FBX 格式根本不支持这类节点导出时被丢弃。贴图文件名里带日文、特殊符号或者层级过深路径解析失败。对应的处理办法导出前把材质降级成标准节点。具体做法是选中模型在 mmd_tools 面板里找到把材质转为 Blender 原生材质的选项不同版本叫法不同大意是转换材质然后用 Principled BSDF 重新连一次基础色和 Alpha。如果数量多写个脚本批量把Emission节点换成Principled BSDF会省很多事。另外贴图统一转成 PNG 或 JPG是个好习惯。不透明的用 JPG带透明通道的用 PNG文件体积和兼容性都最平衡。3.3 骨骼命名、D 骨与权重限制MMD 骨架最大的特点是骨骼数量爆炸。除了正常的骨骼还有一堆以D结尾的变形骨比如左足D、左ひざD以及 IK 骨、目标骨。一个角色动辄两三百根骨骼复杂一点的加上 D 骨能到六七百。这些骨在 MMD 里为了 IK 运算和变形服务的但在引擎里它们大部分是累赘。引擎不会帮你去重骨骼数越多蒙皮计算越慢有些引擎还会因为骨骼名非 ASCII 而出问题。处理顺序是这样的先合并或删除 D 骨。mmd_tools 面板里有合并骨骼的功能通常是把XxxD合并回Xxx。处理 IK 骨。如果动作已经烘焙成关键帧了后面会讲IK 骨就可以删掉或者隐藏不影响结果。但如果你打算在引擎里继续用 IK 修改动画那就得保留。限制顶点权重数量。Blender 里在权重绘制模式或者物体数据属性 → 顶点组的下拉菜单里有限制总数Limit Total的功能一般限制到 4 个。这一步很关键很多引擎尤其是移动端默认每个顶点只取 4 个骨骼影响超出的部分会被丢弃导致模型变形。重命名骨骼。如果你要进 Unity 做 Humanoid 重定向日文骨骼名会让自动映射彻底失效。这种情况建议提前用脚本批量改名或者干脆手动建立映射表。注意合并骨骼一定要在烘焙动画之前做完。顺序错了你会发现烘焙出来的关键帧挂在了一条已经不存在的骨骼上动画直接报废。4. VMD 动作导入与烘焙动画的完整逻辑4.1 VMD 导入的正确姿势与缩放对齐导入 VMD 有个前提必须先在物体模式下选中骨架对象。不选骨架直接点导入Blender 会弹一个错误或者导入到一个新建的空骨架上动作对不上模型。选好骨架后文件→导入→MMD 动作 (.vmd)弹出的面板里重点看两个参数缩放Scale必须和模型导入时一致通常也是 0.08。这两个值不一致动作要么整体放大几倍要么缩成一小团贴着地面。骨骼映射插件会按骨骼名自动匹配。如果模型用了非标准的骨骼命名这里需要手动指定。导入成功后时间线上会出现大量关键帧。这时候播放一下如果动作整体偏移、错位或者模型像被撕开一样八成是骨骼映射错了或者模型的骨架被改过结构。4.2 为什么非烘焙不可烘焙这个词听起来很唬人其实逻辑很简单。MMD 的动作里有大量依赖关系IK 约束、父级跟随、物理模拟。这些依赖在 MMD 里是实时计算的Blender 也能实时算但 FBX 格式不支持把 IK 约束和物理模拟原样带过去——它只认逐帧的骨骼变换数据。所以烘焙的本质是在每个关键帧上把当时所有依赖计算的结果拍扁成骨骼的位移和旋转数值。烘焙之后IK 骨、约束、物理模拟都不再需要了动画变成了一串死的数字任何引擎都能播。MMD 里最需要烘焙的是物理部分头发、裙子、胸前的飘带、披风。这些在 Blender 里是刚体加关节模拟出来的如果不烘焙导出 FBX 后它们会一动不动或者干脆飞到天上去。4.3 物理烘焙的参数怎么定物理烘焙在 mmd_tools 的 MMD 面板里一般有一个物理烘焙的按钮组。要设置的参数主要是三个起始帧、结束帧、步长Step。帧率决定起始和结束帧。前面说了 MMD 动作是 30 fps假设你导入的动作是 600 帧那对应的就是 20 秒。步长是最需要动脑子的参数。它表示每隔几帧采一次样写成关键帧。这里有个明确的权衡步长关键帧数量600 帧为例精度文件体积适用场景1约 600最高大精细特写、慢动作2约 300高中大多数场景3约 200中较小远景、群演5约 120低小背景角色、快速镜头步长 1 意味着每帧都记录物理模拟最接近原始效果但关键帧数量爆炸如果模型有几十根物理骨骼文件会非常大。我的默认选择是步长 2肉眼看不出差别体积能压下来一半。还有一个细节物理模拟本身在 Blender 里是逐帧求解的烘焙时如果步长大于 1中间帧的状态会被跳过可能导致快速运动时的抖动。如果你发现裙摆在高潮段落有异常弹跳把步长调回 1 重新烘焙试试。4.4 手动烘焙和插件烘焙的分工很多人不知道mmd_tools 的物理烘焙和 Blender 自带的烘焙动作Bake Action是两个不同的东西作用对象也不同。mmd_tools 的物理烘焙针对的是刚体模拟把物理结果写进骨骼。Blender 的烘焙动作针对的是约束、父级、IK 这类动画依赖。如果你只是导入了 VMD、没有用物理那用 Blender 自带的烘焙动作就够了。操作是物体模式选中骨架 →物体→动画→烘焙动作弹出的面板里勾选视觉关键帧起始帧和结束帧填时间线范围然后执行。如果你用了物理顺序必须是先物理烘焙再烘焙动作。反过来会出问题。实操心得烘焙前先复制一份骨架放到隐藏的集合里做备份。烘焙是不可逆的一旦发现步长设错或者帧范围填错没有备份就得从头再导入一次 VMD。5. 导出 FBX 的参数逐项拆解5.1 导出前必须做的三件事第一保存 .blend 文件。这不是形式主义很多导出报错都和文件未保存有关。第二整理场景。删掉不需要导出的物体——测试用的方块、临时灯光、参考图。只保留角色网格和骨架选中它们。第三切换到物体模式并取消所有选择然后选中要导出的网格和骨架。选择项决定了导出结果容易搞错的话就花钱买保险——用导出面板里的选中项选项而不是导出整个场景。5.2 FBX 导出面板的逐项说明文件→导出→FBX (.fbx)面板项目很多我按重要性分组说。路径模式这一项决定贴图怎么被引用。选项有自动、复制、相对、绝对、嵌入。推荐选复制加勾选嵌入纹理。复制模式下Blender 会把用到的贴图复制一份到 FBX 旁边的文件夹里兼容性最好嵌入纹理则把图片塞进 FBX 内部单文件分发最方便代价是文件变大。如果你的目标平台是移动端或者在线展示嵌入能省掉一堆丢贴图的麻烦。几何数据平滑Smooth建议选面这样能保留法线信息。切线空间Tangent Space只在你要用法线贴图时才需要勾多勾了会增加体积。应用修改器建议打开否则你加的细分或者变形修改器不会生效。骨架主骨骼Primary Bone用于根骨骼一般不用改。添加叶骨Add Leaf Bones一定要关掉。这个选项会在每根骨骼末端自动加一根小骨头看起来无害但会让骨骼数量翻倍很多引擎导入后骨骼列表会长到没法看。动画这是重头戏。烘焙动画打开NLA 片段按需求勾选如果你把多个动作放在不同的 NLA 轨道上勾上这个就能一次导出多段动画全部动作是给 Blender 内部多个 Action 的情况用的。采样率保持 1.0。简化Simplify是后期压缩的关键参数取值 0 到 1越大简化越狠。我的经验是 0 到 0.2 之间再大就能明显看到手部动作发飘了。变换Y 轴向上是给 Unity 这类引擎准备的Blender 的 Z 轴向上会被自动转换。前向轴一般是-Z 前向。缩放保持 1.0乱改会导致进引擎后模型大小离谱。5.3 批量导出的脚本写法一个模型手动导还好十个二十个就是折磨。Blender 的 Python 接口能让这部分自动化下面这个脚本我用了很久逻辑是按骨架遍历把每个骨架和它的子物体一起选中导出一个 FBX。import bpy import os out_dir D:/fbx_out os.makedirs(out_dir, exist_okTrue) armatures [obj for obj in bpy.data.objects if obj.type ARMATURE] for arm in armatures: bpy.ops.object.select_all(actionDESELECT) arm.select_set(True) for child in arm.children_recursive: child.select_set(True) bpy.context.view_layer.objects.active arm bpy.ops.export_scene.fbx( filepathos.path.join(out_dir, arm.name .fbx), use_selectionTrue, apply_unit_scaleTrue, object_types{ARMATURE, MESH}, path_modeCOPY, embed_texturesTrue, add_leaf_bonesFalse, mesh_smooth_typeFACE, use_mesh_modifiersTrue, bake_animTrue, bake_anim_use_all_actionsFalse, bake_anim_use_nla_stripsTrue, bake_anim_force_startend_keyingTrue, bake_anim_simplify_factor0.1, ) print(导出完成:, arm.name)跑之前记得先保存一次.blend并且确认模型已经被正确烘焙。这套脚本配合前面的清理流程可以把单模型处理时间压到几分钟。参数名称在不同 Blender 大版本里会有微调最稳的做法是先用界面手动导一次然后在信息编辑器里查看执行记录把参数名抄进脚本。5.4 导出报错怎么定位有一类报错很多人遇到过大意是无法把 .blend 文件转换为 fbx 文件需要先使用 blend...。这类信息的核心指向是导出器拿不到一个有效的、已保存的源文件状态。排查顺序建议是先保存.blend到本地磁盘再重新导出。检查文件路径确保没有中日韩字符、空格、特殊符号。路径改到纯英文目录下再试。检查导出插件版本。如果你在用某个第三方 FBX 导出扩展先禁用它用 Blender 自带的导出器。检查场景里有没有损坏的对象——可以新建一个空白 blend只导入要导出的模型再试一次能排除场景污染。这四步走下来绝大多数导出失败都能定位到原因。6. 常见问题速查表这部分比教程值钱6.1 动画与骨骼类问题现象大概率原因处理方式进引擎后角色原地不动导出时未勾选烘焙动画或动画挂在非导出对象上重新导出确认动画选项和选中对象动作整体偏移模型飘离原位模型和动作的导入缩放不一致两者统一用 0.08重新导入动作动作变慢节奏不对场景帧率是 24动作是 30 fps帧率改成 30 后重新烘焙裙子头发僵硬不动物理没有烘焙用 mmd_tools 烘焙物理后再导出模型变形拉扯顶点权重超过引擎上限限制顶点权重总数为 4骨骼列表长到离谱叶骨和 D 骨没清理关闭添加叶骨合并 D 骨手指或手臂抖动简化参数过高把简化因子降到 0.1 以下重新导出6.2 材质与贴图类问题前面提到过那种Blender 里看着正常、进引擎报错的情况这里给一套标准的排查流程。先看材质节点。如果材质里存在着色器到 RGB、球面贴图节点、自定义节点组这些东西FBX 是不认的导出后材质会退化成基础色或者直接变成白模。解决办法是把材质转成只包含Principled BSDF加图像纹理的最简结构。再看贴图文件。检查三件事格式是不是 PNG/JPG、路径里有没有特殊字符、导出时是不是选了复制或嵌入。路径问题是最隐蔽的因为 Blender 会缓存贴图你在 Blender 里看到的是缓存图像源文件其实早就被移动了。判断方法很简单在图像编辑器里看图片名旁边有没有星号或者警告标记。最后看透明通道。MMD 的很多材质依赖 Alpha 做边缘柔化如果引擎的材质模板不支持透明混合就会出现黑边或者整块变成不透明。这种情况需要在引擎里手动把材质改成镂空或者透明模式。6.3 上下游衔接的问题导出 FBX 往往不是终点。常见的下游有这么几种转 3D Tiles 做在线展示。这条路径一般会经过 FBX 到 glTF 再到 3D Tiles 的转换。坑主要在贴图3D Tiles 的切片工具对贴图尺寸和格式有偏好超过 2048 的贴图可能被强制压缩出现模糊。另外模型面数也要控制切片后的瓦片数量跟面数成正比一个几十万面的模型会被切成一堆小文件加载体验很差。这种情况建议在导出前用减面修改器先处理一遍。转 GLB 做 Web 展示。如果你的目标只是网页端展示其实可以跳过 FBX直接用 Blender 的 glTF 导出。GLB 单文件、体积小、浏览器原生支持比 FBX 转一圈要省事得多。但要注意 glTF 的坐标约定和 FBX 不同动画的采样方式也有差异需要单独验证一遍。进 Cocos 这类国产引擎。除了前面说的材质节点问题还有一个容易忽略的点骨骼命名里的全角字符。MMD 骨骼名用的是日文全角某些引擎在解析时会截断或者乱码导致骨骼绑定不上。如果遇到模型进来了但动不了的情况优先检查骨骼名。多模型在线预览。如果场景里要同时加载多个 FBX务必注意每个模型的骨架名称不要重复。Unity 里重名会导致动画丢失引用Unreal 里则可能触发资源覆盖的警告。批量导出脚本里加一段给骨架重命名的逻辑能规避这个问题。7. 我自己的标准作业流程和一些省时间的做法7.1 从下载到导出的固定顺序折腾久了就形成习惯了我现在基本按这个顺序走很少有意外打开 Blender新建空白场景帧率改成 30删掉默认物体。导入 PMX检查缩放 0.08检查模型朝向和轴心。清理 D 骨限制顶点权重到 4检查材质节点是否需要转换。贴图统一转 PNG/JPG放到模型的同级目录下。选中骨架导入 VMD缩放 0.08检查骨骼映射。如果有物理先跑一遍模拟看效果确认没问题再烘焙步长 2。用 Blender 烘焙动作勾选视觉关键帧范围覆盖全片。保存.blend整理场景只留网格和骨架。导出 FBX路径模式复制加嵌入关闭叶骨简化因子 0.1。进引擎验证先看静态模型是否正常再看动画是否播放。第 10 步千万别省。我见过太多次导出参数明明设对了结果因为模型本身有个隐藏的缩放没归零进引擎后整体偏了一个身位。先验证静态再验证动画能把问题范围缩到最小。7.2 几个真能省时间的技巧第一个是给模型建一套命名规范。导出前把骨架和根空物体改名成有意义的英文名比如char_01_root、char_01_arm。后面批量处理、批量替换引用的时候你会感谢自己。第二个是保留一份干净态的 .blend。物理烘焙、动作烘焙这些操作都是破坏性的我习惯在导入完模型、清理完毕之后另存一份带_clean后缀的文件。后面不管怎么折腾出问题就回到这一份重来比从头导入省太多。第三个是用材质预览快速检查贴图。Blender 的材质预览模式比渲染模式快得多把它当成一个贴图体检工具。导出前扫一遍看看有没有丢失的粉色贴图或者纯黑的材质球能在导出前就把问题拦下来。第四个是把常用参数存成预设。Blender 的导出面板支持保存预设我这套参数嵌入纹理、关叶骨、简化 0.1、Y 轴向上存了一个预设每次导出点一下就行比记参数靠谱。最后分享一个我最近才摸清的小细节物理烘焙的起止帧不要刚好卡在动作的首尾帧上往后多留 5 到 10 帧。原因是从静止到开始运动的那一瞬间物理模拟还没有稳定如果从第 1 帧就开始烘焙头几帧的裙摆姿态可能会有一个轻微的抽动。多留几帧做缓冲然后在时间线上裁掉这段出来的效果会稳很多。这个坑我在做舞蹈类动作的时候连续踩了三次才找到规律写在这里希望能帮到还在排查同类问题的人。