near-estate-delivery.md 8.2 KB

Issue35:GIS大型楼栋补充与近景试点(离线阶段交付)

状态

已生成、配置、离线检查;未获得实际驾驶舱外观/切换/性能验收,issue35保持open。本轮只获准离线模型生成和检查,按项目规则未运行Web build、package scripts、server、browser debug或浏览器截图。Blender预览不等于实际GLB在驾驶舱中的渲染。

当前有效配置与回退

配置 使用 city-regions-v6/coarse-tileset.json + regionManifest。粗模、预览与原纯色精模屋顶对应本地影像,已有near-estate贴图保留;镜头近邻优先、完整预览先显示再精化。最多2区/180片/96MiB资源估算和管道只粗模保留。详细卫星屋顶与快速预览,本轮未验证HTTP或页面。

回退:URL与regionManifest均改回city-regions-v2,仍保留管道只粗模。资产不删,配置需单独部署。唯一入口 http://127.0.0.1:8000/#/cockpit。

最终 tileset / manifest。

13栋来源与观察点

  • 中心6栋:约经度110.3993、纬度28.4463;cad-20562、20556、20308、20534、20301、20293。
  • 西侧7栋:约经度110.3567、纬度28.4593;cad-11179、11204、11154、11167、11192、11395、11386。
  • 依据:测绘GIS足印、既有DEM座落记录、z19本地卫星影像对照;保留footprintENU/positionENU/foundationBottom/heightM/floors,不按外接矩形重定位。
  • 与现有有效批次及其他场景来源做身份/空间重叠检查后选入,不把所有候选计作确证漏栋。
  • 排除:cad-20346包含于20347;27730为院落/多屋顶;4057/4058/4060工业蓝顶且地形高差5.56–8.81m;3544/14165服务或工业体量。
  • 缺失候选1517个≥250㎡、其中955城区,只是审计候选,不是已确认漏建数量。

建模和纹理

LOD0增加窗格密度、浅窗套/凸凹层次、通长楼层线和封闭入口。入口从座落floor_base起算,宽度不再按整条长立面比例膨胀;已用实际生成函数添加入口高度/宽度回归。

屋顶使用本地 D:/GIS/GIS/yuanlingPic3 z19 EPSG3857/TMS影像,ENU重投影裁片,最长边256px;north-up PNG → Blender bottom-up UV → glTF V翻转一次。采样映射与原图哈希可追溯。

影像仅支持屋顶位置/色彩/形态;立面、楼层与高度仍是估算,非照片立面贴图、测绘BIM或摄影测量重建。没有凭空添加阳台/坡屋脊。屋顶影像本身分辨率有限,有模糊和阴影;影像日期及再分发权利未确认。

离线结果

项目 最终试点结果
建筑 / 内容GLB(不含空anchor) 13 / 4
LOD1三角 / 内容字节 2,438 / 59,272
LOD0三角 / 内容字节 27,426 / 1,219,836
两级内容合计字节 1,279,108
单内容最大三角 / 顶点 15,814 / 31,466
硬预算 20,000三角 / 60,000顶点 / 1MiB嵌入raster / 512px单边 / 4MiB RGBA8含mip估算
实际最大单边 / 单瓦片RGBA8含mip估算 256px / 1,277,108 bytes
最终GLB法线 29,864三角检查通过;0退化;最低dot 0.999984897
屋顶检查 10文件、65屋顶检查通过
屋顶映射 13/13图像哈希一致;171采样顶点
最大UV误差 0.00014688450895733451
最终嵌入屋顶影像合计 613,488 bytes

证据:几何/预算、闭合屋顶、影像/UV/依赖闭包、离线作者模型预览。

  • 架构/旧模式均10种屋顶实例通过;最新版架构模式还校验入口不埋地、宽度不超过1.6m。
  • 材质→纹理→影像→采样器按每瓦片引用闭包裁剪重编号,杜绝每分片无条件携带整cell图片。采用2000三角的压力切分形成40GLB,13屋顶映射仍通过、无未引用图片/纹理/材质;压力证据、压力UV。同一屋顶跨多个空间分片时其图片仍会合理重复,不宣称全城全局去重。
  • 独立审查发现主验证器曾漏检材质→texture索引;现已补primitive/material/texture/image/sampler范围及完全引用闭包断言,越界/闲置依赖反例测试通过,最终4GLB和压力40GLB复验通过。
  • 506栋无纹理旧模式106内容结构/闭包回归通过:证据。其最低法线dot=-1,未要求flat-face一致,不是该旧批次法线验收;不配置该回归批次。
  • 新增PNG/JPEG头部尺寸检查、512px单边上限和4MiB/瓦片RGBA8全mip链估算上限;按texture而非仅image计潜在分配,覆盖共享图片但不同sampler的情况。该估算不是完整图片解码或实测GPU内存,驱动开销仍待验收。旧manifest未声明该预算时明确输出null/未验证,不再冒报0。
  • 最终v5/v12已经解码检查全部29,864个LOD0/LOD1三角绕序与每角法线,不依赖旧v2审查。检查发现v4一个细薄LOD1屋顶三角在源GLB中已反向,面积约0.014㎡;提高源Draco position到24bit、分片到20bit后消失,未改变GIS轮廓或简单翻转面。最低dot0.999984897、零退化。不可变旧v4保留为回归反例,调诊脚本diagnose-normal-winding仅作离线证据。
  • 位置精度提高导致最终内容比v4增加182,876bytes(16.7%);没有增加建筑/三角量,不把更高精度误称为零成本。

实例化优化候选(未接入)

按用户要求尝试了可复用资产实例化。当前Cesium支持EXT_mesh_gpu_instancing,但旧streaming cell已经按材质合并,严格候选转换虽产生4,473栋/25,076次实例放置,整体节点和primitive结构没有降低;0个cell同时满足字节更小与primitive不增加。因此实例化候选未接入,不把离线候选冒称FPS收益。当前LOD索引调整为v8,仍复用已有GLB;完整实例化记录见instancing-delivery.md。

连续树证据通过结构与资源检查:30,172栋、3,022粗内容+3,023精内容,单一REPLACE层级,最大内容片19,991三角/47,221顶点。v5保留粗/精内容各自的距离请求球,远处粗片可退出请求;同一局部精模未实际渲染前,运行层仍保留粗模覆盖。

本轮将Cesium默认SSE从64回调至96,并将统一树运行配置的最大距离/加载距离收紧为14km/7km;这是针对卡顿的保守回调,不宣称真实帧率已测得。近景房屋精度不再增加,仅移除房屋库外壳背后的重复实体墙;所有模型继续按外部建筑壳处理,不生成室内房间、楼板、吊顶或室内物件。

离线结构诊断:coarse-structure-diagnosis.json确认v5粗内容为3,022片/约45.35MB压缩载荷,而历史低开销far为74片;Cesium支持EXT_mesh_gpu_instancing,但只适用于真正共享网格/材质,不能把已合并的74个粗GLB自动变成实例。13栋实例化粗模候选输出3片、1,049实例、109,288 bytes,并通过GLB扩展/变换结构检查;它只用于验证技术路径,未接入全城配置。

其他保留风险:结构验证未执行公开加载器的帧遍历、真实请求数、GPU/缓存和FPS;需获准后在正式入口实测。

后续人工/获准运行态验收

  1. 刷新既有驾驶舱 http://127.0.0.1:8000/#/cockpit,两组观察点分别确认新模型确实加载。
  2. 中近景检查窗套、层线、入口、GIS足印/屋顶纹理朝向和DEM遮挡;试点细层request球为包围盒半对角线+250m,不是单纯相机高度阈值。
  3. 远→近→远、冷启动/加载中的fallback、不同地形视角检查;不要以离线截图替代。
  4. 测量请求数、内容字节、帧耗时、GPU/缓存与texture解码负载,记录实际skip traversal有效性。
  5. 用户确认后才关闭issue35。本轮不关闭、不擅自开展Web调试;不对脏工作区做全量提交。