Web 3D 建筑驾驶舱

Web 公共门户(apps/web)在首页渲染一个全屏 Babylon.js 3D 建筑场景,叠加悬浮控制面板和仪表盘小组件。
3D 场景
场景以一个 glTF/glB 格式的三维建筑模型为基础,支持:
- 热点标签(Hotspot):在建筑特定位置悬浮显示区域名称,点击触发交互
- 辉光效果(Glow Layer):突出显示当前选中的区域
- 自动旋转相机:可配置旋转速度和初始角度
- 环境预设:切换不同 HDR 环境贴图(工作室 / 公园 / 黄昏等)
相机控制
场景右上角浮动控制按钮:
| 操作 | 说明 |
|---|---|
| 🔍 放大 | 拉近相机视角 |
| 🔍 缩小 | 拉远相机视角 |
| ↺ 复位 | 恢复默认相机位置和角度 |
| ⛶ 全屏 | 切换全屏模式(隐藏仪表盘覆盖层) |
全屏模式下仪表盘小组件淡出,3D 场景占据整个视口,适合沉浸式浏览。
SSE 连接状态
页面左上角显示 SSE(Server-Sent Events)连接指示器:
- 🟢 绿色:已连接,实时数据正常推送
- 🟡 黄色:正在重新连接
- 🔴 红色:连接断开
连接使用短期 JWT 令牌(有效期 30 秒),由 /api/events/token 动态签发,心跳间隔 30 秒。
区域导航
左侧面板列出建筑内的所有区域/楼层。点击某个区域:
- 相机平滑飞至该区域位置
- 该区域热点标签高亮显示
- 区域关联的数据在右侧面板更新
时间与日期
页面顶部右侧显示当前日期和时间(使用浏览器本地时区)。