Files
workinf_Blender_Wasm/docs/status/N-018.md
2026-08-12 19:31:41 -04:00

47 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# N-018 Physics 与 Simulation
状态:`BLOCKED`family capability、settings/dependency/cache manifest 与错误帧门已落地;
cache playback、WASM solver 和 bake job 未实现)
## 已验证切片
1. N-018-ARigid Body、Soft Body、Cloth、Fluid、Dynamic Paint、Particle、Hair
使用固定枚举能力清单metadata/cache manifest 为 `LOCAL_BOUNDED`cache 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`
## 仍然阻断
- N-018-A/B从真实 Main 提取完整 family settings、collection/effector/collision 依赖。
- N-018-Cdesktop bake payload 的逐 family decoder、与 depsgraph/viewport 的 frame playback
连接和 100 帧 golden浏览器自有 transform frame decoder 已完成但不替代 Blender bake。
- N-018-D逐 family WASM solver 初始化、线程、内存和确定性验证。
- N-018-Ebake start/cancel/commit、服务端 job、故障恢复、进度与 UI。
## 验收
```bash
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 门通过;没有 desktop bake family decoder 或 solver因此 playback/solver/bake 状态
不变,继续为 `BLOCKED`