40 lines
1.7 KiB
Markdown
40 lines
1.7 KiB
Markdown
# 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 中的附加字段可忽略。
|