PMX骨骼名称对照与映射:解决MMD动作套用错位

发布时间:2026/10/1 3:41:44
PMX骨骼名称对照与映射:解决MMD动作套用错位 1. 骨骼名对不上动作就白套了先把PMX这套命名规则摸清如果你碰过MMDMikuMikuDance的模型大概率遇到过一个很烦的场景手里有个精修过的模型想把另一个模型的动作数据VMD套上去用结果一导入人是站着的胳膊腿全拧成了麻花甚至头飞出去了。多数时候这不是模型坏了也不是动作文件有毛病而是两台模型的pmx骨骼名称根本对不上号。PMX是MMD生态里最主流的模型格式可以理解成一套骨架说明书它规定了角色身上有哪些骨头、每根骨头叫什么、谁连着谁、哪根可以旋转哪根只能位移。而VMD动作文件里记录的也不是第几根骨头转了多少度而是直接用骨骼的名字去找骨头。名字对上了动作就精准落位名字差一个字动作就找不到目标要么不动要么被塞进另一根结构相似的骨头里造成扭曲。这篇东西写给三类人看一是刚开始玩MMD、被套动作搞崩溃的新手二是做模型移植、想把多套动作复用到同一个模型上的爱好者三是用Blender的mmd_tools做二次创作、需要批量处理骨骼名的作者。我会把PMX标准骨骼的命名体系拆开讲给一份可以直接抄的骨骼名对照表再把改名、映射、排查的实操流程完整走一遍。看完你至少能自己判断这次动作套歪了到底是哪几根骨头在捣乱。2. 从センター开始PMX标准骨骼体系的层级拆解2.1 躯干主干链为什么センター是一切的原点PMX的骨骼是一棵树每根骨头有个亲骨骼父级。整棵树最顶上的通常是全ての親全ての親读作subete no oya意思是所有骨骼的父级一般用来做整体位移比如让角色在场景里走一圈。但真正驱动日常动作的根节点是センター中文圈习惯叫中心骨英文对应 Center。为什么是センター而不是全ての親因为绝大多数的VMD动作位移信息是写在センター上的身体的重心起伏、前后移动、转身带位移全靠它。全ての親在标准动作里通常一动不动只是给模型留一个整体操控的接口。如果你把模型的根骨骼命名搞错了比如把センター错写成Center或者中芯动作一播角色就杵在原地不动上半身只在原地扭。往上走是グルーブGroove可译作骨盆摆动它是介于センター和上半身/下半身之间的过渡骨负责腰部的整体扭动。再往上分两条一条是上半身Upper Body一条是下半身Lower Body。这两根是躯干的核心上半身带动胸、肩、头下半身带动两条腿。上半身2是MMD标准里后来加的扩展骨位置在胸腹部专门用来做更细腻的呼吸感和胸部摆动。很多早期模型没有这根骨头如果你拿一个带上半身2动作的VMD套到没有这根骨的模型上那部分动作会丢失或者叠到上半身去胸部的动作就变得生硬。往上依次是首Neck脖子、頭Head头部头部再分出左目 / 右目 / 両目三根眼球骨——注意両目是双眼联动的统合骨不是两只眼睛的重复。我个人的经验是主干链这七八根骨头的名字是绝对不能错的因为它们承载了动作里70%以上的关键帧。改名的优先级永远从センター、上半身、下半身、首、頭这五根开始其他都可以往后放。2.2 手臂链与手指链命名里藏着编号规律手臂链从肩开始分叉左右各一套命名统一带左 / 右前缀。顺序是肩Shoulder→腕Upper Arm上臂→ひじElbow肘/前臂→手首Wrist手腕。这里有个中文用户特别容易踩的坑日文里的腕指的是上臂而我们口语说的手臂往往包含小臂。如果你按中文直觉去对应很容易把腕当成整条手臂改完名动作就全乱。手指是PMX里最考验耐心的部分。标准命名规律是这样的親指0 / 親指1 / 親指2是拇指的三节0是根部因为拇指的根部骨在MMD里被特殊处理过然后人指1/2/3食指三节、中指1/2/3中指三节、薬指1/2/3无名指三节日文薬指就是无名指、小指1/2/3小指三节。左手五根指头加拇指的0号一共16根左右手合起来32根手指骨。注意手指骨的编号必须是阿拉伯数字的半角形式写成人指一或者人指①是匹配不上任何标准动作的。这一点非常多人栽过。手指动作在VMD里出现频率不算高但一旦模型缺了手指骨或者名字错了套那些带手势的动作比如握拳、比心时手指会僵直成爪状插在手掌里视觉上极其出戏。所以做模型移植的时候手指骨的存在和命名建议一并检查别只顾着躯干。2.3 腿脚链、IK骨骼与D骨骼功能命名的重灾区腿部的标准链是足Upper Leg大腿→ひざKnee膝盖/小腿→足首Ankle脚踝/脚掌→つま先Toe脚趾。注意足在日文里对应大腿足首对应脚踝つま先才是脚尖。这三个词的译名和中文直觉的错位程度比手臂还严重。除了这几根主链骨头腿部还有一类控制用的骨骼左足IK / 右足IK反向动力学控制骨动作里人物的脚踩地面、下蹲时脚不滑动全靠它们。IK骨在MMD里是不参与普通旋转、只做位置约束的。左足D / 右足DD是Dummy假人/变形骨的缩写是一套跟随IK做位移的辅助骨用来把IK的运动传递给实际渲染的足部。左つま先IK / 右つま先IK脚尖的IK控制骨。左足首D / 右足首D脚踝的变形骨。这套D骨和IK骨的结构是PMX套动作时最容易被忽略的部分。一个模型如果只有主链骨、没有对应的D骨和IK骨动作里腿部的表现就会很飘——脚会滑蹲下去膝盖会穿模。很多人以为是自己模型权重没刷好其实是骨骼结构不完整。2.4 捩り骨骼、肩P这些辅助骨缺了不难看、错了很难救捩りTwist扭转骨是PMX里很有代表性的一类辅助骨比如左腕捩 / 右腕捩、左手捩 / 右手捩。它们的作用是在手臂做大幅扭转比如手心朝上的时候让上臂的扭转自然地分散到两段上避免整条手臂像一根麻花一样拧巴。如果模型没有捩り骨动作里手臂一转肩膀处的蒙皮就会挤成一团。还有左肩P / 右肩PP是Parent的缩写是一种用于肩膀变形控制的父级骨以及操作中心这类给MMD界面用的UI骨一般不参与实际渲染。这类辅助骨的处理原则是有对应就映射没有就丢弃但绝不能硬塞给主链骨。我见过有人图省事把り骨的动作合并到腕骨上结果手臂一扭整个肩膀都跟着转模型看起来像脱臼了一样。宁可让这部分动作丢失也不要乱映射。3. 一张能直接用的骨骼名对照表3.1 MMD日文名与中文通用译名的对应下面这张表是我平时改模型时随手维护的对照中文译名用的是国内MMD圈比较通行的叫法不是严格翻译图的是沟通方便。PMX标准日文名中文常用称呼英文对应层级位置全ての親总父级All Parent根节点センター中心骨Center躯干根グルーブ骨盆Groove腰上半身上半身Upper Body躯干上半身2胸部Upper Body 2躯干首脖子Neck躯干頭头Head躯干左肩 / 右肩肩Shoulder手臂左腕 / 右腕上臂Upper Arm手臂左ひじ / 右ひじ前臂 / 肘Elbow手臂左手首 / 右手首手腕Wrist手臂下半身下半身Lower Body躯干左足 / 右足大腿Upper Leg腿左ひざ / 右ひざ小腿 / 膝Knee腿左足首 / 右足首脚踝Ankle腿左つま先 / 右つま先脚尖Toe腿左足IK / 右足IK脚IKLeg IK控制骨左親指0/1/2拇指三节Thumb 0/1/2手指左人指1/2/3食指三节Index 1/2/3手指左中指1/2/3中指三节Middle 1/2/3手指左薬指1/2/3无名指三节Ring 1/2/3手指左小指1/2/3小指三节Pinky 1/2/3手指左腕 / 右腕捩上臂扭转Arm Twist辅助左手捩 / 右手捩手腕扭转Wrist Twist辅助左足D / 右足D腿部变形Leg D辅助这张表不用背存下来当字典用就行。真正要记住的是那几条主干链剩下的遇到再查。3.2 MMD命名与主流软件命名体系的对照如果你是要把模型导入Blender做动画或者把Mixamo的动作转过来给MMD用光有MMD内部的对照表不够还得跨体系对照。下面是几个常见体系的映射关系。MMD日文名Blender (mmd_tools)MixamoUnity HumanoidセンターCenterHipsHips上半身Upper BodySpineSpine上半身2Upper Body2Spine1Chest首NeckNeckNeck頭HeadHeadHead左腕Arm_LLeftArmLeftUpperArm左ひじElbow_LLeftForeArmLeftLowerArm左手首Wrist_LLeftHandLeftHand左足Leg_LLeftUpLegLeftUpperLeg左ひざKnee_LLeftLegLeftLowerLeg左足首Ankle_LLeftFootLeftFoot左つま先Toe_LLeftToeBaseLeftToes跨体系对照最容易翻车的地方是脊柱段数不一样。MMD只有上半身和上半身2两段而Mixamo有Spine、Spine1、Spine2三段Unity有Spine、Chest、UpperChest三段。你转过去的时候必然有一段是多余的或者需要把两段合并成一段。我的做法是以段数少的体系为基准把段数多的那边往中间压缩比如把Mixamo的Spine2和Spine1取平均写进上半身2这样躯干弯曲的幅度大体对得上反过来如果目标段数多就把MMD的上半身2复制到Spine1和Spine2各一份虽然细节会略生硬但不会变形。3.3 真正让对照失效的往往是看不见的字符问题前面讲了那么多名字对应但实际排查时十个套动作失败里有三四个根本不是名字选错了而是字符本身长得像但不一样。这几类问题特别隐蔽全角与半角日文假名有全角半角之分。半角的 和全角的 センター 在屏幕上看起来一模一样尤其在小字号下但字符串比对时是两个完全不同的东西。大小写英文名字段里 center 和 Center 也对不上部分工具敏感部分工具不敏感不要赌。中文汉化残留有些模型被汉化工具批量改过名センター被替换成了中心套日文标准动作时整条主干链全部失联。相似字形日文的 ー长音符和中文的 一、连接号 -肉眼几乎分不出。末尾空格从网页复制骨骼名粘贴到编辑器里很容易带一个看不见的尾随空格。注意判断两根骨头名字是否一致最保险的方法不是靠眼睛而是复制到纯文本编辑器里打开显示不可见字符或者对比字符数。名字长度差1就是有问题。4. 实操用PMXEditor和PmxTailor做骨骼名对照与替换4.1 动手前的备份与结构确认改骨骼名前第一件事永远是复制一份原始文件命名成 xxx_backup.pmx 放在另一个目录。骨骼改名是不可逆操作改错了没法一键回退尤其批量替换的时候稍不留神就把一堆骨头改成同一个名字模型直接报废。第二件事是确认目标动作文件用的是什么命名体系。方法很直接用PMXEditor打开动作对应的模型或者用能读VMD的工具打开VMD看它引用了哪些骨骼名。如果VMD里全是日文标准名那你的目标就是把模型改成日文标准名反过来如果模型是VRoid之类的体系那就得改动作文件或者上映射工具。第三件事是列两张清单一张是动作文件需要的骨骼名一张是当前模型已有的骨骼名。两张清单放在一起比对缺的、多的、名字不一样的就全部浮出来了。这个比对过程手工做也行骨头多的模型建议用文本工具做差集效率高很多。4.2 PMXEditor里批量改名的具体操作PMXEditor是PMX模型编辑最常用的工具骨骼改名就在它的骨骼面板里。流程是这样的打开PMXEditor载入你的模型文件。在左侧面板切到ボーン骨骼标签这里会列出模型所有的骨头包含日文名和英文名两列。找到要改的骨头双击它对应的名字单元格直接编辑。改完按回车确认。如果涉及大量骨头PMXEditor支持选中多根骨头后统一处理但批量替换功能要谨慎它默认是匹配整个名字还是部分匹配不同版本行为不一致。我的习惯是先改主干链センター、上半身、下半身、首、頭改完立刻用MMD载入看一眼模型有没有变形确认没炸再继续改四肢。分段验证能保证出问题时知道是哪一步捅的娄子。还有一个细节PMX里每根骨头有日文名和英文名两个字段。VMD动作匹配走的是日文名字段英文名只是给编辑器显示和Blender导入用的。所以改名一定要改日文名那一列英文名改不改都不影响动作套用。这一点很多人搞反了改了半天英文名发现没用。4.3 PmxTailor的映射表写法如果你的目标模型骨骼名体系是固定的不想动模型本身那就用PmxTailor这类映射工具把VMD里的骨骼名按一张对照表替换成目标模型的命名再套上去。这种方式的好处是模型零改动风险低。PmxTailor的映射表就是一个纯文本文件一行一条对应关系用逗号分隔左边是VMD里原有的骨骼名右边是目标模型里的骨骼名。センター,center 上半身,spine 上半身2,chest 首,neck 頭,head 左腕,shoulder_L 左ひじ,elbow_L 左手首,hand_L 左足,hip_L 左ひざ,knee_L 左足首,foot_L写法上有几个要点左边必须和VMD里的名字完全一致包括全角半角。不确定的话先从VMD里把名字原样复制出来。不需要映射的骨头可以不写工具会原样保留。目标模型里不存在的骨头右边留空或者直接不写这条动作会丢弃总比硬塞给别的骨头强。映射表可以复用一个模型建好一次映射表之后所有走这个体系的动作都能套效率极高。我强烈建议每个常用模型都存一份自己的映射表按模型名命名比如modelA_to_mmd.txt。做过一次之后以后再遇到同一个模型直接载入映射表就完事省掉的重复劳动非常可观。4.4 Blender mmd_tools路线的处理方式如果你是在Blender里做二次创作用的mmd_tools插件那骨头的命名会走另一套逻辑。mmd_tools导入PMX时会把日文骨骼名映射成自己的命名规范通常是 日文名 英文名 的组合形式比如 腕.L、ひじ.L 这种。在Blender里改名的思路和PMXEditor类似但要注意mmd_tools有一份内置的骨骼名翻译字典可以在插件设置里自定义。如果你导入的模型命名比较特殊可以在字典里加一条映射让插件自动识别。字典是以文本格式存在插件配置目录下的编辑方式参照插件文档。导出回PMX的时候mmd_tools会反向把Blender里的骨骼名翻译回日文标准名。如果这个反向翻译在字典里找不到条目导出后的骨头就会带着Blender的名字套动作时自然就不认了。所以Blender路线的关键是保证导入和导出的字典是对称的加了一条导入映射最好也补一条对应的导出映射。5. 排查实录套动作后模型扭曲、错位怎么救5.1 症状与原因速查表套动作出问题时症状其实能反推出是哪根骨头出了岔子。下面这张表是我排查时最常用的。症状表现最可能的骨骼问题排查方向模型完全不动センター或根骨骼名不匹配检查根骨名字上半身扭曲成螺旋上半身/上半身2映射错位检查脊柱段数手臂抬起但肩膀不动肩骨缺失或名字错误检查肩骨映射手臂像麻花拧紧捩り骨被错误映射到主链检查扭转骨映射脚原地滑动IK骨或D骨缺失补全IK/D骨下蹲时膝盖穿模足D骨与主链骨层级错误检查D骨父子关系手指成爪状手指骨命名或编号错误检查手指骨半角数字头部飞出去頭骨映射到了别的骨检查头骨与首骨动作一半丢失目标模型缺少对应骨补骨或接受丢弃这张表不是万能的但能覆盖八成的常见问题。遇到症状先查表比盲目翻骨骼列表快得多。5.2 几个我真实踩过的坑坑一汉化模型的隐雷。早期我图省事用了一个汉化过的模型骨骼名是中文的。套日文标准动作时上半身勉强能对上因为中文版把上半身就叫上半身但センター被翻译成了中心导致整个动作在原地播放人物没有任何位移。当时我以为是动作本身就没位移查了半天才发现是名字问题。坑二全角半角假名。有个模型的手指骨用了半角假名 而标准动作是 ひじ。字符数一样、长度一样肉眼完全看不出来但匹配就是失败。后来用文本比对工具才发现差别。这类问题建议直接用工具做字符级比对不要相信眼睛。坑三多余骨骼抢占动作。有次我把一根叫 腕 的辅助骨和标准的 左腕 混在一起处理映射表写错了顺序结果动作把整条手臂的旋转全塞进了辅助骨主链骨一动不动手臂看起来像断了一样。后来养成习惯映射表写完先在测试模型上跑一遍确认没问题再用到正式文件上。坑四改完名忘了同步Morph。有些模型的表情Morph是绑定在特定骨骼上的比如眨眼绑在目骨上你改了骨骼名Morph的绑定关系不会自动更新导致表情失效。改名前建议把依赖骨骼的Morph记录一份改完逐个验证。5.3 改名之后的连带检查清单骨骼改名不是改完就完事下面几项要顺手过一遍刚体刚体和JointPMX的物理刚体是绑定到骨骼上的改了骨骼名刚体的绑定关系一般还在因为绑定的是索引不是名字但如果你的工具重建了骨骼顺序索引就乱了物理会炸。改完名务必载入MMD看一下头发和裙摆有没有乱飞。Morph的骨骼绑定如上文所说涉及骨骼驱动的Morph要重新验证。显示表示枠显示枠是MMD界面上骨骼的显示分组改完名后分组里的引用可能失效导致某些骨头在界面里显示不出来虽然不影响动作但操作起来很别扭。IK链的关联改过足IK或者脚踝骨名字后IK链可能断掉脚踩地面的约束就没了。这个要在PMXEditor的IK面板里重新确认一遍。6. 我个人在这件事上的几点体会做了这么多次模型移植我最大的感受是骨骼名对照这件事80%的时间花在排查上只有20%花在改上。与其拿到文件就急着改名不如先把两张清单列清楚把症状先定位到具体哪几根骨头再动手。盲目全改一遍往往是把原来的问题改成了新问题。再分享一个小习惯每做一个模型我都会把它的骨骼名清单导出成一份文本命名成模型名_bones.txt存档。日后再遇到同源模型或者想复用动作时直接读这份清单不用再开编辑器翻。攒上十来个模型之后你会发现很多模型用的是同一套骨骼体系改名的活儿基本可以复用效率提升非常明显。还有一点遇到名字对不上但差异很小的情况不要凭感觉判断一定要用工具做字符比对。这一步多花两分钟能省掉后面半小时的抓狂。我现在的流程是固定的提取名字 → 文本比对 → 确认差集 → 生成映射表 → 测试验证五步走下来基本不会翻车。最后提一句关于PmxTailor这类工具的用法它的价值不在改单次而在可复用。把映射表当资产攒起来比每换一个动作就手动改一次骨骼名长期看省下的时间非常可观。