Files
workinf_Blender_Wasm/docs/status/N-018.md
2026-08-14 18:08:29 -04:00

4.0 KiB
Raw Blame History

N-018 Physics 与 Simulation

状态:BLOCKEDfamily capability、settings/dependency/cache manifest、错误帧门及浏览器自有 BTF1 播放会话已落地desktop bake playback、WASM solver 和 bake job 未实现)

已验证切片

  1. N-018-ARigid Body、Soft Body、Cloth、Fluid、Dynamic Paint、Particle、Hair 使用固定枚举能力清单metadata/cache manifest 为 LOCAL_BOUNDEDcache playback、 local solver、server job 均保持 BLOCKED
  2. N-018-B部分PhysicsSimulationManifestIR 绑定 owner Object、settings SHA-256、 有界设置摘要、依赖 stable ID 和 desktop bake cache系统依赖环、重复依赖和超预算拒绝。
  3. N-018-Ccache 绑定 source blend/settings/input/cache SHA-256、帧范围和实际已缓存帧 COMPLETE 必须逐帧连续frame seek 只返回精确命中帧,禁止复用相邻错误帧。
  4. Simulation cache 在 Worker restart 后重新验证整包;帧级读取在 OPFS 使用目标 range、 IndexedDB 使用有界 slice并再次校验该帧 SHA-256越界帧返回 SIMULATION_CACHE_MISSING
  5. 单 manifest 上限 4096 systems、每系统 1024 dependencies、256 settings/64 KiB、 100k frames单帧 512 MiB、整包 16 GiB分配和 range 计算前检查安全整数及预算。
  6. authoritative Main reader 扫描真实 Rigid Body、Soft Body、Cloth、Fluid、Dynamic Paint、 Particle/Hair 数据;只输出实际存在的 system绑定 owner stable ID、有界 settings、collision dependency 和浏览器可复算 SHA-256。当前 fixture 实证覆盖禁用 Cloth、Soft Body 和 Collision 依赖save/reopen 保持一致;未用合成 system 填充其余 family。
  7. N-018-C浏览器格式边界版本化 BTF1 二进制帧可解码有界 object transform校验 frame、对象 stable ID、精确字节长度、有限 translation、单位 quaternion、非零 scale 和重复 ID。该格式仅是浏览器自有的 cache playback primitive不是 Blender desktop bake family payload因此 capability inventory 的 cachePlayback 仍为 BLOCKED
  8. N-018-C预览适配精确帧匹配的 BTF1 可不可变地映射到 SceneIR preview按 stable object ID 更新 translation/quaternion/scale、Euler、local/world matrix 和当前帧;未知对象、错帧、 层级环或缺父对象拒绝。该适配只证明浏览器自有 transform cache不改变 desktop family bake playback 的 BLOCKED 状态。
  9. N-018-C浏览器播放会话BTF1 支持有界范围顺序播放、精确 seek 和 cancel新请求会使旧 异步读取失效,即使底层读取器忽略 AbortSignal,迟到结果也不会覆盖当前预览。每帧都从同一 不可变基准 SceneIR 应用绝对变换,避免逐帧累计误差。
  10. N-018-C持久缓存集成两帧真实 BTF1 经过 content-addressed Simulation cache 写入,终止 Storage Worker 后由新 Worker 精确 range 读取第二帧并应用到 SceneIR帧 hash、magic、offset 和最终 object translation 均验证。

仍然阻断

  • N-018-A/B从真实 Main 提取完整 family settings、collection/effector/collision 依赖。
  • N-018-Cdesktop bake payload 的逐 family decoder、正式 viewport UI 播放控制和 100 帧 golden浏览器自有 transform frame decoder/SceneIR 播放会话已完成但不替代 Blender bake。
  • N-018-D逐 family WASM solver 初始化、线程、内存和确定性验证。
  • N-018-Ebake start/cancel/commit、服务端 job、故障恢复、进度与 UI。

验收

WEB_TEST_PORT=5204 npm --prefix web run test:e2e -- --grep "N-018 physics"
npm --prefix web run test:simulation-cache
npm --prefix web run test:physics-main-reader

本轮在 Chromium 隔离端口复验 content-addressed cache 的 Worker restart、目标帧 range read、 帧 SHA-256、BTF1 seek/play/cancel 和迟到结果抑制通过;没有 desktop bake family decoder 或 solver因此 desktop playback/solver/bake 状态不变,继续为 BLOCKED