fix(preview): derive signals from OSM controls

This commit is contained in:
2026-08-07 09:05:27 +08:00
parent 950cd1c4cd
commit 1c077a312e
7 changed files with 315 additions and 73 deletions

View File

@@ -144,6 +144,21 @@ OSM way 的端点不一定在原始 XML 中有三个以上相连 wayosm2stree
**教训****跨阶段契约必须随产物保存;兼容旧产物的字符串回退也要被审查**。
### 坑 6部分构建复用了过期的交通信号锚点
`scripts/lib/traffic-signals.js` 根据当前 OSM 的 `highway=traffic_signals` 控制节点、
`vehicle_stop_lines.geojson``intersection_surface.geojson` 派生
`osm2streets_web_out/traffic_signals.json`。Blender 将这份文件中的每个 signal id 导出为
三个动态灯节点和一组倒计时节点,`scripts/lib/cesium-preview.js` 再按相同 id 控制它们。
因此执行 `blender,cesium,preview` 这类部分构建时,必须在 Blender stage 入口重新写入
交通信号文件。若沿用旧文件GLB 可能已经包含新增 T/十字路口,但预览仍只控制旧的
signal id表现为灯不切换、数字叠加或路口整体异常。该刷新由
`scripts/build-area.js:buildBlenderScene()` 负责。
**教训****任何由输入 OSM 或归一化图层派生、又被多个后续 stage 共享的中间 JSON
都必须在最早消费它的 stage 重新生成,不能只在完整 `intermediates` 构建时生成。**
---
## 加东西时的检查清单