Appearance
物理骨骼桥与每帧注册表
系统概览
与物理后端无关的骨骼读取桥 + 挂件 auto-fit 几何工具 + 单一每帧 update 调度注册表。原 XPBD(TS) 物理栈删除后(ADR-081),将与求解器无关、可跨后端复用的构件抽离到此独立模块,避免「测试物理寄生 MMD 加载主链」的覆辙。本模块不被任何启动期代码 eager 导入,仅作为将来挂载布料 / ragdoll / attachment 时的基础设施备用。
核心职责
physics-bridge.ts— 骨骼世界矩阵/位置读取、挂件几何 auto-fit 推算、PerFrameUpdateRegistry 每帧调度
对外 API(节选)
findRuntimeBone(model, boneName)— 在 runtimeBones 中按名查找(WASM/JS runtime 通用)getBoneLocalMatrix(model, boneName)— 取骨骼局部矩阵Float32Array[16](返回局部矩阵,不含 rootMesh 变换;世界矩阵请走 mmd-adapter.getBoneWorldMatrix)getBoneWorldPosition(model, boneName)— 取骨骼世界位置Vector3autoFitAttachment(anchor, opts?)— 由模型尺寸启发式推算挂件几何(topology / segmentsH/V / innerRadius / length / particleRadius / particleSpacing)PerFrameUpdateRegistry— 单一onBeforeRenderObservable调度多个按 key 注册的每帧回调;dt 做非有限值/后台恢复钳制(上限 50ms)
与其他子系统关系
virtual-skirt.ts引用getBoneWorldPosition/PerFrameUpdateRegistryground-collision.ts间接依赖骨骼读取能力- 求解器内部步进/写回不在此处(随后端语义在具体实现处理)