feat: add cesium traffic signal countdowns
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
# 设计:Cesium 路口信号灯可视化
|
||||
|
||||
## 边界
|
||||
## 分层边界
|
||||
|
||||
信号灯属于 Cesium 验证预览层,不进入 QGIS、GeoPackage、场景九图层、Blender 或主 GLB。
|
||||
区域构建只额外写入一个轻量的信号锚点 JSON;预览运行时读该 JSON 后以 Cesium 原生
|
||||
Entity/Primitive 构成灯杆、灯头和发光灯珠。
|
||||
信号锚点不是 QGIS 业务图层:它不进入 GeoPackage、场景九图层或 QGIS 工程。`intermediates`
|
||||
在 `osm2streets_web_out/traffic_signals.json` 写出它;Blender 和 preview 都消费同一份文件。
|
||||
|
||||
Blender 的 `05_Props` 负责所有静态设施:灯杆、横杆、灯头、熄灭灯珠和倒计时牌外壳。它们
|
||||
随 `.blend` 和主 GLB 导出,成为正式场景的一部分。Cesium 预览只负责动态覆盖层:当前相位的
|
||||
发光灯珠、七段倒计时数字、Signals 显示开关,以及车辆在红黄灯前的等待。这样静态造型只有
|
||||
一份,浏览器不再用临时 Entity 重复搭建设施。
|
||||
|
||||
## 锚点与几何
|
||||
|
||||
@@ -13,7 +17,14 @@ Entity/Primitive 构成灯杆、灯头和发光灯珠。
|
||||
侧后方、道路外缘一侧,且朝向来车。没有可唯一关联的路口面、停止线过短或无法确定外侧时,
|
||||
不输出锚点。
|
||||
|
||||
输出保存灯杆坐标、对应停止线坐标、朝向和稳定 ID,避免浏览器重新解析 GeoJSON 或 OSM。
|
||||
输出保存灯杆坐标、对应停止线坐标、朝向、稳定 ID 和 `layout` 几何契约,避免 Blender 或
|
||||
浏览器重新解析 GeoJSON 或 OSM。`layout` 包含灯头、灯珠、横杆和倒计时牌的尺寸与偏移;
|
||||
其中横向偏移以车辆行驶方向为基准,正值表示驾驶员右侧;`mastHeightMeters` 与
|
||||
`headCenterHeightMeters` 是横杆和灯壳的共同中心高度。三颗灯珠相对灯壳中心排列,而倒计时牌
|
||||
的垂直偏移为零、固定在横杆上。
|
||||
Blender 使用
|
||||
`Projector.xy((longitude, latitude))` 转成本地米制坐标,并以 `headingDegrees` 旋转;Cesium
|
||||
以同一字段派生地理位置与灯面朝向。
|
||||
每个路口按相对进口方向分为两组对向相位;统一循环绿、黄、全红切换。
|
||||
|
||||
预览将每条路线按累计米数投影到信号停止线。只有距离阈值内且行驶方向与信号进口一致的
|
||||
@@ -23,10 +34,11 @@ Entity/Primitive 构成灯杆、灯头和发光灯珠。
|
||||
## 预览交互
|
||||
|
||||
预览加载锚点 JSON 失败时记录 warning,场景、路线与车辆仍可用。加载成功时信号灯默认显示,
|
||||
并在现有 View 控件中提供独立 Signals 复选框。灯珠以 emissive 材质区分点亮和熄灭状态,
|
||||
不依赖环境光;灯杆用低多边形几何,避免增加外部模型资产。
|
||||
并在现有 View 控件中提供独立 Signals 复选框。动态灯珠和数字以 emissive 材质区分点亮和
|
||||
熄灭状态,不依赖环境光;静态部分由 GLB 的低多边形 MeshBatch 几何承载。
|
||||
|
||||
## 风险与回退
|
||||
|
||||
信号灯是示意设施,不能视为 OSM 语义。复杂交叉口或人工修补后的不完整标线宁可跳过,也不
|
||||
摆放到行车道中央。删除新锚点输出及预览加载逻辑即可完整回退,不影响既有主 GLB 或路线 JSON。
|
||||
摆放到行车道中央。回退时删除附属锚点输出、`05_Props` 信号构件和 Cesium 动态覆盖层即可;
|
||||
QGIS、道路/标线和既有路线 JSON 不受影响。
|
||||
|
||||
Reference in New Issue
Block a user