mikumikudance 中文文档 下载 App

MMD 物理碰撞调优 — 解决头发穿模、裙摆卡住

穿模是什么

穿模(Clipping / Penetration)是指两个应该碰撞的物体穿过彼此——头发穿过头、裙子穿过腿、手穿过身体。在 MMD 里这几乎全是物理刚体设置的问题。

好消息是:大多数社区 PMX 模型已经配好物理,新手遇到穿模的概率很低。穿模通常出现在你做了以下操作后:

穿模的三种根源

根源一:刚体体积过大

最常见原因。两个刚体的碰撞体积重叠了,Bullet 物理引擎不知道谁该让谁,结果就互相穿透。

典型表现:

修复:用 PMX Editor 打开模型,找到穿模的两个刚体,缩小其中一个的碰撞体积,让它们不再重叠。

根源二:碰撞组设置不当

Bullet 引擎用碰撞组(Collision Group) 控制"哪些刚体会互相碰撞"。默认设置是所有动力学刚体都在同一组,全互相碰撞。

问题场景:头发丝之间本来不应该碰撞(否则会卡住打结),但默认设置让它们互相碰撞 → 头发"粘在一起"而不是自然分开飘。

修复:PMX Editor 里把互相不该碰撞的刚体分到不同碰撞组。

根源三:关节约束太松

动力学刚体和它"挂着"的骨骼之间用关节约束(Spring/Damper)连接。如果弹簧强度太低:

修复:PMX Editor 里增大关节约束的弹簧系数。

PMX Editor 调优基础

你需要 PMX Editor(PME)——社区标配的 PMX 模型编辑器,免费且只有几 MB。

打开物理编辑器

  1. 打开 PMX Editor
  2. 载入 .pmx 模型
  3. 右侧面板切到「刚体」标签
  4. 可以看到所有刚体的列表和属性

刚体关键属性

属性说明影响
关联骨骼这个刚体跟随哪根骨骼错误会导致刚体乱跑
形状球体 / 长方体 / 胶囊体胶囊体最适合头发丝
半径/尺寸碰撞体积大小最常调的参数
类型Dynamic / Kinematic大部分穿模只涉及 Dynamic
碰撞组属于哪个碰撞组控制和谁碰撞
摩擦系数碰撞时的滑动阻力太低会滑穿
弹性系数碰撞时的反弹太低会粘住

约束关键属性

选中「约束」标签可以看到关节约束:

属性说明
关联刚体 A约束连接的第一个刚体
关联刚体 B约束连接的第二个刚体
约束类型Fixed / Hinge / Spring 等
弹簧系数抵抗变形的力(越大越"硬")
阻尼抑制振动的力(防止一直抖)

快速修复清单

头发穿过头

1. PMX Editor → 刚体标签
2. 找到头部的运动学刚体 → 看它的碰撞体积是不是太大(把头发根包住了)
3. 缩小头部刚体的半径
4. 或找到头发根部的动力学刚体 → 把它移到头顶外面一点(关联骨骼微调)
5. 保存 → 回到 MMD 测试

裙子穿过腿

1. PMX Editor → 刚体标签
2. 找到腿部的运动学刚体 → 缩小碰撞体积
3. 或找到裙摆动力学刚体 → 增大碰撞组间距
4. 保存 → 测试

头发打结 / 互相卡住

1. PMX Editor → 刚体标签
2. 找到所有头发的动力学刚体
3. 把"头部组"刚体分成两组:头部本身 + 头发
4. 设置:头发刚体和头部碰撞组不碰撞
5. 保存 → 测试

物理抖动不停

1. PMX Editor → 约束标签
2. 找到抖动部位的约束
3. 增大阻尼系数(Damping)
4. 或增大弹簧系数(Stiffness)
5. 也可以增大刚体摩擦系数

MMD 全局参数调整

如果 PMX Editor 里调完还是穿模,试试 MMD 全局设置:

物理步进频率

MMD → 设置 → 物理演算 → 物理步进频率(Physics Step):

步进值效果
3(默认)标准精度,普通模型没问题
5-6更高精度,减少穿模
8+最精确,但可能卡

高速动作(踢腿、大甩头)需要更高步进值。

物理子步(Substep)

部分版本支持:把一次物理模拟再分成多步计算。默认 1,有穿模时调 2 或 3。

重力

几乎不改。但如果头发总是掉下来穿模,可以稍微降低重力(比如从 9.8 降到 6-7)。副作用是头发飘得更厉害,可能需要配合增加空气阻力。

用 Blender 物理系统验证

PMX Editor 的物理预览有限。如果你有 Blender:

  1. 用 Blender MMD Tools 插件导入 PMX
  2. 切换到 Blender 的 Bullet 物理模拟
  3. 可以更直观地看到刚体碰撞情况
  4. Blender 的物理调试功能比 PMX Editor 强大得多

什么时候换模型

如果一个模型的物理怎么调都不对(比如头发根在几何上就在头内部),换模型比重建物理快得多。社区好模型太多了——找物理口碑好的(看配布说明里有没有提到"物理调整済み")。

调优顺序建议

  1. 先缩小碰撞体积(PMX Editor)
  2. 再调碰撞组(PMX Editor)
  3. 然后调约束弹簧(PMX Editor)
  4. 最后才考虑 MMD 全局参数

大多数穿模在第一二步就能解决。