MMD 动作不匹配 — 骨骼命名、默认姿态、T-Pose 适配
症状
导入 VMD 动作数据后播放:
- A. 模型整体姿势就不对(手臂飞出去、腿扭成麻花)
- B. 有些部位动了,有些部位完全不动
- C. 动作幅度夸张得离谱(手甩得超过头顶 3 米)
- D. 动作看起来很别扭,像是被"缩放过"
这四种对应不同的原因。
原因一:骨骼命名不匹配(最常见)
症状 B:只有部分骨骼动,部分不动。
原理
VMD 里关键帧的核心数据是:"在帧 X,骨骼 Y 应该在 Z 位置"。
如果模型里根本没有 "骨骼 Y" 这个名字——MMD 找不到它,就跳过这根骨骼的关键帧。结果:
- 模型的某些部位(名字匹配的)动了
- 某些部位(名字不匹配的)不动
骨骼命名差异来源
| 命名系统 | 手臂骨骼名 | 腿部骨骼名 |
|---|---|---|
| 日文(标准) | 腕左 / 腕右 | 足左 / 足右 |
| 日文变体 | 手 / 手 | 足 / 足 |
| 英文 | Arm.L / Arm.R | Leg.L / Leg.R |
| 英文变体 | Hand_L / Hand_R | Foot_L / Foot_R |
| 中文 | 左手臂 / 右手臂 | 左腿 / 右腿 |
MMD 社区里日文命名是最常见的(原版就是日文软件)。如果你的模型是中文命名、而 VMD 是日文命名 → 大量骨骼不匹配。
修复方案
方案一:用改名工具(推荐)
社区有专门的动作改名工具,自动把 VMD 里的骨骼名改成模型的骨骼名:
| 工具 | 说明 |
|---|---|
| Action Renamer | 最流行的 VMD 改名工具 |
| PMX Editor 批量改名 | 也能改模型的骨骼名 |
| 社区改名脚本 | GitHub 上有 Python 脚本 |
基本流程:
- 打开工具
- 加载 VMD 和你的模型
- 工具自动识别骨骼名对应关系
- 确认映射 → 批量改名
- 保存为新的 VMD → 重新导入
方案二:改模型骨骼名
用 PMX Editor 把模型的骨骼名改成 VMD 期望的名字。但这会改模型本身,要小心——其他依赖这个模型名的资产(PMX 预设、其他 VMD)可能受影响。
方案三:找同一作者/同类型模型的 VMD
配布者通常会标注 VMD 适配哪些模型。找明确标注了适配范围的 VMD 最省心。
原因二:T-Pose vs A-Pose 冲突
症状 A、C:模型整体姿势不对、动作幅度夸张。
原理
VMD 的关键帧是基于模型的默认姿势做的——如果 VMD 作者在"模型站在 T-Pose(手臂平伸)"时 K 的帧,但你的模型默认是 A-Pose(手臂斜下):
| 场景 | VMD 作者 | 你的模型 | 结果 |
|---|---|---|---|
| 默认站姿 | T-Pose | A-Pose | 动作整体"别扭" |
| 手臂抬起动作 | 从 T-Pose 抬 90° | 从 A-Pose 抬 90° | 角度完全不同 |
| 手部动画 | 在 T-Pose 基础上动 | 在 A-Pose 基础上动 | 手的位置对不上 |
排查
- 选中模型 → 时间轴回到帧 0
- 看看模型是不是站在 标准 T-Pose:手臂水平向两侧平伸,掌心向下
- 如果不是 → 你的模型默认姿势不是 T-Pose
- 把 VMD 里的骨骼名和 T-Pose 标准名对一下
修复方案
方案一:调整 VMD 的帧 0 姿势(推荐)
1. 导入 VMD 到 MMD
2. 跳到帧 0
3. 手动调整模型姿势到"接近"正确的位置
4. Register 关键帧(全模型)→ 覆盖帧 0 的数据
5. 跳到帧 1 → 播放看效果
6. 如果整体还不对 → 回到帧 0 再微调姿势
方案二:改模型的默认姿势
用 PMX Editor 调整模型的绑定姿态(Bind Pose):
- PMX Editor → 编辑模式
- 选中模型根骨骼
- 手动调整到 T-Pose
- 菜单 → 设为默认姿势
- 保存
这样模型以后加载都是 T-Pose,和社区 VMD 兼容。
方案三:找 A-Pose 专属的 VMD
部分配布者会注明"适配 A-Pose 模型"——搜的时候加个关键词。
原因三:骨骼数量差异
症状 B:有些部位动有些不动,尤其是手指、锁骨、颈椎等细节部位。
原理
简单模型可能只有 50 根骨骼,精细模型可能有 400+ 根骨骼。VMD 作者用精细模型 K 的帧(包含手指、表情、物理辅助骨骼),但你的模型没有这些骨骼 → 跳过。
修复
没有完美的修复方案——VMD 的帧里引用了不存在的骨骼,MMD 跳过是正确行为。
- 最简单:换一个骨骼数量和 VMD 适配的模型
- 可行方案:接受"只有大骨骼动,手指不动",自己手动加手指 K 帧
- 极端方案:给模型加缺失的骨骼(PMX Editor 手动创建骨骼 → 绑定到现有骨骼 → 繁琐但可行)
动作缩放问题
症状 D:动作看起来被放大或缩小了。
原因
VMD 作者用的模型和你的模型尺寸比例不同(有的模型 1.6 米,有的 2 米)。VMD 的平移数据是绝对数值 → 模型小的看起来动作夸张,模型大的看起来动作缩小。
快速修复
MMD 里:
- 选中模型 → 右键 → 缩放
- 调整模型大小让它看起来合适(配合动作的幅度)
- 或者 VMD 导入后整体平移关键帧
精确修复
用改名工具同时调整平移比例。部分高级工具支持:
- 批量缩放所有位置关键帧
- 按 XYZ 轴分别调整
导入后立即做的检查
1. 跳到帧 0 → 姿势是否合理(不是扭麻花)
2. 跳到帧中间 → 动作是否流畅自然
3. 跳到高潮帧 → 手臂腿部姿势是否正确
4. 播放 10 秒 → 整体节奏对不对
5. 看有没有部位没动 → 骨骼名不匹配
社区实用套路
套路一:同模型的 VMD 直接用
你用的模型(比如初音 Append)在配布时通常会附带推荐 VMD 列表——用同一个配布者推荐的 VMD,兼容性最好。
套路二:找"动作包"而不是单个 VMD
社区有很多动作包——一个压缩包里包含模型、VMD、相机数据、舞台、效果。整套用兼容性最好。
套路三:MMM(社区分支)的自动适配
MikuMikuMoving(MMM)社区分支有更好的动作适配能力——能自动识别骨骼名差异并做映射。如果经常遇到动作不匹配,可以考虑转 MMM。