夜游太鹤湖
丽水首个 XR 文旅项目:围绕太鹤湖的夜间 AR 步道体验,用 Immersal SLAM 做空间锚定,同时跑在手机和 Rokid AR 眼镜上。
- 角色
- 唯一开发者
- 客户
- 浙江省青田县政府
- 代理商
- Chance 3D
- 年份
- 2023
- AR
- Immersal
- 8th Wall
- Three.js
- Rokid
- Cultural Tourism

项目背景
青田县政府想让游客天黑以后沿着太鹤湖步道走一圈,一路上遇见青田自己的历史:发光的稻鱼、古老的舴艋舟,还有向青田最有名的海外游子黄仁勋致意的一段。文化叙事和故事节点由 Chance 3D 负责。技术这边只有我一个人,空间地图、AR 运行时、给两种完全不同设备的交付层都归我,上线那一周还得站在步道上,哪里坏了修哪里。
丽水官方媒体称它是全市第一个 XR 文旅项目。元宵节当天,平台服务了大约 3,000 名游客,记录到约 14,200 次交互。

为什么到了晚上追踪就失灵
户外视觉 SLAM 需要稳定、有纹理、光照充足的几何特征,而夜里的步道一样都没有。

这张图里几乎所有明显的特征,不是光源,就是光源在水面上晃个不停的倒影。白天建图、指望晚上能重定位,是行不通的:白天地图依赖的特征晚上看不见,晚上看得见的那些又从来没被记录过。
所以我改在晚上建图,条件和游客实际使用时一样。我分几个晚上去现场采集,反复重建 Immersal 地图,直到步道上每个故事节点都能稳定重定位,再回头把每个锚点单独验证一遍。工程时间大部分花在这里,但这些在功能列表里一条也看不出来。

一套没有先例的技术组合
我把 Immersal、8th Wall 和 Three.js 组合在一起。做这个项目的时候,我找不到任何公开案例同时用这三样,所以集成只能靠试错,同时和两家厂商的运行时较劲。
分工是这样的:Immersal 负责视觉 SLAM 和持久化的空间地图,在几十米长的开放步道上锚定内容;8th Wall 提供浏览器运行时,游客扫个二维码就能开始,好奇的游客和体验之间不隔着任何安装;Three.js 负责渲染那些文化场景,这部分我想直接掌控,不想再套一层场景抽象。
免安装比任何渲染上的决定都重要。节日晚上,没人会用公共 Wi-Fi 下一个 200 MB 的 App,就为了看一条虚拟的鱼。
两种设备,一条管线
同一套内容还跑在 Rokid 消费级 AR 眼镜上,作为手机体验之外的高端版本。我在步道上实测过,对着的就是当初建图用的那座桥和那段湖岸。

手机 WebAR 和专用 AR 眼镜的输入方式、视场角和性能上限都不一样。我让两边都从同一条内容管线取内容,所以创意团队临时改了某个故事节点,两个版本也能保持同步。一个工程师在上线窗口里同时维护两套分叉的版本,这笔账不划算。
上线那一周学到的
元宵节高峰期间我一直在现场。人群密度对 AR 活动的影响,是在空荡荡的步道上测多少遍都预料不到的:人会挡住追踪器需要的特征,大家举手机的角度是你从没测过的,热门节点前排起的队伍也会改变你原本设计好的观看位置。
能在现场实时修问题,比多准备一周更有价值。如果再做一次,我会把重定位失败的处理放在最前面做,而不是最后。追踪丢了的游客需要的是平滑恢复,不是一个卡住的画面;而那段兜底逻辑,我是在压力下赶出来的,不是事先设计好的。

项目后来拿了几个元宇宙和文旅类别的地区奖项。我自己的收获更具体一些:户外 AR 成不成,就看你是不是在游客真正会站的那种条件下建的图。
图集










