35-city-massing-redo.md 58 KB

35: 重做沅陵县城体块模型(修漏顶 / 贴合地形 / 尺度过目)

进度

屋顶源影像暗部和相邻瓦片色差已量化但不具备自动接入判据;新高清候选继续未配置。四栋pilot离线几何通过,仍待驾驶舱视觉、加载性能及人工验收。

Status: ready-for-agent Blocked by: None Labels: wayfinder:task, ready-for-agent

第五轮准入姿态与精片遍历证据:40合成姿态对比v6大球空洞名额35次/v7实际content球0次;约470m原64/39改78/77,30contents/1.94MB估算。安装版BaseTraversal10近景region样例精片待载保留14次preview选择、ready有10次fine选择、fine失效回退同preview;不发送请求/不解码GLB/不测GPU。假设FOV60deg、canvas1440×810、不含active历史,实际v7画面/FPS仍未通过。

维护者新增验收依据

  • 屋顶:优先保留本地最高z19源像素,再做可追溯轻微处理;不把锐化或插值声称为新增真实细节。高清资源必须继续满足小瓦片/分区预算。
  • 精模:以正面样例(110.40957689672715,28.4430329383677)的窗、层次、屋面等细节质量为目标;GE0或已有窗点不自动等于接受。保留真实足印与楼体差异,统一质量而非全城套同款。
  • 反面小区:(110.40570023361066,28.434788752462875)要求规则楼栋与高度关系恢复,可研究整体基础后逐栋生成;阴影可作定性高层依据,不能独自证明精确层数。不得用小附属房代替主体,不盖住楼间道路与空隙。
  • 维护者明确反馈“卡顿基本解决、渐进加载很不错”:当前使用体验已接受,后续提高细节时保留现有预算/加载策略。代理没有GPU/FPS实测,不把用户体验接受改写为客观测速完成。

人工介入判定与当前下一步

当前类别是可代理推进的运行态验证任务:shader编译阻塞已修复,浏览器验证已获授权,不需要用户改代码、开新服务或自行查错。仍有代理应完成的region后台状态、低空性能和失败回退复验,先保留ready-for-agent;不能仅因shader恢复就转交人工签全部通过。

技术恢复后才转为需人工测试/判断类决策:真实房屋样式、卫星屋顶色彩和粗精混合自然度、低空横看等待是否可接受,须维护者本人裁定;AI负责证据采集和边界/异常回归,不能替代签署视觉接受结论。

当前city-regions-v7引用v6已有几何/纹理,源元数据IDs为30,159+13=30,172;该对账本轮未解码GLB或证明全部ID实际渲染。48,425栋是含乡村的历史导出底册,乡村不加载按用户决定执行。面积估层已接受,非新阻塞。只有http://127.0.0.1:8000/#/cockpit为正式验收入口。

最初浏览器验证与完整回顾保存失败历史;shader修复与真实复验证明渲染已恢复。下一步代理继续粗精/分区后台、冷/热加载/失败卸载和真实性能验证,再由维护者裁定视觉接受;本票不关闭。

仅用户亲自执行的验收清单(技术恢复后)

  1. 在正式入口归位,判断卫星屋顶颜色/方向是否自然、是否消除了灰顶死板感;每项给接受/不接受。
  2. 连续拉近并横看中心6栋(110.3993,28.4463)与西侧7栋(110.3567,28.4593),判断粗→预览→精的空档、闪烁、色差、漂浮/漏顶/错位是否可接受;拒绝时标位置/视角。
  3. 在自己实际硬件上低空横看、跨区/快速缩放往返,裁定等待和卡顿是否影响使用;AI采集CPU/GPU/FPS和region数量,不要求用户写诊断脚本。
  4. 管道→地面往返,判断只粗模半透明参照是否适合看管线;AI负责证明0精模准入和释放,无需用户从画面猜测后台。
  5. 全部客观技术闸门通过后,明确签署当前城区交付视觉接受与容许缺陷。失败保留open并交代理整改,不以历史97%或离线指标自动关闭。

本轮不包含新BIM/GIS生产、室内、乡村恢复、新测试路径或业务接口改造。

目标与认领

继续重做被维护者两次否决的房屋模型。2026-09-24 明确反馈:地形穿透仍在;需按顶视卫星图逐栋建模,非特写近景也要有房屋样貌;允许调用本地 Blender / 3ds Max,同类模型复用。沿用本会话认领,不另开重复票。

当前实现是 地形遮挡修复 + Blender 房屋库 + 影像足印示范街区。不是完整县城交付,也没有获得维护者视觉验收。

历史阶段记录(原97%,非当前验收比例)

旧版 90% 结论撤回。穿透问题已完成真实渲染回归;Blender资产库、城市覆盖底册、规则小区高置信度样片以及三套空间LOD树已完成。2026-09-29 按维护者三条反馈重做旧城生成:旧城不再沿道路造房(道路改为纯排除几何),改为只接受 OSM 建筑面与 z19 卫星屋顶分割足印;所有模型强制落在主场景区内(新增 primary-area.mjs 统一裁剪/包含契约 + 6 项测试);样式由 8 种已认可变体按来源建筑确定性分配,不再是整城统一橙色尖顶。当前经 verify-city-models.mjs 验收:主场景区外 0、交通道路上 0、居民地掩膜外 0。

2026-09-30 找到权威建筑来源,影像分割方案已被取代。 按维护者要求先取 GIS 建筑数据:本地此前只用过 OSM 的 169 个建筑面,但 D:\GIS\ArcGIS\yuanling\ 下有两份 1:500 测绘 CAD 图(沅陵20240110.dwg、沅陵20240510.dwg),其 JMD(居民地)图层含 60,771 个房屋面,另有 泵站厂房/BYQ/KZD/WSL/YSL 等专业图层。用本机 ArcGIS Desktop 10.8 的 arcpy 转成 GIS 后实测:主场景区内 60,744 个房屋轮廓,41,101 个规整四角矩形、19,643 个 L 形/天井等复杂外轮廓;1:1 z19 影像对照显示轮廓精确贴合屋顶(含街面进深、天井、组合体量),精度显著优于卫星分割(后者只能给旋转矩形)。面积中位 17.1 m²、p75 68.5 m²、p95 210.4 m²;37,151 个落在既有居民地掩膜内,其余 23,593 个为掩膜外村庄/散建。数据缺失:注记 54,663 条里只有 10 条带结构类型,层高需另行估计。

2026-09-30 BIM 管线已建立并跑通(维护者确认"先尝试制作")。 链路:prepare-cad-bim.mjs(足印→ENU、城区/乡村分级、按面积估层数)→ sample-terrain-offline.mjs(原始量化网格 DEM 采样)→ seat-cad-bim.mjs(平地/台基落地 + 轮廓有效性校验)→ assemble-cad-bim.py(Blender 导出空间 LOD 树)→ verify-lod-district.mjs。

分型策略:足印矩形度 ≥0.85 且尺寸落在 asset-fit.json 窗口内的用已认可精细资产(带窗、阳台、屋面),其余按真实测绘轮廓挤出体量棱柱——不再把 L 形/天井强行套成矩形,这正是此前"误差很大"的主因。层数按足印面积估(测绘注记不含可用层数)。

计划量与座落:足印 60,744 → 建模 54,455(精细资产 13,554 / 体量 40,901;城区 33,054 / 乡村 21,401;6,289 个 <4 m² 噪点跳过)→ DEM 座落后 48,425 栋(平地 46,934 / 台基 1,491;36 个自相交/塌缩轮廓、5,772 栋因高差超出合规台基而排除并记录原因)。

城区 BIM 已 100% 导出(本轮完成,6 批次全部通过验收):全量 48,425 栋单次导出体量过大(LOD0 逾 880MB 时被取消、无完整 manifest,未作为交付),改为 select-cad-bim-batch.mjs 按 tier/掩膜确定性切批(支持 --exclude 传入此前批次 manifest 去重;修掉 --key value 空格分隔参数解析 bug),每批 8,000 栋以内、--grid 16 --coarse-grid 4。六批明细:

批次 目录 导出 细分片/粗父 LOD1 LOD0 验收
1 试点 lod-pilot 2,942 68/9 24.0MB 77.3MB passed
2 lod-batch-urban8000 7,851 68/9 33.9MB 132.3MB passed
3 lod-batch-urban8000b 7,712 70/9 31.7MB 136.8MB passed
4 lod-batch-urban8000c 7,590 70/10 32.0MB 121.3MB passed
5 lod-batch-urban-final 5,867 65/11 29.7MB 114.5MB passed
6 尾批 lod-batch-urban-tail 506 23/3 0.9MB 1.1MB passed

去重后城区覆盖 29,755 / 29,755 = 100%。体量棱柱按真实轮廓挤出,L 形/天井/街面进深保留;精细资产用于矩形度高的房屋。第 6 批 506 栋是各批资产窗口装不下的矩形,改按真实轮廓挤出(精度反而更高),不再硬套资产。

乡村 3 批(全部通过验收):lod-batch-rural1(7,820 栋,LOD1 35.4MB/LOD0 144.5MB)、lod-batch-rural2(7,658 栋,LOD1 35.1MB/LOD0 131.0MB)、lod-batch-rural3(2,788 栋,LOD1 20.3MB/LOD0 64.2MB),乡村房屋按真实轮廓挤出为主,辅以可承载的精细资产。

全场景 CAD BIM 汇总:城区 29,755 栋 100% 导出,乡村 18,266 栋分三批导出;加上 404 栋资产窗口兜底为真实轮廓体量后,去重覆盖 48,425 / 48,425 = 100%。共 10 个批次,每批通过 verify-lod-district.mjs;LOD0 合计约 923MB。

修掉的导出器缺陷(子代理首版遗留、由本人定位并修复):① 棱柱墙面四边形被加入两遍且第二遍反向绕序,每条墙边关联 4 个面、网格非流形,recalc_face_normals 无法定向,细长轮廓体积自检误判"内外翻转"——去掉重复面后恢复;② 体积自检与棱柱顶点原先用绝对 ENU 坐标(离原点约 2 km,mathutils 单精度),改为按 positionENU 构建局部坐标并加对象位移,自检数值稳定且导出节点位移与计划一致;③ 体量建筑原先额外生成"外接矩形埋地基础",与棱柱侧面共面闪烁、并在 L 形/细长轮廓上伸出建筑之外——体量棱柱已下探到 foundationBottom,故只对精细资产保留独立基础;④ 材质索引按三角面数而非面数填写,已改为"n 个墙面 + 两个顶底盖"。

剩余事项已按 2026-10-08 维护者决定收敛:层高保留按足印面积估算,不再作为阻塞;需解决全量 10 批次约 923MB 的运行态加载压力,并在真实驾驶舱验收贴地、遮挡、尺度及墙体/屋顶/门窗样式。

模型审查入口(辅助):preview.html#cad-bim 可快速检查 CAD BIM 批次几何,但不作为最终验收;最终外观与运行态验收在实际驾驶舱 http://127.0.0.1:8000/#/cockpit 完成。

已核验的根因

  1. 遮挡是深度配置问题,不是高程误差的自然副作用。 实际 createViewer() 未开启 globe.depthTestAgainstTerrain。在不透明球面/本地 DEM 下完全埋入的红色 GLB 仍显示 2916 像素;仅开启该项后为 0。已在 Viewer 创建和视图图层切换时保持开启;地下管线透视仍由显式 globe.translucency 控制。
  2. 旧坡屋顶存在缺面/重叠三角形。doubleSided 和法线自洽检查不能证明屋顶闭合。
  3. 旧落地检查读同一份插值网格与自报 zBase,检查固定 ±6m 方形而非旋转后的实际足印;64×64 网格实际约 62×53m,不是声称的 27m。不能叫逐栋 DEM 实测。
  4. 旧裙边把楼体连屋顶一起降低 4m,导致两层房屋在平地仅露出约 2.2m 外墙。旧足印还被轴对齐外接框替代。
  5. 旧渲染探针把 range/pitch 作为 goHome(options) 的参数传入,实际没有改变预设距离;旧截图文件名中的“2400m/1200m”等不能作为视距证据。

验收与本轮证据

  • 明确并修复地形遮挡设置:cesiumEngine.js 默认与图层切换保持 depthTestAgainstTerrain=true。
  • 地面/管线透视分开证明:tools/city-massing/verify-occlusion.mjs 在实际本地 DEM 场景验证默认地面0红像素、关闭深度2916、深度开启0、管线半透明2916、回地面0。负对照能复现原问题。
  • 新房屋基础壳/屋顶不靠双面掩盖:Blender 库的边/点流形、绕序、正体积、导出索引与法线检查通过;删除屋顶面、反转屋顶壳的负例被拒绝。适用于独立实体壳,不宣称是无相交 CAD 并集。
  • 加入可辨识房屋细节:凹入窗、玻璃、窗框、门、雨篷、阳台栏杆、瓦片/屋檐、女儿墙和退台。8 个真实楼层/尺寸变体,Z 不拉伸伪装层数;有 LOD0/LOD1 与单独地下基础。
  • 示范街区不用随机填充:31 个原始 OSM 近矩形轮廓 + 12 个从本地影像逐栋描绘的屋顶。保留来源、朝向、像素与地理坐标。
  • 实际旋转足印边界和内部按 ≤5m 间距直接向原始 DEM provider 采样,共 2531 点;缺数据就失败,无固定高程补值。
  • 楼体与基础分离:首层在该模块采样最高地表下0.25m,基础单独下延至最低地表以下3m。采样高差>2.5m时排除,不造高台。当前最高可见基础约2.19m,未证明采样点之间绝对零悬空。
  • 实际 GLB 导出校验:37 个具名节点经完整 glTF Y-up→ENU→ECEF 变换,足印锚点误差最大0.0124m(相对规划,不是测绘精度);基础与原始 DEM 控制点相交、屋顶有可用高度。横移10m/抬高5m/X缩放20%的负例均失败。
  • 完整县城覆盖和全场景“远景+中近景达标”:2026-09-29 已把旧城从“道路分组近似”换成来源足印驱动:z19 卫星屋顶分割 6,000 个足印(掩膜 65/66/126 可信,63/130 经 1:1 对照判读不可信已排除)+ 169 个 OSM 建筑面;生成 5,201 个来源模块,落地导出 4,601 个(3,359 栋来源建筑),319 个细分片 + 39 个粗父节点。仍不是全城逐栋:2,991 个模块在落地阶段排除(DEM 高差、资产比例无法承载、道路/水体/碰撞),掩膜外建成区无足印来源保持空缺,regular-estate 有 5 处影像描绘屋顶与 OSM 巷道互相矛盾待人工判定。
  • 建筑严格限制在主场景区内:新增 tools/city-massing/primary-area.mjs 作为唯一裁剪/包含契约(clipFeatureToBounds 对道路用 bboxClip、对建筑面用 intersect),city-atlas.mjs 与生成器都改用它;primary-area.test.mjs 6/6 通过;verify-city-models.mjs 对三套导出树实测主场景区外 0、交通道路上 0、居民地掩膜外 0。
  • 道路旁误放与小区错位修正:旧城生成器不再以道路为建房依据(道路仅作 3.5 m 排除走廊),模块必须完整落在来源足印内;regular-estate 的 5 处影像描绘屋顶与 OSM residential 巷道重叠(15%–55%)作为 sourceConflicts 如实记录,未擅自删楼或改路。
  • 房屋样式丰富:旧城四种体量族 × 8 个已认可变体全部投入使用(house-2f 1,316 / house 1,403 / house-4f 1,391 / slab 52 / slab-4f 65 / midrise 153 / midrise-8f 178 / midrise-wide 43),屋顶与外墙材质按来源建筑哈希在 terracotta/light-terracotta/slate/light-slate 与 cream/ivory/sand 间轮换,取代原先整城统一橙色尖顶。
  • 屋顶与真实足印完全一致:分割输出是最小外接矩形,不表达 L 形、天井、屋脊;贴邻无阴影分隔的两栋会并成一栋;暗屋顶会漏;位置不确定度约 1–2 px(0.3–0.6 m)。不是测绘几何。
  • 所有接缝檐口/阳台不相交:长条模块相接处尚需专门检查和连栋屋檐设计。
  • 复杂坡地足印定制和全部纳入:坡地已分三档处理(平地直接落地、缓坡用 ≤3.2 m 且不超过楼高 40% 的石砌台基、更陡的按实测坡向切台阶),当前 4,110 平地 / 361 台基 / 317 台阶;仍有 2,991 个来源模块因高差超出这些档位或资产比例无法承载而排除并逐条记录原因。
  • 形成空间LOD树产物:district/lod-preview(37单元,LOD1 7.04MB/790,296三角,LOD0 10.04MB/1,094,016三角)、city/regular-estate/lod-preview(15单元,LOD1 5.35MB/314,640三角,LOD0 8.12MB/449,424三角)、city/oldtown/lod-preview(4,601模块、319细分片、39粗父节点,LOD1 124.5MB/30,913,288三角,LOD0 662.6MB/43,942,492三角)。三棵树均通过 verify-lod-district.mjs 静态回验;oldtown 体量已大幅上升,运行时性能尚未复测,不能据此声称通过。
  • 接入显式模型照明契约:map.tilesets[].lighting:true 归一化后,Cesium按tileset地理包围球配置稳定局部DirectionalLight与IBL;默认配置仍关闭模型,不改变无模型部署。tileFailed同步捕获内容阶段错误。
  • 统一参数化与完整性能验收:生产配置仍为空;oldtown 从 1,436 单元增至 4,601 模块后 LOD0 已达 662.6MB,必须重新实测运行态加载与帧耗时,不能用旧的局部读数代替。详细历史记录见 .scratch/cockpit-shell-panel-layout/verify/artifacts/t35/runtime-lod/report.json(该文件描述的是改造前的旧树,已过期)。
  • 用户按实际场景确认外观;主应用正式照明/性能验收与最终部署。

输出与复现

权威建筑来源(2026-09-30 新增,取代影像分割作为建筑几何)

  • tools/city-massing/convert-dwg-to-gis.py:用 ArcGIS Desktop 10.8 的 arcpy 把测绘 DWG 转成文件地理数据库并盘点图层(CAD 无坐标系,按 CGCS2000 3 度带 GK CM 111E / EPSG:4546 定义;CADToGeodatabase 必须给参考比例,本图取 1:500)。
  • tools/city-massing/export-cad-layers.py:按 CAD 图层名取出要素、定义坐标系、投影到 WGS84 输出 SHP;跳过 MultiPatch(三维重复几何)与 Annotation(文字框)。
  • tools/city-massing/cad-shp-to-geojson.py:把 SHP 转成只含主场景区的 GeoJSON,并统计面积分布。
  • 产物:city/cad-buildings.geojson(60,744 个房屋轮廓,SHA256 4266B3EC…)、city/cad-building-labels.geojson(54,663 条注记)、city/cad-extract-report.json。
  • 复核:tools/city-massing/verify-cad-buildings.mjs → city/cad-buildings-z19-core.png(1:1 影像 + 轮廓描边,本人已读图确认贴合)、city/cad-buildings-overlay.png、city/cad-buildings-core.png。

复现命令(路径含中文,故先复制到 ASCII 临时目录):

$tmp="$env:TEMP\city-dwg"; New-Item -ItemType Directory -Force -Path $tmp | Out-Null
Copy-Item 'D:\GIS\ArcGIS\yuanling\沅陵20240510.dwg' "$tmp\yuanling-20240510.dwg" -Force
& 'C:\Python27\ArcGIS10.8\python.exe' tools/city-massing/convert-dwg-to-gis.py "$tmp\yuanling-20240510.dwg" "$tmp\cad-20240510.gdb" 500
& 'C:\Python27\ArcGIS10.8\python.exe' tools/city-massing/export-cad-layers.py "$tmp\cad-20240510.gdb" "$tmp\shp" JMD
& 'C:\Python27\ArcGIS10.8\python.exe' tools/city-massing/cad-shp-to-geojson.py "$tmp\shp" tools/city-massing/city "110.328749941417,28.3917230659234,110.465779226663,28.4913038992907"
node tools/city-massing/verify-cad-buildings.mjs

注:city/cad-building-outlines.geojson(43MB,JMD 线要素)与多边形重复,为控制仓库体积已删除,需要时按上面命令重新导出。

影像分割(已被取代,保留作对照)

  • tools/city-massing/house-library/house-library.blend、library.json、独立 GLB 和 preview.png:房屋资产库(8 个变体,已被维护者认为单栋质量基本够用)。
  • tools/city-massing/asset-fit.json:足印模块 ↔ 资产变体的唯一缩放窗口契约,生成器与 Blender 导出器共用,防止两段各自放宽标准。
  • tools/city-massing/primary-area.mjs + primary-area.test.mjs:主场景区裁剪与包含的单一契约(6 项测试)。
  • tools/city-massing/segment-imagery-footprints.mjs + city/imagery-footprints.geojson + imagery-footprints-report.json:z19 卫星屋顶分割(6,000 足印,阈值与逐掩膜可靠性写在报告里)。
  • tools/city-massing/verify-imagery-footprints.mjs + city/imagery-footprints-verify.png:1:1 卫星底图对照图,用于人工判读足印是否真的压在屋顶上。
  • tools/city-massing/generate-oldtown-fill.mjs:来源足印 → 模块计划(含 sources 与逐条 excluded 原因)。
  • tools/city-massing/seat-oldtown.mjs:平地/台基/台阶三档落地,terraced 记录台阶切分。
  • tools/city-massing/verify-city-models.mjs + city/city-model-verification.json:主场景区/交通道路/掩膜/来源验收,并把无法自动判定的来源冲突单列。
  • tools/city-massing/draw-model-coverage.mjs + city/city-model-coverage.png / city-model-coverage-core.png:生成足印叠在卫星底图上的覆盖对照。
  • tools/city-massing/district/generated/coverage.json、geometry-verification.json:示范街区的来源覆盖与 GLB 坐标检验。

本地工具:Blender 5.2.2 LTS 位于 D:/Steam/steamapps/common/Blender/blender.exe,批处理制作与导出成功。3ds Max 2024 批处理探针未进入脚本就绪状态,本次已停止,未声称用 Max 制作成功。

独立审查页:http://127.0.0.1:8092/preview.html(serve-review.mjs,只监听本机并复用8001的引擎/GIS)。不写入生产产物。旧 map.tilesets 已置空;新街区只通过审查入口展示,未擅自正式启用。

渲染与回归

  • 本轮实际跑通的验证:primary-area.test.mjs 6/6、oldtown-geometry.test.mjs 5/5、verify-lod-district.mjs 三棵树全通过、verify-city-models.mjs passed:true(主场景区外 0 / 交通道路上 0 / 掩膜外 0,5 处来源冲突如实列出)。
  • 离线视觉对照:city/imagery-footprints-verify.png(1:1 卫星底图 + 足印描边)与 city/city-model-coverage-core.png(生成足印压在城市核心卫星图上)已由本人读图判读:足印落在屋顶、街区内、河岸与山体保持空白。
  • Cesium 运行态:审查页 http://127.0.0.1:8092/preview.html 仍在,但它依赖 8001 的 dev 服务取 Cesium;本轮 8001 未在运行,因此没有重新取得运行态截图或帧率。项目规则禁止擅自启动 dev/调试服务,故运行态验收留待维护者开启服务后进行。
  • 未重跑全仓 build;按项目规则不把局部资产实验扩大成自动全仓构建。

视觉与数据限制

房屋外观比旧版实质改善,样式也不再单一,但不能把有窗的详细单元等同逐栋真实建筑复原。楼层与立面是估计;DEM 自身精度、屋顶视差和历史影像错配依然存在。影像分割足印是最小外接矩形,贴邻无阴影分隔的两栋会并成一栋、暗屋顶会漏、L 形与天井不表达,位置不确定度约 0.3–0.6 m。掩膜 63/130 的影像足印已被判为不可信并排除,但这属于人工读图判读,不是自动质量指标。允许保留数值证据,不允许据此重新声称“全城达标”。

2026-09-30 会话核验(独立只读复验,非新实施)

  1. 静态回验复跑通过:对 city/cad-bim/ 下全部 11 个 LOD 批次重新执行 verify-lod-district.mjs,全部 passed:true,栋数与正文逐批一致(pilot 2,942 / urban8000 7,851 / urban8000b 7,712 / urban8000c 7,590 / urban-final 5,867 / urban-tail 506 / dedup 5,138 / unfitted-fallback 404 / rural 7,820+7,658+2,788)。
  2. 审查入口核对:preview.html#cad-bim 的 10 个 tileset 清单与去重账目吻合(dedup 5,138 = urban8000 7,851 − 被其它批覆盖的 2,713)。
  3. 运行态前置确认:serve-review.mjs 与 preview.html 在位,dev 服务 8001 未运行;按项目规则(不擅自启动 dev/调试服务)本轮未取得运行态截图与帧率。
  4. 结论:实施记录属实,维持 97%。剩余三项均为维护者侧动作:① 开 dev 服务后运行态实测(加载量/帧耗时/遮挡);② 层高校准数据来源(测绘注记不含层数);③ 目测验收。
  5. 下一步:维护者开启 dev 服务(8001)→ 打开 http://127.0.0.1:8092/preview.html#cad-bim 目测验收 → 运行态实测达标 + 层高来源落定后,本票即可 100% 关闭。

2026-10-08 真实驾驶舱验收决定与首轮结果

  1. 验收场景改为实际程序:不再以 8092 独立模型审查页作为主要视觉验收入口,改在 8000 的真实 /cockpit#/cockpit 驾驶舱中验收;模型必须与真实地形、影像、相机和照明一起工作。
  2. 层高口径收敛:不要求逐栋恢复测绘层高,保留现有按足印面积估算层数的结果。验收关注每栋楼是否有可辨识的楼房样式,至少包含墙体、屋顶、门窗(精细资产可含阳台/雨篷等)。
  3. 配置已接入:本机 .env.local 新增 /gis/cad-bim 静态挂载,public/cockpit/config.json 已挂入 10 个 CAD BIM 根 tileset;未复制 923MB 资产。
  4. 8000 首轮结果:真实驾驶舱可正常进入,但当前页面报告 3D Tiles 加载失败(Unexpected token '<');进一步核对显示 /gis/cad-bim/lod-pilot/tileset.json 返回的是 Vite HTML fallback,而非 JSON。原因是 8000 进程尚未重启,未读取新增静态挂载配置,不代表 tileset 或模型内容失败。
  5. 下一步:重启 8000 dev 服务后刷新 http://127.0.0.1:8000/cockpit#/cockpit,先核对 CAD BIM tileset 返回 application/json,再进行真实场景的遮挡、贴地、尺度、墙体/屋顶/门窗样式和运行态性能验收。

2026-10-08 真实驾驶舱复测结果

  1. 静态挂载已生效:重启 8000 后,/gis/cad-bim/lod-pilot/tileset.json 返回 200 application/json,内容生成器为 Blender CAD/BIM massing LOD。
  2. 真实程序接入成功:打开 http://127.0.0.1:8000/cockpit#/cockpit,驾驶舱状态显示 3D Tiles 10 个;10 个批次的根节点请求均返回 200,DEM 和本地影像也正常返回 200,原先的 Unexpected token '<' 已消失。
  3. 运行态风险已暴露:全量 10 批次组合约 923MB。尝试在真实驾驶舱继续拉近并切换视图观察建筑细节时,浏览器渲染器出现无响应;因此本轮只能确认“资源接入与根节点加载成功”,不能宣称全量近景性能或墙体/屋顶/门窗视觉验收通过。
  4. 验收结论:层高按现有面积估算保留,不再作为阻塞项;当前票仍保持 ready-for-human / 97%。下一步应先按城区/乡村或批次做分级加载、降低首屏同时加载的 10 批次压力,再在真实驾驶舱逐级验收墙体、屋顶、门窗、贴地和遮挡。

2026-10-08 性能优化实施

  1. LOD/减面策略:Cesium3DTileset 现在启用 skipLevelOfDetail、baseScreenSpaceError=1024、skipScreenSpaceErrorFactor=16、skipLevels=1、maximumScreenSpaceError 默认 24,优先使用低面数 LOD1,近景才请求 LOD0。
  2. 请求与视锥策略:启用 dynamicScreenSpaceError、foveatedScreenSpaceError、cullRequestsWhileMoving、loadSiblings=false;Cesium 自带每 tile 视锥剔除,不在摄像机视锥内的 tile 不进入渲染/请求选择。
  3. 距离剔除:新增批次级 maximumDistance,本机 10 批统一设为 18 km;相机变化时按 tileset 包围球距离切换 instance.show,并在地图销毁时移除监听。
  4. 阻断问题修复:修复 mapService.js 中已有的重叠图层函数合并残片,该残片曾导致 Vite HMR 报 mapService.js:1 invalid JS syntax。
  5. 静态验证:mapService.js、cesiumEngine.js、cockpitConfig.js、mapLayers.js 均通过 node --check;本机配置 JSON 合法,10 批全部为 SSE=24 / maximumDistance=18000;8000 的配置与 tileset HTTP 端点均返回 200。
  6. 尚未完成:浏览器自动化会话当前未连接,无法重新采集优化后的真实帧率和近景截图;因此本票仍不关闭,待浏览器连接后复测“卡死是否消失”、墙体/屋顶/门窗和贴地遮挡。

2026-10-08 乡村散建模型取舍

维护者实测前述 LOD/剔除优化后仍卡顿,决定不在实际驾驶舱加载零散乡村房屋。本机运行配置已移除 lod-batch-rural1、lod-batch-rural2、lod-batch-rural3 三批,约减少 18,266 栋模型及其 LOD 请求;城区 lod-pilot、urban8000-dedup、urban8000b、urban8000c、urban-final、urban-tail 与 unfitted-fallback 保留。乡村资产文件不删除,后续如需恢复可重新加入配置。

下一步:重启/刷新 8000 后重新实测城区范围帧率与近景交互;若仍卡顿,再继续拆分城区批次或降低城区 LOD0 面数。

2026-10-08 按需加载优化

  1. 启动加载改为懒加载:lod-pilot 保持 eager=true;其余 6 个城区/fallback 批次改为 eager=false,启动阶段只读取各自根 tileset.json 的包围盒元数据,不执行 Cesium3DTileset.fromUrl。
  2. 按相机距离初始化:其他批次 loadDistance=6000m,相机进入批次根包围盒 6km 范围后才初始化对应 tileset;只有一个懒批次同时加载,避免城区批次并发抢占主线程和显存。
  3. 离开区域释放:非 eager 批次离开 maximumDistance 与加载距离的较大值后,从场景移除并销毁,返回该区域时可重新按需加载。
  4. 真实场景验证:刷新 http://127.0.0.1:8000/cockpit#/cockpit 后,驾驶舱状态显示 3D Tiles 1 个,控制台无新的地图解析/Cesium 初始化错误;说明首屏已从“同时挂 7 批”收敛为只初始化 pilot。
  5. 当前结论:按需加载代码与配置已生效;浏览器自动化只确认了首屏批次数,尚未完成用户机器上的最终帧率和近景交互复测。票据继续保持 open/ready-for-human。

2026-10-08 远近分层渲染(实测仍卡顿后的第二轮优化)

维护者实测按需加载后帧率仍低。根因判断:远景/中景时精细批次的 LOD1 细分网格(单批约 350 万三角、全城逾千万)仍参与渲染,懒加载只省了初始化、没省渲染三角形数。本轮改为距离分层:

  1. 远景粗模层:/gis/city/tileset.json(旧 town.glb 全城粗模,9.7MB,坐标已回验)标记 role:"far"、eager:true 常驻。相机离全部精细批次超过 6km 时显示它、隐藏全部精细批次——远看县城轮廓由它承担;进入 6km 后反向切换。两层互斥,不会出现双重楼体。
  2. 精细批次全部按需:7 个 CAD BIM 批次一律 eager:false,进入对应批次 6km 才初始化,离开 12km 销毁释放;单并发加载。
  3. 显存上限:每个 tileset 加 cacheBytes=512MB / maximumCacheOverflowBytes=256MB,超限由 Cesium 淘汰 LOD 内容,防止多批次交替加载把内存推到崩溃。
  4. 渲染循环节流:refreshOverlayReadiness() 对 globe.tilesLoaded 这个昂贵 getter 从每帧一次节流到约 6Hz。
  5. 校验:4 个 JS 通过 node --check;config JSON 合法;/gis/city/tileset.json 返回 200 application/json。

下一步:维护者刷新 8000 复测远景帧率(预期显著回升)与 6km 内近景交互;若近景单批次仍卡,再做批次内减面(LOD1 面数压低或 draco 压缩重导出)。

2026-10-08 近景卡顿(实测"靠近即卡"后的第三轮优化)

维护者实测:靠近城区瞬间明显卡顿。根因:跨入显示阈值时,整个批次(约 5km 范围、68 个 LOD1 单元、约 350 万三角、数千 draw call)一帧内全部上屏,且 SSE=24 立即触发 LOD0 高模请求洪峰。本轮处理:

  1. LOD 取舍调粗:maximumScreenSpaceError 24→96、baseScreenSpaceError 1024→4096、skipLevels 1→2、skipScreenSpaceErrorFactor 16→32、动态 SSE 密度 0.00278→0.01 —— 只让视口中央占屏很大的单元才细化,进入批次时先以粗层渲染,近了再逐单元细化。
  2. 请求节流:RequestScheduler.maximumRequests=16 / perServer=8(默认 50),GLB 下载与解码分帧流入,消除整秒级渲染停顿。
  3. 预载提前:精细批次 loadDistance 6km→10km,批次在相机抵达前加载完成,加载尖峰与显示切换解耦。
  4. 远近层切换修正:粗模层改为"任何精细批次实际上屏才隐藏"(此前按距离切换,批次未加载完会闪空白);精细批次离开 2 倍加载距离销毁。
  5. 校验:语法检查通过;config JSON 合法(7 个精细批次 SSE=96 / load=10000)。

下一步:维护者刷新 8000 复测"靠近"瞬间;若近景静置仍低于可接受帧率,剩余手段是资产级减面(Blender 重导出:LOD1 面数减半或 draco 压缩),需要另起一次生成管线运行。

2026-10-08 资产级减面(实测仍卡后的第四轮,维护者批准执行)

运行时优化用尽后维护者批准资产级减面。对 assemble-cad-bim.py 新增三项能力并全量重导出:

  1. 管线改造:--decimate-lod1/--decimate-lod0 对资产库模板挂 Decimate 修改器(实例共享网格,一减全减),期望三角形数改从求值网格实测(库清单数字随之失效);--draco 启用 KHR_draco_mesh_compression(Blender 5.2 属性名为 export_draco_mesh_compression_enable);必须 export_apply=True 烘焙修改器,否则导出仍是全细节网格(试点首跑 60,900 vs 期望 21,748 的自检失败正是漏了它);纯体量批次(urban-tail、unfitted-fallback,无资产模板)合法跳过减面、仅 Draco。manifest 新增 reduction 字段记录参数。
  2. 重导出参数:在用 7 批全部 --decimate-lod1 0.35 --decimate-lod0 0.6 --draco --grid 16 --coarse-grid 4。
  3. 结果(全场景在用批次合计):LOD1 三角形 3,323万→1,189万(−64%);LOD0 三角形 4,881万→2,947万(−40%);LOD0 下载 621MB→234MB(−62%)。注:LOD1 字节因 export_apply 打破网格共享反而 164MB→194MB,总下载 785MB→428MB(−45%);渲染三角形的削减才是帧率收益所在。逐批:pilot 1.24M/3.08M、dedup 2.13M/5.27M、8000b 3.12M/7.73M、8000c 3.07M/7.62M、final 2.32M/5.75M(LOD1/LOD0 百万三角)。
  4. 验证:7 批全部通过 verify-lod-district.mjs;/gis/cad-bim/*/tileset.json 与 GLB 经 8000 HTTP 返回 200(dev 静态挂载直读磁盘,无需重启);Cesium 原生内置 Draco 解码器,KHR 扩展无需额外配置。
  5. 外观取舍:Decimate 0.35 会把窗框/栏杆等细节塌缩为简化形,但建筑轮廓、门窗暗色嵌片与楼层节奏保留——这是维护者验收线"有墙有屋顶有门窗"的下限;如近看观感退化明显,下一档可回到 0.5 并接受更高面数。

下一步:维护者硬刷新(Ctrl+F5,避免浏览器缓存旧 GLB)后复测远景/靠近/近景三段帧率与楼房观感。

2026-10-08 加载调度优化(第五轮:维护者裁定"卡顿源于模型加载")

维护者裁定:LOD 应按距离判定(不用相机高度);真正卡顿源是模型加载一启动、整个场景都卡。本轮改加载调度而非 LOD 数字:

  1. 按需渲染模式:Viewer 启用 requestRenderMode: true + maximumRenderTimeChange: 0.5——相机静止且无新瓦片时 Cesium 完全停渲染循环,GLB 解码与 GPU 上传独占空闲帧;瓦片到货、相机一动立即出帧。已核实自转(rAF 循环 + 相机修改)与雾动画(绑定相机运动)在按需模式下不受影响,0.5s 兜底帧保证雾 uniform 最迟半秒可见。
  2. 批次加载加相机静止门槛:位移 ≤8m 且持续 600ms 才允许启动批次加载(eager 首屏除外);移动中显示/显存切换照常实时更新,加载推迟。停下后无 camera.changed 事件,用 600ms 定时重查衔接。加载与移动在时间上错开——移动全程帧率不再受加载影响。
  3. 距离判定声明:批次加载/显示/剔除全部只用相机到批次包围球的距离(positionWC 差值),代码中无任何相机高度参与 LOD 判定的路径;雾的高度收口是独立特效(票 38),不属 LOD。
  4. 请求并发再收紧:RequestScheduler 16/8 → 10/5,模型加载期间给地形与影像留网络与解码余量。
  5. 校验:两个 JS 文件 node --check 通过。

预期行为变化:靠近城区时移动本身流畅;相机停下约 0.6s 后批次才开始流入,流入期间画面依旧流畅(按需渲染让解码不占渲染帧)。代价:停下后模型延迟约 0.6s+ 加载时长才出现,粗模层在此期间维持轮廓显示(无空白)。

下一步:维护者硬刷新后复测——重点感受"移动是否全程流畅、停下后模型是否平滑流入";若停下后的流入仍有顿挫,下一步把 GLB 解码迁到 debounce 分帧上传(Cesium 无原生钩子,需要拆分 tile 加载回调)。

Comments

local — 2026-10-10T07:03:38.395Z

本轮仅获准离线模型生成/检查。最终13栋 GIS+卫星影像试点已生成并配置为 lod-near-estate-pilot-v4/streaming-v11(旧far+七批roofed2/v5保持);配置覆盖30,159+13=30,172。中心6栋(110.3993,28.4463)、西侧7栋(110.3567,28.4593)。LOD0增加窗套/楼层线/合理尺度入口;修复门从foundationBottom起算导致埋地的问题。屋顶使用z19本地影像,立面/高度仍估算,非实拍立面或摄影测量。

最终离线:4内容GLB,LOD0 27,426tri/1,048,208bytes;LOD1 2,438tri/48,024bytes;单片max15,814tri/31,466vertices,13屋顶哈希与UV一致(max误差0.000233),10文件65屋顶检查通过。分片材质→纹理→图片→采样器闭包裁剪重编号,新增1MiB嵌入raster上限(非GPU纹理预算);2000tri压力切分40GLB/13屋顶无未引用图片回归通过,506栋旧无纹理回归通过。Blender作者模型离线预览已检查,非驾驶舱运行态证据。

统一city-continuous-v1保留候选但未启用:coarse3021文件/45.34MB vs旧far74/7.69MB,40.8倍资源fanout/5.90倍payload,非40倍三角量;聚合性能风险阻止启用。私有Cesium loadTileset只能证明结构解析,已修正文案,未测帧遍历。有效skip traversal、fine-only粗层覆盖归属及现有全局far handoff仍待处理/验收。

详细证据与回退:.scratch/cockpit-shell-panel-layout/verify/artifacts/t35/near-estate-delivery.md;最终reports: near-estate-streaming-v4.json / near-estate-roofs-v4.json / near-estate-textures-v4.json。回退仅移除config最后一条新试点,不删旧资产。由于项目规则已跳过Web build/debug、服务器和浏览器验证。issue35保持open/ready-for-human,不宣称视觉/FPS/全城验收完成。

local — 2026-10-10T09:16:01.736Z

继续离线质量加固,issue保持open/待实际驾驶舱验收。

  1. 新增PNG/JPEG头部尺寸/512px单边限制、每内容1MiB压缩图像及4MiB RGBA8全mip链估算;按texture计分配,不冒称实测GPU。旧manifest显式null/未验证,避免0的假成功。
  2. 最终Draco GLB检查发现v4/v11一个细薄LOD1屋顶三角法线dot=-1;源GLB也失败。提高近景源position24bit、分片20bit后,生成不可变v5/streaming-v12,未改GIS轮廓/座落/楼高:13栋/4GLB/29,864三角,全部法线dot>=0.999984897、0退化。字节1,279,108,比旧版+16.7%;不是零成本。
  3. 屋顶10文件/65检查、13屋顶hash、171UV采样通过(max误差0.0001468845)。2000三角压力v13:40GLB,最大1891三角,全部法线/屋顶映射/预算通过。
  4. 独立只读审查找到验证器漏检material textureInfo索引;已补primitive/material/texture/image/sampler范围和引用闭包,越界及unused反例测试通过,最终/压力/无纹理旧回归复验。旧506栋回归最低dot=-1,未要求flat一致,不把结构通过冒称法线验收,不配置该回归批次。
  5. public/cockpit/config.json只将最后试点URL替换为 /gis/cad-bim/lod-near-estate-pilot-v5/streaming-v12/tileset.json;其余远景/7批次不变,统一树不启用,旧资产保留。说明和证据 .scratch/cockpit-shell-panel-layout/verify/artifacts/t35/near-estate-delivery.md。

遵守项目规则及本轮授权:只执行离线模型生成/检查,跳过Web build/debug、package scripts、服务器/浏览器/截图。未验证真实页面加载、近景样式、远近fallback、帧耗时或GPU缓存;不得关闭issue35。

local — 2026-10-12T02:14:54.726Z

根据最新反馈继续实现并保持issue open:

  • 近景试点升级 v6/streaming-v14:仍为同一13栋GIS足印/卫星屋顶纹理,LOD0增加更密但有界的窗格节奏(边长步长由3.5m调整为2.8m,上限16窗/边),LOD0 33,786 tri;6个分片,最大16,452 tri/32,768 vertices。离线法线29,864?(v6实际36,224 tri)全部通过,0退化,min normal dot 0.99998015;屋顶UV/hash/cap/material closure通过。
  • 修复粗精空档根因:原逻辑是任意精细批次ready就隐藏全局far。新增isFineReadyAtCamera,仅当当前相机附近(loadDistance内)的精模实例已实际渲染且tilesLoaded才允许粗模隐藏;其他区域粗模保持显示。纯函数回归通过。
  • 配置合并为单一空间LOD入口 /gis/cad-bim/city-continuous-v3/tileset.json;该树包含30,172栋、3,022粗内容+3,023精内容、单REPLACE层级、近景分支v6/v14;旧路径资产保留但不再配置。
  • 统一正式入口依据源码为 src/pages/cockpit/index.vue 的 /cockpit;本轮没有新增页面路由。正式访问约定为 http://127.0.0.1:8000/#/cockpit。
  • 未启动server/build/浏览器,不宣称运行态视觉已验收。

local — 轻量最远景外壳(city-far-shell-v4)

  • 用户反馈v8粗模多时依然卡顿,本轮重新生成最远景closed GIS shell,只保留墙/屋顶/底盖;远景去门窗/入口/凸凹细节、两类不透明中性色材质,原中近景模型与卫星屋顶纹理不变。
  • 正式configURL更新为/gis/cad-bim/city-far-shell-v4/tileset.json,仍Base REPLACE/SSE96/cache64+32MiB/并发10/5,页面仍http://127.0.0.1:8000/#/cockpit。
  • 新87GLB455136triangles3413908bytes174primitives;26原cell回退,source闭合失败/Draco编码后退化或逆转自动整cell/group回退,未变动测绘足印、座落或简单翻转面。
  • 完整解码验证30,172栋/532cells覆盖、实际墙顶底三角映射和法线、每组child/ID/URI闭包、实际父球/根盒通过;最小dot.999986691,屋顶最大角点误差.000541511m。独立只读审查通过,非运行态证据。
  • 同一10km合成ENU相机/1080p/SSE96安装版BaseTraversal:计入全部回退,warm overview631→113contents,1355196→578726triangles,5453→433primitives,14462456→4455408bytes;cold fine0,near350m fine5,父模pending保持。比对为离线资源代理,不是FPS/GPU/draw实测。
  • 回退只改URL回city-continuous-v8,保持progressiveRefinement:true,不删资产。交付与证据.scratch/cockpit-shell-panel-layout/verify/artifacts/t35/far-shell-delivery.md。
  • 按项目规则跳过Web build/debug/server/browser。最远景材质简化可能有色彩LOD差异;真实帧率/缓存/不同视角尚待人工验收,issue35保持open。

local — 连续LOD无感加载优化(v8)

  • 正式配置更新为/gis/cad-bim/city-continuous-v8/tileset.json + progressiveRefinement:true,入口仍为http://127.0.0.1:8000/#/cockpit。
  • v8仅重建索引,几何/纹理/GLB不变:530远粗/3,022局部粗/3,023精内容,30,172栋,最大片19,991 triangles/47,221 vertices。
  • 修复关键空节点问题:有内容父粗模不再挂空中间节点,避免Cesium真实hasEmptyContent=true把未加载子内容误判为就绪,导致父粗模提前退休。空根也不含占位content。
  • 关闭城市树SkipLOD,采用Base REPLACE;默认SSE96、缓存64+32MiB、移动剔除倍率30、隐藏预取关闭。v8回归保留父粗模直到真实子内容就绪。
  • 安装版Cesium BaseTraversal + 合成相机/就绪状态回归通过:概况冷启动fine=0;近景粗模pending时far=530仍选中;精模就绪后局部fine=5;回景fine=0。请求模拟不等同浏览器/FPS/GPU验收。
  • 首次冷缓存仍有下载/解码不可避免;用户需从正式入口实测无感观感、快速缩放和缓存压力。issue保持open。

    local — 粗模结构诊断与实例化候选

  • 离线比较确认:当前v5粗内容3,022片、约45.35MB压缩载荷;历史低开销far为74片,三角总量相近但内容/遍历数量显著不同。

  • Cesium 1.145的@cesium/engine确实读取EXT_mesh_gpu_instancing,但实例化仅适用于真正共享网格/材质和TRS,不会自动合并已经按批次合并的粗GLB;实例属性不能Draco压缩,旋转还需CPU矩阵准备。

  • 生成未接入的13栋实例化粗模候选:3个GLB、1,049实例、109,288 bytes,保留测绘屋顶/底盖,外墙窗门作为共享外部构件;GLB扩展/变换结构离线检查通过。

  • 74粗模直接挂精模的混合树候选否决:SkipLOD下REPLACE可能整组退休,细分请求球会造成同组其他建筑消失;且74组中21组超过20,000三角限制。正式配置仍保持city-continuous-v5。

local — 实例化优化最终结论

  • 按用户要求对当前有效7批次30,159栋尝试共享构件实例化;Cesium EXT_mesh_gpu_instancing支持已核实。
  • Blender来源30,159栋/529 cells完成;16个超预算cell保留原分片回退。安全转换输出2,590 pairs、4,473栋实例构件/25,076次放置;候选总载荷490,953,324→482,784,168 bytes,但节点13,512→16,880,严格接入条件(每cell bytes更小且primitive不增加)0个通过。
  • 全城渐进实例化候选离线覆盖回验通过:30,172栋、6575 contents、fallback可达、粗精ownership一致、预算/实例TRS/法线/保守command bounds通过;候选不接入正式配置,避免增加Cesium draw primitives。
  • 正式配置仍使用city-continuous-v5;实例化候选和脚本作为离线实验记录。未运行Web build/debug/server/browser,FPS与画面仍待正式入口人工验收。
  • 用户反馈当前建筑精度基本可接受,但v3/v4参数回调后出现卡顿;本轮不再增加近景窗格细节。
  • 连续树升级到v5:保留粗/精内容各自距离请求球,运行配置SSE恢复96、最大距离14km、加载距离7km,远处粗模可退出请求;局部精模未实际渲染前粗模继续覆盖。
  • 房屋库移除外壳背后的重复实体墙;测绘体量明确标注为外部壳,不生成室内房间、楼板、吊顶或室内物件。近景v6/v14几何产物保留,未进行更激进减面。
  • 离线连续树、局部交接、语法和diff检查通过;真实页面请求/FPS/GPU仍待正式入口实测。

local — 2026-10-13T07:07:40.527Z

低空/横向精模CPU内容压力本轮改为独立区域调度,并落实用户要求管道只粗模。正式配置city-regions-v2/coarse-tileset.json +regionManifest;113粗片(与原far-shell几何/材质/变换逐三角一致),113fine区/3023fineURI原样保留。地面视锥附近700m(活跃800m滞回)最多2区/180内容/96MiB解码几何估算,粗模实际可见且tilesLoaded才启动精模;新区初始化与下载/解码完成串行闸门,隐藏预取完整区域后一次显示,postRender观察绘制后按metadata.region/公开feature.show仅遮对应粗模。失败/卸载/视锥外/pipeline恢复粗模并释放detail;pipeline准入0。fromUrl晚到结果销毁,元数据fetch abort,修复Viewer创建后异步采样期间未登记所有权可能泄漏的旧漏洞。

离线验证:113region<=115片、maxGeometry估算80.54MB、coarsemetadata后5.95MB;每顶点featureID0、table.region正确,原细模型URI一对一。低空ENU(0,-1000,50)与350m模拟均2区25片14.08MB估算,另一低空点2区54片32.72MB,全景0精模,全部pipeline0。算法回归含粗模闸门/完整loaded计数/串行内容槽/失败回退/定时不闪烁/视锥外释放/切pipeline全部释放/晚到销毁。T04/T21计划与语法检查通过。细区仍内部并发请求,帧率/CPUvsGPU主因未经实测证明;整体替换可能等待更久。按项目规则跳过Web build/debug/server/browser,未新增页面入口,保持issue35 open待正式/#/cockpit低空和pipeline验收。交付记录 .scratch/cockpit-shell-panel-layout/verify/artifacts/t35/region-loading-delivery.md。

local — 2026-10-13T08:47:53.191Z

按用户加载迟钝/灰顶远景/粗精混合明显反馈,正式配置city-regions-v6。修复候选启动按manifest顺序而非镜头优先级、活跃区永久优先;改为distance+0.15centerDistance-150mactive滞回,近邻新区可替代旧区。新增631个有窗格/同源卫星屋顶预览父内容,全部预览就绪实际render后只遮对应全局粗模,精片按GE48 REPLACE继续细化;串行槽在预览完整+当前请求/处理空+tilesLoaded后释放,不等待尚未需要的精片,已有区再处理则暂停新区启动。保留max2区/180总内容/96MiB解码资源估算、管道粗模专用及async释放。

屋顶来源本地pic3 z19 EPSG3857/TMS重投影,globalatlas最长256px/preview128/fine64 JPEG85;原3个有影像fine保持原URI/哈希,所有geometry/normal/index和墙材质不变。实际GLB回验3758纹理、8257571UV点max误差2.98e-8、9646源tilesSHA256匹配,north-up/TMS、preview/fineownership通过。113粗文件9.86MB,粗图mip25.5MB;单区最多151contents/max87.8MB(含UV/纹理/原有near贴图),没扩大regioncap。模拟低空2区56–66总内容/12预览,pipeline全部0。离线看实际atlas,非浏览器或GPU画面。

JS/T04/T21/调度回归通过,独立只读审查无阻塞。性能/实际响应与混合外观仍待正式/#/cockpit验收,按AGENTS跳过Web build/debug/server/browser。回退URL与regionManifest均回city-regions-v2;issue35保持open。交付 .scratch/cockpit-shell-panel-layout/verify/artifacts/t35/satellite-roof-delivery.md。

local — 2026-10-13T08:55:17.110Z

认领本次浏览器验收与wayfinder执行回顾;用户已明确授权在正式http://127.0.0.1:8000/#/cockpit进行浏览器验证。先验证当前city-regions-v6实际加载、远近外观/管道零精模与运行性能,再复核人工介入类别,不预先关闭或宣称97%完成。

local — 2026-10-13T09:59:07.921Z

本次真实浏览器验收已复现GLSL300es下调色shader使用varying导致Rendering has stopped,创建独立技术修复票“恢复驾驶舱3D渲染:调色与雾着色器的GLSL兼容性”作为前置。当前不是要求人工修代码,建筑模型票改为ready-for-agent,修复后代理复验;只有最后的真实外观/可接受响应与范围确认需维护者裁定。历史97%不能作为当前验收通过率。

local — 2026-10-13T14:02:38.261Z

第四轮实际进展:开发modelDiagnostics不再每帧生成region/tilesets全量快照,限500ms绘制;新增公开tileLoad/tileVisible URL区分fineLoaded与fineVisibleLastRender,preview-ready/coarseMasked不再可被误读为全部精模显示。回归验证加载≠可见、下一帧无精片清读数、预览保底/管道释放不变;诊断60帧无新完整快照、监听销毁通过。配置仍city-regions-v7,实际Cesiumfrustum反例和631content索引路径/预算回归通过,但v7浏览器复验未完成(harness会话上限/清理字段冲突)。

更新大型楼栋审计:实际配置regionfine图可追溯3023路径/113regions/30172源元数据IDs,13已认可补充楼的IDs纳入图中;是源cell元数据谱系而非实际几何/全部渲染证明。历史1517候选剩1504/urban955,无urban seated-outside-selection直接可纳入项;其余仍需影像和座落验证,不自动恢复乡村/不增加未核实楼栋。记录 verify/artifacts/t35/coverage-reconciliation-20261013.md 和 active-large-building-reconciliation-v7.json。本轮目标继续active/open,Webbuild/debug未新增运行。

local — 2026-10-14T01:49:42.257Z

第六轮v7离线质量复验:纹理/预算通过(113区域、631preview、3023fine、3758屋顶纹理、8257571UV、最大误差2.98e-8、9646源瓦片哈希、geometry unchanged、最大区域87.8MB<96MiB、低空2区/56–66内容、pipeline0)。fineLoaded/fineVisibleLastRender诊断与安装版Cesium遍历回归继续通过。v7正式浏览器复验仍受会话清理接口互斥字段错误阻塞,故不宣称render/FPS/视觉完成。记录 round6-v7-texture-and-traversal.md;目标和票保持open。

local — 2026-10-14T01:51:15.845Z

第六轮收口记录已写入 round6-v7-texture-and-traversal.md:v7屋顶纹理与预算复验通过;实际准入扫描40姿态旧35次空洞名额/v7零;安装版Cesium BaseTraversal精片pending/ready/evicted通过。浏览器清理接口仍无法释放旧session,故v7 render/FPS/视觉尚未验收,继续保持open。

local — 2026-10-14T02:33:00.482Z

第九轮:生成large-building-audit/review-queue-v7.json+md,955个urban候选分为terrain/stepped946、自交4、DEM无效5;最大候选cad-4057 20669.8m²,队列只供卫星/DEM人工复核,不自动加楼或恢复乡村。预算脚本已改读ECEF姿态扫描,避免ENU/ECEF混用;40姿态最多2区/180内容/96MiB、pipeline0,content/region/diagnostic回归通过。v7真实浏览器/FPS/视觉仍未验收,继续open。

local — 2026-10-14T02:52:46.696Z

第十轮补齐大型楼栋影像证据:为955个urban候选生成review-queue-v7-imagery.json/md,每候选关联本地z19 TMS bbox及瓦片路径/字节/SHA-256;修正GeoJSON坐标递归错误后复验,955/955 bbox coverage=complete,首候选cad-4057为16/16瓦片。TMS存在性只供人工查看,不等于漏建/屋顶形状/渲染证明;不自动加楼或恢复乡村。v7纹理、ECEF预算、准入、region、diagnostics回归保持通过,真实render/FPS/视觉仍未验收。记录round10-imagery-evidence.md,票继续open。

local — 2026-10-14T11:47:39.786Z

第21轮完成:反面样例四ID(cad-25612/25467/25968/25957)全部有历史rural批次谱系但无v7 fine source,确认不是当前浏览器漏渲染;建议四ID immutable白名单试点,需明确tier例外,绝不全面解锁rural。屋顶密度试点未配置,维护者正面/反面覆盖报告和屋顶试点记录已存。

local — 2026-10-14T12:23:04.423Z

第22轮完成四栋反面小区白名单pilot输入:cad-25612/25467/25968/25957,1栋slab asset+3栋survey massing,原始DEM高差0.81–3.03m,契约1区/8内容/32MiB;保持原足印/采样/估算高度,不改全局rural、不改city-regions-v7配置。未生成GLB,需明确维护者白名单例外后再走不可变pilot生成/视觉验收。记录 negative-estate-pilot/round22-whitelist-plan.md,目标继续active。

local — 2026-10-14T12:46:17.051Z

第23轮审阅assemble-cad-bim.py确认最小plan+--limit/--grid/--coarse-grid可独立导出四栋白名单pilot,不需复制rural cell;但按项目规则本轮不自动跑Blender/build/debug,因此未生成GLB/tileset。四栋输入已验,v7配置不改。记录 negative-estate-pilot/round23-exporter-interface.md。

local — 2026-10-14T13:05:30.773Z

第24轮完成正反样例GLB谱系质量对账:正面样例附近asset/midrise/slab与massing混合;反面4栋为1栋slab asset+3栋survey massing。现有source cell manifest不能单楼归因triangles/窗/纹理,不能冒称质量统一已完成。记录round24-quality-lineage.md和user-samples/glb-quality-lineage.json;不build、不接入高清、不改全局v7/rural。

local — 2026-10-14T13:47:42.621Z

第25轮完成历史LOD0 GLB质量基线:正面urban cell-09-09 113194tri/17材质,反面rural cell-07-10 231196tri/17材质,slab cell-07-11 103964tri/17材质;均merged cell、无embedded texture,不能把三角归因单楼。四栋局部pilot需要单楼节点级独立输出,本轮受不自动build规则未运行。记录round25-glb-quality-baseline.md和glb-quality-baseline.json。

local — 2026-10-14T14:21:15.246Z

第26轮完成四栋白名单单楼质量闸门:cad-25467可复用slab asset(闭合壳/窗/阳台/屋面,库基线LOD0 32020tri);cad-25612/25968/25957必须真实轮廓massing+有界窗层线模块,禁止矩形替换。共同要求LOD1<LOD0、LOD0 GE0/REPLACE回退、z19 TMS/UV/每图预算、pilot32MiB和全局96MiB。未build/未接v7,记录round26-quality-gate.md。

local — 2026-10-14T14:43:55.282Z

第27轮完成四栋pilot静态导出前检查:父计划哈希/4ID唯一/48,425父计划未泄漏、DEM和样本索引保留;grid2预测2cell、推荐--limit4--near-architecture;全局仍v7。生成recommendation但doNotRun=true,未运行Blender/build/debug。记录round27-prebuild-check.md。

local — 2026-10-14T15:04:01.373Z

第28轮静态质量闸门通过:slab候选cad-25467 fitScale[1.373,1.1892]合法、库基线32020tri/1883闭合壳;三栋massing强制exact outline/禁止矩形替换;父hash、1区/8内容/32MiB、全局v7边界通过。GLB/运行态/FPS/视觉仍未验证,doNotRun=true。记录round28-static-quality-gate.md。

local — 2026-10-15T02:09:44.795Z

第29–31轮完成实际四栋反面小区离线pilot和完整高清屋顶候选:四栋export-v3 2cell/4GLB,LOD0 7746tri/161580B,LOD1 800tri/24332B,逐楼闭合足印/法线/屋顶hash/697184B资源回验通过;两块高清屋顶已组装为city-regions-roof-pilot-v1候选,113区/631preview/3023fine,仅替换2 fine,region25 32020772B,6328组合预算和pipeline0通过。未接v7,配置仍v7;离线图提示屋顶源影像色块/阴影 caveat。Web build/server/browser/FPS仍按规则跳过。

local — 2026-10-15T03:07:51.399Z

第32轮按只读审查加固屋顶候选验证器:区分原始source GLB与v7当前精片hash,校验pilot report SHA、替换raster尺寸/hash/processing/sourceTiles,比较全部primitive属性与Draco兼容字段;重跑通过113区/631preview/3023fine、2替换、+1474740B、region25 32020772B、6328组合、pipeline0。候选仍未接v7,renderingValidated=false。

local — 2026-10-15T03:32:48.986Z

第33轮生成并验证integration-decision-package.json,绑定四栋pilot与113区高清屋顶候选报告SHA、正式v7 config SHA、回退策略及预算约束。明确四项人工门槛:小区排布/道路间距,屋顶色块阴影拼接,正面样例精模质量,渐进加载/低卡顿体验。当前配置未变,两个候选未接入;记录round33-integration-decision-package.md。

local — 2026-10-15T03:40:54.026Z

第34轮目标完成度审计:GIS/DEM/闭合LOD、屋顶z19溯源、四栋pilot、候选预算均有离线证据;正式驾驶舱视觉/FPS/CPU-GPU/缓存和四项人工视觉接受未完成。正式配置仍city-regions-v7,候选不接入。记录round34-completion-audit.md/json,目标active-not-complete。

local — 2026-10-15T03:48:21.181Z

第35轮完成屋顶影像只读色差统计:四栋roof crop的luma<55占34.0–48.5%,中位亮度55.6–108.2;25个源瓦片有16组相邻east边界,RGB RMS proxy 5.65–13.19。只说明明显暗部/边界色差风险,无法区分投影阴影、屋面材质、遮挡或不同地物,未修图/未改v7。候选保持未接入,待正式驾驶舱人工判定;记录round35-roof-imagery-statistics.md。