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