Files
osmWorkflow/.trellis/tasks/archive/2026-08/08-04-add-area-asset-budgets/design.md

40 lines
1.7 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.
# Area asset budgets design
## Boundaries
`scripts/lib/area-config.js` 归一化配置的 `budget``scripts/glb-digest.js` 承担 GLB
结构统计和 source/image 摘要;`scripts/lib/stage-manifest.js` 承担默认预算、覆盖合并、
判定和 warning 文本。`scripts/lib/area-diagnostics.js` 只消费这两个共享事实源,并向
diagnose/check 报告结果。
## Data Flow
```text
config budget + global defaults
-> normalizeAreaConfig()
GLB JSON -> digest() -> usage + source/image summaries
-> evaluateGlbBudget(digest, area.budget)
-> stage manifest summary/warnings
-> diagnose report / check failures
```
预算字段面向用户使用 `glbSizeMb`,内部归一化为 bytes其余计数为整数。有效预算对象应始终
完整,避免 consumers 自己回退默认值。
## Attribution
`digest()` 将每个 node 的 mesh primitives 转为 triangles并按有限、稳定的名称规则分组
building、foliage、roads、water、fountain、other。同一 mesh 被多个 node 引用时source
summary 统计实例化后的渲染 triangles它用于帧渲染复杂度而非 GLB 静态字节。图片条目从
`bufferViews[image.bufferView].byteLength` 读取 embedded bytes并按 bytes 排序。
## Compatibility
没有 `budget` 的区域仍使用当前全局 25 MB / 1000 nodes / 24 images并增加 triangles 和
embedded image bytes 的默认阈值。旧 stage manifest 可被读取;新字段只在后续 Cesium / compress
阶段写入。现有 `check:area` 保持超预算失败。
## Rollback
移除配置归一化、预算评估和扩展摘要即可回退到固定三项预算;旧 manifest 中的附加字段可忽略。