SuperAPI AI 工具集

ammo-mmd-physics-hacks

设计与创作

查看项目

更新于 10-15 21:41

技能介绍

用途:解决 WebGL 端 MMD 模型在 Ammo.js 物理下的拉扯炸模、旋转撕裂、投石机效应、平躺坍塌与卡死冻结等极端工况。

主要能力与处理思路:

  1. Mode 2 空间锚点撕裂:撤销强制降级为 Mode 1 的做法,用 setCenterOfMassTransform 同步 Motion State,并调用 body.setActivationState(4) 关闭休眠。
  2. 幽灵穿透:停止对 Mode 0 骨骼同步使用 setWorldTransform(),改喂 body.getMotionState().setWorldTransform(),让 Bullet 在 stepSimulation 中推导动能。
  3. VMD 瞬移跳变:在 update(delta) 收尾遍历动态刚体,对 LinearVelocity > 50.0 或 AngularVelocity > 30.0 按比例归一化缩减。
  4. 平躺挤压:把全局垂直重力通过 quaternion 反算为局部向脚重力,并让地板旋转矩阵绑定 mesh.quaternion。
  5. 高密度刚体重叠:ERP 调至 0.8、Stiffness 增强 2.5 倍、CFM 调至 0.015;身躯刚体保持 scale = 1.0、margin = 0.05,衣服/头发刚体为 0.9、margin = 0.01。
  6. WASM 底层:避免在循环中直接 new Ammo.btVector3(),改用单例向量重复 setValue();不用 btStaticPlaneShape 当地板,改用 100x1x100 的薄 btBoxShape 并将 Origin Y 轴下移 1。

使用限制:不建议通过调高 numIterations(如 100)解决物理问题,会拖垮单线程 60FPS;应优先用锁死、降级、同移、限速等代码空间钳制方式。具体集成步骤与版本兼容性暂未提供。