final-status.md 3.1 KB

票 35 本轮最终状态

日期:2026-10-09

已实施

  • 7 个在用 CAD BIM 批次全部完成资产级减面、按材质合并和 Draco 压缩。
  • 新增 tools/city-massing/build-streaming-tiles.mjs:从合并 GLB 再拆为空间小瓦片,streaming-v2 每片最多 20,000 三角、60,000 顶点,粗层 request volume 1500m,细层 request volume 250m。原批次目录保留。
  • 运行配置 public/cockpit/config.json 已切换 7 个精细批次到 streaming-v2。
  • 运行时加载控制器 services/tilesetLoading.js:
    • 只按相机到根 OBB 最近距离做批次判定;
    • 关闭 Cesium 内部会读取相机高度的 dynamic SSE;
    • 相机停止 600ms 才开始新的批次流入;
    • 前一个批次实际内容 pending/processing 完成、tilesLoaded 且稳定后才释放队列;
    • 隐藏且无进行中请求的粗模不再永久占用队列;
    • 处理失败、晚到初始化、重复销毁、事件和 timer 清理;
    • 当前渲染帧没有可见精细内容时,不隐藏粗模。
  • 显存缓存目标从 512/256MiB 收紧到 64/32MiB;Cesium 的缓存目标不是硬显存上限。

资产核验

streaming-city-audit-final.json:

  • 7 批、30,159 栋建筑;
  • 5,956 个 Draco 小瓦片;
  • 40,709,705 个三角形守恒;
  • 95,151,680 个解码顶点;
  • 最大单文件 46,847 顶点,低于 60,000 上限;
  • 每个小瓦片的 Draco 索引、节点变换、request volume 中心、瓦片边界、字节/三角形清单均通过;
  • 跨批建筑 ID 无重复/缺失。

Cesium 原生 request-volume 距离测试:试点 634 个小瓦片、1,268 个范围内外断言通过。

代码回归

  • t35-tileset-loading.mjs:12 个加载/失败/空锚点/当前帧/卸载/晚到结果场景通过;
  • t35-obb-distance.mjs:4 个 OBB 最近距离场景通过;
  • 7 批 verify-lod-district.mjs 通过;
  • node --check:cesiumEngine.js、tilesetLoading.js、mapService.js、两个新工具脚本通过;
  • Blender 导出脚本 Python 编译通过;
  • git diff --check 通过;
  • 8000 已返回 7 个 streaming-v2 根 tileset JSON,HTTP 200。

实际驾驶舱证据与限制

实际 8000 页面可以进入,状态显示 3D Tiles 7 个;调试网络确认 7 个 streaming-v2 根 tileset JSON 和 root-anchor.glb 请求成功。浏览器会话中途出现 session/ref 失效,导致没有获得稳定的“房屋内容加载期间”帧率和长任务样本;当前的性能记录只能证明页面启动和根资产请求,不足以证明靠近后的慢动作已经消失。

因此票 35 仍保持 open,不能宣称最终帧率达标。下一次人工复测应硬刷新 8000,进入场景后靠近城区,确认网络 URL 含 /streaming-v2/ 且出现分片 GLB 请求,同时观察移动/静置两个阶段的帧间隔。

其他限制

  • 项目规则要求本轮未运行 build、dev、serve 或 preview;未启动替代服务器。
  • deck_issue_patch(comment) 因 workspace-write 文件策略拒绝,未直接修改票正文;本独立记录保存全部结果,deck_issue_report 已上报当前处理关系。