Files

2.5 KiB
Raw Permalink Blame History

实施计划Cesium 路口信号灯可视化

  1. 复用 traffic-signals.js 的锚点推导,在 intermediates 阶段把附属 traffic_signals.json 写入 geojsonDir;不修改 SCENE_LAYERS、GeoPackage 或 QGIS。
  2. blender/osmassets/traffic_signals.py 用共享低多边形 MeshBatch 几何装配静态信号设施, 并在 generate_scene.py 读取锚点、投影坐标、置入 05_Props 和写入计数。
  3. catalog.MATERIALS 末尾追加信号设施材质和 Cesium 导出补偿,保证新 GLB 在 Cesium 中不会发黑或材质索引漂移。
  4. 让 preview 直接读取 intermediates 的锚点文件;删除 Cesium 对立杆、横杆、灯头、熄灭灯珠 和外壳的构造,只保留精确对齐的动态灯珠、数字与既有相位/车辆等待。
  5. 更新 Node 与纯 Python 测试,构建目标区域并用 parity 检查 GLB 差异只包含预期新增设施; 人工核对主 GLB 静态构件和 preview 动态覆盖层。

验证

npm run test:preview-assets
node --check scripts/lib/cesium-preview.js
python3 -m unittest discover blender/tests
npm run build:area -- --config config/areas/nantaizi-lake-innovation-valley.json --stages intermediates,blender,cesium,preview
git diff --check

已验证决策与故障记录

  • assets/fonts/7LED-1.ttf 已纳入版本管理;该字体是反向 LED 轮廓。直接填充文字会得到 绿色背景/黑色字,曲线描边会得到空心描边字;当前实现改为采样负轮廓并构造实心挤出 棱柱,独立 Blender 渲染已确认数字形状正确。
  • 为支持相位字色且避免复制几何,动态导出拆为灯珠 GLB + countdown group 0/1 两个 GLB。 预览三者共用同一 placement倒计时模型使用 colorBlendMode=REPLACE 做模型级换色。
  • 失败方案Cesium Model.getMaterial().setValue() 修改普通 glTF PBR uniforms用户实测 数字仍为绿色,不能恢复使用。
  • 失败陷阱:导出器的 groups 是完整材质名集合,不能检查精确字符串 "Countdown Group 0" 必须用 "Countdown Group 0" in name 的包含判断,否则导出阶段报 Traffic countdown collection 0 is empty
  • glTF 的 Could not calculate tangents 警告来自无 UV 的纯色倒计时 mesh只要三个 GLB 均成功生成,它不是阻断错误。

回退

删除静态信号 Blender 模块、附属锚点输出和浏览器动态覆盖层QGIS、道路/标线和既有路线 JSON 不受影响。