项目背景
AIA 苏州数字展厅的项目,展厅分了几块独立区域。AI 变老魔镜拍照区、长三角 VR 全景导览区、机房中央控制区,每块跑在独立 PC 上,需要通过网络协同、统一管理。另外展厅内容(宣传视频、全景图、音频这些)要能远程更新,不然每次都得跑现场一台台拷,太折腾。
体验 / 效果
AI 变老魔镜

访客走到魔镜前,选想看的年龄段,系统调腾讯云 AI 引擎实时出面部老化效果:
- 屏保轮播:没人时大屏循环播品牌视频
- 年龄选择:60 岁 / 80 岁两档,点一下就开始
- 3 秒拍照:倒计时自动抓拍,摄像头画面实时镜像预览,没拍好能重来
- 云端 AI:图像 Base64 上传到腾讯云 FaceID,先做人脸检测(
DetectFaceAttributes),再过年龄变化模型(ChangeAgePic) - 扫码取图:处理后的人像生成二维码投到屏幕上,手机扫码就能保存原图,30 秒后自动回到首页

VR 全景导览

覆盖长三角上百家机构和地标的 VR 全景浏览系统,按九宫格结构逐层深入:
- 九宫格主题入口(3×3 网格):9 大分类主题卡片,自动轮播高亮
- 长三角地图:上海、南京、苏州、江苏省其他地区,点锚点进对应区域
- 机构列表:分页滚动(每页 28 条),自动轮播动效,触屏滑动翻页
- 视频介绍:AVProVideo 播放机构宣传片,进度随便拖
- 360° 全景:球形全景漫游,触控拖拽旋转、俯仰缩放,旋转速度可调

所有内容(视频、全景图、缩略图、音频)走 HTTP 管线自动下载到本地 StreamingAssets,启动时跟服务器版本号比对,只下有变化的文件。
中央控制系统

整个展厅底层跑一套分布式控制网络,管所有硬件:
- 5 路 TCP 外设控制:分别管投影仪、电动幕布、灯箱、灯光系统(冷/暖/亮度),指令发出去就有反应
- UDP 传感器接入:实时收光电子/红外传感器的访客检测信号,自动唤醒对应展位
- 串口继电器:控制展厅各分区电源通断,9600 波特率串口通信
- Wake-on-LAN:从
MacList.csv读 MAC 地址表,一键批量唤醒局域网里所有展位 PC - WebSocket 远程运维:云端后台能执行开机、关机、复位,连接断了自动重连,双向心跳检测
中央控制台作为 TCP Server,通过 menu_id 前缀向各客户端站精确广播指令,“0-CentralControl” → “10-MagicMirror” → “12-VR” 构成树状控制拓扑。
技术实现
AI 变老引擎
对接腾讯云 FaceID API,串了两个核心环节:DetectFaceAttributes 先做面部特征点检测(确认画面里有人脸、人脸角度合规),过了再调 ChangeAgePic 出年龄变化效果。图像全程 Base64 编码传输,处理后回传到自有 CDN。扫码环节用 ZXing 库在 Unity 端实时生成二维码,访客扫码直达 H5 图片下载页。
FSM 状态机架构
所有互动场景基于 QFramework FSM 搭了一套统一的状态流转。每个状态挂独立的进入/退出逻辑,状态切换由定时器超时、云端指令、传感器触发三类事件驱动。任何状态都能被中央控制台的远程指令打断,所以展位不管卡在什么状态都能拉回来。
分布式控制网络
中央控制台(Netly TCP Server)是整场的调度核心。指令用逗号分隔的编码格式,客户端按 menu_id 前缀过滤,只消费发给自己的命令。新增展位只要注册个新标识符,不用动中央调度逻辑。
内容自动更新
Update 场景启动时通过 Best HTTP 库请求云端 API 拿 ContentList 清单,对比本地缓存的 updateAt 时间戳,只下载有变化的 mp4 视频、mp3 音频、jpg 全景图。下载支持进度回调跟流式写入(FileStream),完成后自动跳正式体验场景。这样各展位内容不用人跑现场也能保持最新。
硬件集成
集成了投影仪 TCP 控制协议(开关机、信号源切换)、DMX 灯光协议(冷暖色温/亮度调节)、58mm 热敏串口继电器(分区电源控制)、光电传感器 UDP 信号接收、Wake-on-LAN 网络唤醒。所有硬件通信模块独立封装,参数通过 JSON 配置文件(Configs/ 目录)切换来适配不同展厅环境,不用重新编译。