跳到正文
AR / 文旅 · 2023

夜游太鹤湖

丽水首个 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 地图,直到步道上每个故事节点都能稳定重定位,再回头把每个锚点单独验证一遍。工程时间大部分花在这里,但这些在功能列表里一条也看不出来。

其中一个故事节点的重定位目标
每个故事节点都单独采集、单独验证,而不是靠一张覆盖整条步道的地图

一套没有先例的技术组合

我把 Immersal、8th Wall 和 Three.js 组合在一起。做这个项目的时候,我找不到任何公开案例同时用这三样,所以集成只能靠试错,同时和两家厂商的运行时较劲。

分工是这样的:Immersal 负责视觉 SLAM 和持久化的空间地图,在几十米长的开放步道上锚定内容;8th Wall 提供浏览器运行时,游客扫个二维码就能开始,好奇的游客和体验之间不隔着任何安装;Three.js 负责渲染那些文化场景,这部分我想直接掌控,不想再套一层场景抽象。

免安装比任何渲染上的决定都重要。节日晚上,没人会用公共 Wi-Fi 下一个 200 MB 的 App,就为了看一条虚拟的鱼。

两种设备,一条管线

同一套内容还跑在 Rokid 消费级 AR 眼镜上,作为手机体验之外的高端版本。我在步道上实测过,对着的就是当初建图用的那座桥和那段湖岸。

在现场测试 Rokid 版本
对着当初采集空间地图的同一段湖岸,验证眼镜版本

手机 WebAR 和专用 AR 眼镜的输入方式、视场角和性能上限都不一样。我让两边都从同一条内容管线取内容,所以创意团队临时改了某个故事节点,两个版本也能保持同步。一个工程师在上线窗口里同时维护两套分叉的版本,这笔账不划算。

上线那一周学到的

元宵节高峰期间我一直在现场。人群密度对 AR 活动的影响,是在空荡荡的步道上测多少遍都预料不到的:人会挡住追踪器需要的特征,大家举手机的角度是你从没测过的,热门节点前排起的队伍也会改变你原本设计好的观看位置。

能在现场实时修问题,比多准备一周更有价值。如果再做一次,我会把重定位失败的处理放在最前面做,而不是最后。追踪丢了的游客需要的是平滑恢复,不是一个卡住的画面;而那段兜底逻辑,我是在压力下赶出来的,不是事先设计好的。

地方媒体对项目的报道
《丽水日报》关于全县首个 XR 文旅项目的报道

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

图集

夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen夜游太鹤湖 screen
关注我

我会持续分享正在做的项目、实验和经验。

YouTube 上发视频,X 上发短笔记。这里的每篇文章都会链接到两边。

YouTube