Appearance
风力物理注入(WASM Bullet)
系统概览
通过 MmdWasmPhysicsRuntimeImpl.onSyncObservable,在每次 Bullet 物理步进前对所有 Dynamic 刚体施加风力,使头发/裙子等物理部件受风影响。仅 WASM 运行时生效(JS 运行时无 Bullet 物理);Kinematic 刚体(骨骼跟随)不受力,Bullet 自动忽略。
核心职责
wind-physics.ts— 风力订阅/重试/销毁编排、刚体遍历施力
对外 API(节选)
initWindPhysics(runtime)— 初始化订阅(幂等;physics impl 延迟就绪时由retry补齐)retryWindPhysicsSubscription(runtime?)— 模型加载成功后重试订阅(ADR-104 替代原 monkey-patchcreateMmdModel的脆弱做法;省略参数则重试全部已注册运行时)disposeWindPhysics(runtime?)— 指定运行时时只清理该运行时订阅(runtime 销毁点调用);省略时清全部(应用级)isWindPhysicsActive()— 当前是否实际启用风力物理(供 UI 判断 JS 运行时下的提示)
与其他子系统关系
- 依赖
core/wind-utils(getWindVector/isWindActive) - 由
scene.ts创建运行时后调用init,model-loader加载成功后retry - 经
@/core/mmd-adapter的getRigidBodyBundleMap走公开 APIrigidBodyBundleReferenceCountMap.keys()(ADR-192 Phase 2 内化,已脱离私有字段反射) - 风力系数
WIND_FORCE_SCALE = 1.0(ADR-194 从 0.15 调至 1.0,使头发/裙子等 Dynamic 刚体摆动明显);原生刚体走MODEL_WIND_FORCE_SCALE = 5.0+MODEL_WIND_REFERENCE_MASS质量感知(ADR-200)