satellite-roof-delivery.md 4.6 KB

Issue35:卫星屋顶与快速预览(city-regions-v6)

当前实现保留city-regions-v2的113区域所有权、管道粗模专用、最多2区/180内容/96MiB合计估算预算。正式页面仍 http://127.0.0.1:8000/#/cockpit,未创建新页面路由。本轮代码与离线模型生成/检查,按项目规则跳过Web build/debug、server、browser及截图。

加载灵敏度修复

旧排序将活跃区域永久排在新区前,且启动用manifest顺序,而不是排序后的wanted顺序。现用:区域球表面距离 +0.15*球中心距离 -150m活跃滞回奖励排序;更近新区可替换远处旧区。仍只准入视锥附近区域,700m/活跃800m上限,距离不按相机高度开关。

新增细粗预览父层:631个已有cell粗GLB,附对应卫星屋顶图,球体父+GE48/REPLACE→原fineGE0。这些有内容父层不存在空中间就绪旁路。整区所有previewURLs就绪后即可显示预览;真实postRender可见才遮对应全局粗模,不必等待尚未被SSE需要的fine叶。

串行槽在preview完整 +pending/processing0 +tilesLoaded后释放;已活跃区域再开始处理时暂停新准入。精片就绪按同归属REPLACE,细片缺失仍有预览父粗模。tileFailed/tileUnload/pipeline/退出清mask和模型;管道视图仍0detail区域。

同源地图屋顶

  • 来源:本地 D:/GIS/GIS/yuanlingPic3 z19、EPSG3857/TMS,识别PNG/JPEG文件头,不假设扩展名真实格式。
  • 按glTF节点平移→ENU XY→ECEF→WGS84→TMS重投影裁片。north-up JPEG85,UV u=(x-west)/(east-west),v=(north-y)/(north-south),避免二次翻V。
  • 全局粗屋顶atlas最长256px;细粗预览128px;原纯色细模屋顶64px以限制逐片纹理处理。三档均使用同源影像,细层无需由灰顶突然换到不同色顶。
  • 已经有影像的3个near-estate fine assets保持旧URL/哈希,保留高分辨率已验收卫星贴图;墙面材质和所有POSITION/NORMAL/indices完全保持旧资产数据。
  • 图像只绑定原屋顶材质组,不添加模型面或室内。背景地表只是裁片采样范围,实际只显示屋顶triangleUV覆盖的部分。
  • 广域256px的有效米/像素可能较粗,影像本身含阴影/模糊;这不是逐栋实拍BIM,粗精几何/坡屋顶差异仍可能有LOD跳变,不能保证完全看不出混合。

离线验证

实际GLB纹理验证:113粗文件、631预览、3023细文件;共3758纹理atlas,8,257,571个UV顶点最大误差约2.98e-8;来源9646影像tiles SHA256匹配;检查TMS/north-up映射与JPEG/raster哈希。所有模型geometry/indices/normals对源资产一致,非roof材质对象一致;fine↔preview↔coarse区域内容ownership一对一,原near-estate图像资产不覆盖。真实墙面/坡屋顶shader外观尚未浏览器验收。

预算验证:单region最多151内容(含preview父片),最大解码资源估算约87.8MB,低于96MiB;估算包括现有geometry、新UV、preview与fine RGBA8全mip、原near-estate图片mip。图像每张≤256px、压缩≤1MiB、mip≤4MiB。全局113粗内容约9.86MB,粗atlas合计约2.77MBjpeg/25.5MBmip;其缓存独立于细区96MiB调度估算。总数据集图片mip不等于同时驻留GPU内存。

低空纯距离预算测试:350m样例开放2区56总内容/12预览约28.6MB,50m样例2区57总内容/12预览约29.7MB,另低空点2区66总内容/12预览约36.2MB;概况0区,全部pipeline0区。运行额外视锥剔除,模拟不是FPS证据。

分区回归包含最近优先启动、不永久活跃优先、粗先细后、原prefetch完整readiness、新preview就绪不等待未请求fine/槽释放、继续精化不反复恢复旧粗模、预览丢失即恢复全局粗模、failure/unload/视锥移出/pipeline释放和async晚到销毁。T04配置/T21视图及JS语法检查通过。

离线查看了实际输出粗屋顶裁片样本,非驾驶舱画面或浏览器截图。JPEG颜色随光照/影像阴影可能与地面仍有差别。

正式接入与回退

配置使用 /gis/cad-bim/city-regions-v6/coarse-tileset.json + regionManifest:/gis/cad-bim/city-regions-v6/manifest.json。SSE96、并发10/5、管道只粗模、max2regions/180contents保持。

回退只将URL与regionManifest两项改回city-regions-v2,保留代码兼容原无preview元数据,不删除任何原模型。配置被git忽略,需单独部署。issue35保持open;实际响应时间、加载/解码CPU与GPU帧耗时、粗精外观需正式页面确认,当前未测FPS,也不保证绝对无感。