ChenJZ bbcfa0d970 feat(cockpit): 票43/44/46 票据记录、场景标记与屋顶影像审计工具 5 dagen geleden
..
city a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
district 8db64fc90b 驾驶舱修改提交 2 weken geleden
house-library 8db64fc90b 驾驶舱修改提交 2 weken geleden
README.md 8db64fc90b 驾驶舱修改提交 2 weken geleden
analyze-factory-dem-segmentation.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
assemble-cad-bim.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
assemble-district.py 8db64fc90b 驾驶舱修改提交 2 weken geleden
assemble-instanced-city.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
assemble-lod-district.py 8db64fc90b 驾驶舱修改提交 2 weken geleden
asset-fit.json 8db64fc90b 驾驶舱修改提交 2 weken geleden
audit-large-building-coverage.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
audit-model-objective-completion.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
audit-negative-estate-candidates.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
audit-negative-estate-lineage.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
audit-roof-imagery-statistics.py bbcfa0d970 feat(cockpit): 票43/44/46 票据记录、场景标记与屋顶影像审计工具 5 dagen geleden
audit-user-sample-glb-lineage.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
audit-user-sample-glb-quality.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
audit-user-sample-neighborhoods.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
audit-user-sample-quality.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
blender-house-library.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-aligned-far-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-candidate-imagery-plates.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-cell-coarse-city-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-continuous-city-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-far-parent-city-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-far-shell-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-hybrid-city-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-instanced-asset-tiles.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-instanced-coarse-pilot.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-large-building-imagery-queue.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-large-building-review-queue.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-model-integration-decision-package.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-negative-estate-quality-gate.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-progressive-instanced-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-region-admission-index.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-region-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-roof-imagery-manual-review-gate.py bbcfa0d970 feat(cockpit): 票43/44/46 票据记录、场景标记与屋顶影像审计工具 5 dagen geleden
build-roof-quality-pilot.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-roof-quality-region-candidate.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-streaming-tiles.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
build-town.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
cad-shp-to-geojson.py 8db64fc90b 驾驶舱修改提交 2 weken geleden
check-roof-triangulation.py b8917eda84 feat(cockpit): 对齐真实数据契约、实时工单消费与地图资源加载 1 week geleden
city-atlas.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
convert-dwg-to-gis.py 8db64fc90b 驾驶舱修改提交 2 weken geleden
convert-instanced-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
diagnose-far-shells.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
draw-city-masks.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
draw-model-coverage.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
export-cad-layers.py 8db64fc90b 驾驶舱修改提交 2 weken geleden
far-shell-geometry.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
far-shell-geometry.test.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
generate-oldtown-fill.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
instance-buffer-codec.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
instance-repeated-meshes.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
instance-repeated-meshes.test.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
instance-safe-primitives.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
instance-safe-primitives.test.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
make-cad-bim-dedup-batch.mjs b8917eda84 feat(cockpit): 对齐真实数据契约、实时工单消费与地图资源加载 1 week geleden
make-cad-bim-pilot.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
make-cad-bim-unfitted-fallback.mjs b8917eda84 feat(cockpit): 对齐真实数据契约、实时工单消费与地图资源加载 1 week geleden
make-root-anchor.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
oldtown-geometry.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
oldtown-geometry.test.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
prepare-cad-bim.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
prepare-district.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
prepare-factory-dem-audit.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
prepare-modules.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
prepare-near-estate-pilot.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
prepare-negative-estate-export.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
prepare-negative-estate-roof-textures.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
prepare-negative-estate-whitelist-plan.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
prepare-oldtown-dem.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
prepare-regular-estate.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
preview-district.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
preview.html b8917eda84 feat(cockpit): 对齐真实数据契约、实时工单消费与地图资源加载 1 week geleden
primary-area.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
primary-area.test.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
probe-gis-sources.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
raster-budget.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
reconcile-large-building-coverage.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
region-metadata.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
render-near-building.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
render-negative-estate-pilot.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
review-factory-dem-audit.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
review-large-building-imagery.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
roof-geodesy.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
roof-raster-quality.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
sample-district.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
sample-oldtown-browser.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
sample-terrain-offline.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
seat-cad-bim.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
seat-district.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
seat-oldtown.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
seat-regular-estate.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
segment-imagery-footprints.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
select-cad-bim-batch.mjs b8917eda84 feat(cockpit): 对齐真实数据契约、实时工单消费与地图资源加载 1 week geleden
serve-review.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
summarize-city-coverage.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
survey-imagery.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
texture-coarse-roofs.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
trace-regular-estate.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
traced-roofs.json 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-admission-pose-sweep.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-aligned-cad-bim.mjs b8917eda84 feat(cockpit): 对齐真实数据契约、实时工单消费与地图资源加载 1 week geleden
verify-aligned-far-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-cad-bim.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-cad-buildings.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-cell-coarse-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-city-models.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-content-admission.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-continuous-city-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-continuous-request-profile.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-continuous-traversal.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-district.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-export-triangle-reference.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-far-shell-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-hybrid-city-tileset.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-imagery-footprints.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-instanced-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-instanced-coarse-pilot.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-lod-district.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-material-closure.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-material-closure.test.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-merged-cad-bim.mjs b8917eda84 feat(cockpit): 对齐真实数据契约、实时工单消费与地图资源加载 1 week geleden
verify-model-diagnostics.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-negative-estate-export.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-negative-estate-static-quality.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-negative-estate-whitelist-plan.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-occlusion.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden
verify-progressive-instanced-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-raster-budget.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-region-admission-index.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-region-city.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-region-fine-traversal.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-region-loading.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-roof-caps.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-roof-geodesy.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-roof-geometry.py a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-roof-quality-pilot.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-roof-quality-region-candidate.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-roof-raster-quality.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-roof-textures.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-streaming-tiles.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-textured-region-budgets.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-textured-regions.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-tileset-handoff.mjs a40aedcba9 feat(cockpit): 票37共用省略方法、设备类型筛选与面板图表交互 5 dagen geleden
verify-town.mjs 8db64fc90b 驾驶舱修改提交 2 weken geleden

README.md

沅陵房屋资产与审查街区

当前版本是 Blender 房屋资产库 + 有来源足印的示范街区,不是完整沅陵县城复原。旧 build-town.mjs / verify-town.mjs 是已被否决的历史实验,不再用于验收或部署。当前审查管线使用 prepare-district.mjs → prepare-modules.mjs → sample-district.mjs → seat-district.mjs → Blender assemble-district.py;它保留来源足印、逐点 DEM 样本与明确排除清单。

楼层、立面和内部功能为视觉设计估计。OSM 足印和影像年代可能不同;人工描绘的是屋顶投影,不是测绘基底。禁止用本模型做量测、统计或应急决策。

资产

  • house-library/house-library.blend:8 个可复用尺寸/楼层变体,源部件可编辑。
  • house-library/library.json:单位、轴向、尺寸、三角面数、物件名和材质契约。
  • house-library/preview.png:Blender 实际相机渲染。
  • district/generated/district.blend:示范街区,可逐栋修改。
  • district/generated/district.glb / tileset.json:Cesium 预览产物,复用网格而非逐栋复制几何。

当前街区 37 个单元、22 个来源足印,复用 4 种网格,约 4.32 MB。43 个候选来源中,15 个完整、7 个部分建模、21 个未建模。未建部分保留原影像,不随机补楼。

建模依据

survey-imagery.mjs 拼接本地 TMS 影像并叠加原始 OSM 轮廓。traced-roofs.json 记录对北侧体育场附近屋顶的逐栋描绘,像素对应关系保存在 district/plan.json。

prepare-district.mjs 只接受近矩形足印,矩形化角点最大偏差限 1.5m。长条建筑拆为同方向的模块,不再用轴对齐外接框整片拉伸。当前基础模型不适合的形状明确排除。

sample-district.mjs 通过原始 /gis/dem provider 对每个实际旋转足印的角点、边线和内部(间距不超过 5m)直接调用 sampleTerrainMostDetailed。本次 2531 点有效;缺失点直接失败,不代填固定高程。

seat-district.mjs 将楼体首层放在采样最高地表下 0.25m,基础单独下延至最低地表以下 3m。楼层和屋顶不跟着裙边下沉。高差超过 2.5m 的模块排除,不造十米高台。采样点间的 DEM 极值、屋顶视差及建筑真实高度仍存在不确定性;本次最高可见基础约 2.19m,不声称所有位置零误差。

重建

以下命令需要本机 GIS 原料、依赖和 Blender。先启动项目现有 dev 服务(仅在用户允许预览/验证时):

node tools/city-massing/survey-imagery.mjs
node tools/city-massing/prepare-district.mjs
node tools/city-massing/prepare-modules.mjs
$env:COCKPIT_BASE='http://localhost:8001'
node tools/city-massing/sample-district.mjs
node tools/city-massing/seat-district.mjs

& 'D:\Steam\steamapps\common\Blender\blender.exe' --background --factory-startup --python-exit-code 1 --python tools/city-massing/blender-house-library.py -- --samples 48
& 'D:\Steam\steamapps\common\Blender\blender.exe' --background --factory-startup --python-exit-code 1 --python tools/city-massing/assemble-district.py
node tools/city-massing/verify-district.mjs

独立审查页面

$env:COCKPIT_BASE='http://127.0.0.1:8001'
node tools/city-massing/serve-review.mjs

打开 http://127.0.0.1:8092/preview.html。它只监听本机,代理现有引擎与 GIS 资源,不写生产 config.json,不进入 Web 构建产物。截图复核:

node tools/city-massing/preview-district.mjs
$env:OCCLUSION_TERRAIN='local'
node tools/city-massing/verify-occlusion.mjs

验证能证明什么

  • house-library/verify-library.py 检查 Blender 源壳闭合性、绕序、正体积和导出索引/法线;删除屋顶面、反转屋顶壳的负例必须失败。细节是相交的独立闭合实体,不是室内/CAD 布尔并集。
  • verify-district.mjs 解码真实 GLB 节点矩阵与顶点,通过完整 Y-up→ENU→ECEF 链检查每栋足印锚点与基础,不能仅靠 meta.json 自报通过。水平偏移10m、竖向偏移5m、X缩放20%的负例均失败。数值通过只证明导出遵循规划,不代表测绘精度。
  • verify-occlusion.mjs 将红色 GLB 完全埋在地形下,用截图像素检验实际引擎:地面视图隐藏,关闭深度测试可见,管线半透明可见,回地面隐藏。
  • preview-district.mjs 读回真正的相机视距,生成卫星对照、1300m 总览、230/300/150m 近景与430px窄屏样片。过去 goHome(options) 忽略 range/pitch 的探针不能作为视距证据。

本轮遮挡根因

实际场景 globe.depthTestAgainstTerrain 未开启。不透明地形上仍能看见地下模型,是深度配置错误,不是加密高程网格能自动解决的。引擎现在默认开启,视图切换时保持开启;地下管线透视由显式 globe.translucency 控制。

尚未完成

审查用三套空间 LOD 树(都在 tools/city-massing/**/lod-preview/):

树 内容 来源
district/lod-preview/ 37 个已审计足印样片 原始 OSM 近矩形轮廓 + 逐栋手绘屋顶
city/regular-estate/lod-preview/ 15 个 DEM 合格模块 21 条 z19 卫星屋顶描绘
city/oldtown/lod-preview/ 4,601 个模块(319 细分片 / 39 粗父节点) z19 卫星屋顶分割 + OSM 建筑面

旧城生成已改为“有足印来源才建模”:generate-oldtown-fill.mjs 只接受落在主场景区内、完整落在居民地掩膜内的 OSM 建筑面或 z19 卫星屋顶分割足印;道路只作排除几何,不再作为建房依据(这修掉了维护者反馈的“道路旁不该有房”)。长足印按网格切成连续模块以复用已认可资产,样式由 8 种变体(house 2/3/4 层、slab 4/6 层、midrise 8/10 层、midrise-wide)确定性分配,屋顶与外墙材质按来源建筑哈希轮换,不再是整城统一橙色尖顶。

坡地处理分三档:平地直接落地;缓坡(≤3.2 m 且不超过楼高 40%)用石砌台基;更陡的按实测坡向切成台阶(terraced),切不出合规台阶的足印明确排除,不造高台。导出为 4,110 平地 / 361 台基 / 317 台阶。

影像分割的可靠性是分掩膜的,以 1:1 对照图判读(node tools/city-massing/verify-imagery-footprints.mjs):掩膜 65/66 可信、126 稀疏但正确;63 是河岸/农田条带(多为温室屋顶)、130 是工业园(亮水泥地会被当成屋顶),两者已排除出建模。分割本身做不到的事:贴在一起、无阴影分隔的两栋会并成一栋;暗屋顶在暗地面上会漏;最小外接矩形不表达 L 形、天井和屋脊。

复现命令(Node 侧):

node tools/city-massing/city-atlas.mjs                     # 影像/居民地/道路/水系底册(道路按主场景区裁剪)
node tools/city-massing/segment-imagery-footprints.mjs      # z19 卫星屋顶分割
node tools/city-massing/generate-oldtown-fill.mjs           # 来源足印 → 模块计划
node tools/city-massing/prepare-oldtown-dem.mjs             # 展开 ENU 足印与 DEM 采样点
node tools/city-massing/sample-terrain-offline.mjs tools/city-massing/city/oldtown/plan.json tools/city-massing/city/oldtown/terrain-samples.json
node tools/city-massing/seat-oldtown.mjs                    # 落地/台基/台阶
node tools/city-massing/verify-city-models.mjs              # 主场景区/道路/掩膜/来源验收
node tools/city-massing/draw-model-coverage.mjs             # 生成足印叠在卫星底图上

Blender 导出(旧城为 32×32 细分格 + 8×8 粗父格):

blender --background --factory-startup --python-exit-code 1 \
  --python tools/city-massing/assemble-lod-district.py -- \
  --district tools/city-massing/city/oldtown --output tools/city-massing/city/oldtown/lod-preview \
  --grid 32 --coarse-grid 8

node tools/city-massing/verify-lod-district.mjs <lod-preview-dir> 检查根锚点、层级、文件和几何预算;asset-fit.json 是“足印模块 ↔ 资产变体”的唯一缩放窗口契约,生成器与 Blender 导出器都读它,避免两段各自放宽。

仍未完成:全城逐栋完整覆盖(旧城计划 5,201 个来源模块中 4,601 个导出,2,991 个落地阶段排除,主要是 DEM 高差与资产比例无法承载);掩膜外的建成区(老城外围、城南若干片区)没有足印来源,保持空缺不猜;regular-estate 有 5 处“影像描绘屋顶 vs OSM residential 巷道”互相矛盾(见 city/city-model-verification.json 的 sourceConflicts),需要人工判定是路错还是描绘错;审查页运行态性能与维护者视觉验收未完成。生产 map.tilesets 仍为空。

数量和几何预算不等于覆盖或运行时性能通过。