好久不见,AR发展怎么样了?

语言: CN / TW / HK

theme: juejin

好久不见,AR发展怎么样了

三年又三年,当初火爆的虚拟技术是不是已经销声匿迹了?本文将带领读者了解当下的AR技术发展现状,并简单介绍涉及AR的关键技术,最后将手把手示意如何运行起来一个AR Demo。如有帮助请不吝点赞、评论、留言。

一、虚拟现实技术简介

1.1 AR/VR/MR概念区分

AR(Argumented Reality): 对现实的一种增强,设备对现实识别(形状、位置、动作、边缘),从而将虚拟信息叠加在现实中。

*playground AR游戏(图片来自苹果应用商店)*

VR(Virtual Reality): 沉浸式虚拟现实,对用户提供一个完全的虚拟世界,不必考虑现实世界的情况。

*world of diving游戏(图片来自网络)*

MR(Mixed Reality): 混合虚拟技术,将现实环境和虚拟环境进行合并。MR会增强视觉(修改现实物体),比如医学上使用MR技术来透视人体,使医生在视觉上能看到体内的血管,更精准的完成外科手术。很多人觉得MR只是一个新的概念炒作,本质还是AR。

*查看身体上的血管(图片来自网络)*

文章撰写时是2021年12月,此时VR技术和设备已经初见雏形,比如各种VR游戏,以及具备消费级成熟度的OculusQuest 2设备,基于以上生态元宇宙概念被热炒。

相比VR,要达到成熟的消费级体验,AR还有很多技术困难。本文主要讨论AR的发展脉络及现状,VR技术不在主要的讨论的范畴里。

1.2 AR历史发展及现状

  • AR历史的开端

1992波音公司研究员提出了AR的这个词组,此后几年AR的概念慢慢火热了起来,不过一直处于实验室的范畴。

  • 第一个AR SDK

到1999年,Kato Hirokazu主导了AR Toolkit项目,可以做2D物体识别,并让虚拟物体跟随实体物体行动。2000年,ARToolkit项目开源,2005年,它支持塞班系统,成为世界上第一个移动端开源AR-SDK。2008年开始,它陆续支持了IPhone和Android。截止到2021年12月,ARToolkit支持世界上大部分流行的平台,并且可以集成到Unity平台,相互配合开发AR游戏。

  • 第一个AR体感游戏

2003年索尼在Playstation上发行EyeToy,通过外置摄像头检测玩家的动作,来进行游戏互动。一时间体感AR游戏大行其道。

  • 引爆AR概念的Google Glass

虽然AR技术一直在稳步发展,但是真正将AR概念带入普通大众的当属Google Glass。Google Glass利用的是光学反射投影原理(HUD),微型投影仪将光投到一块反射屏上,而后通过一块凸透镜折射到人体眼球,实现所谓的“一级放大”,在人眼前形成一个足够大的虚拟屏幕,可以显示简单的文本信息和各种数据

*这张图片我觉得不会侵权*

虽然Google Glasss更多意义上只是一个“戴在脸上的手机”,很多AR领域涉及的技术,诸如环境检测,用户交互技术并不涉及。但是它涉及了AR显示技术,将光线信息投射到了眼球。因此它的出现引起了人们的广泛讨论,一个是可穿戴设备,一个是AR技术。

  • AR界的第一代黑科技——HoloLens

2015年微软发布了震惊世界的AR头戴式设备HoloLens,它能检测外界环境,将虚拟物体和显示环境融合,并且它通过追踪用户手势来完成交互。这是真正意义上的第一款相对成熟的AR设备,它体积小,具备独立的计算和储存能力,穿戴时不影响用户查看外界环境。2019年,微软发布HoloLens 2解决了第一代设备视野狭小的问题,并且大幅度提升了手势追踪的准确性。

*辅助工业设计(图片来自网络)*

HoloLens2虽然相对成熟,但是成本居高不小,截止到本文成稿,售价高达3500美元。另外,虽然它相对其他AR设备体积较小,但仍旧重达500g,iPhone 12重 152g,一般用户很难接受将三台手机戴在头上的重量。好消息是,微软透露HoloLens3 重量将小于90克。

  • AR界的其他玩家

被大众广泛质疑为”PPT骗子公司“的Magic Leap 2017年发布第一代产品Magic Leap One。此外,苹果和三星都传闻要在2022年发布旗下的AR眼镜。国内企业有酷派的Xview系列、亮亮视野、阿里钉钉NrealLightAR推出了AR产品设备。

*苹果智能眼镜概念图(图片来自网络)*
  • AR界的标志性游戏

Niantic 公司在2017发布了 Pokémon Go 游戏,这款基于LBS的游戏火遍全球,发行首月流水超2亿美元,上市3年后总流水达26.5亿美元。Pokémon Go的成功迅速引爆了AR游戏行情。此后AR游戏不断涌现,比如建造类、下棋类等。

*pockmon go和My Country游戏界面(图片来自网络)*
  • 移动端AR的流行SDK

目前移动端AR SDK碎片化比较严重,国外国内产生了几十个不同sdk,下面将列举一些有重要影响力的sdk。

  • 苹果的ARKit:2017发布截至目前,被认为性能最强的,最具商业潜力的sdk。配合SceneKit 、SpriteKit、RealityKit等苹果的框架库可以开发出非常炫酷的app,优点是几乎所有iOS设备可以无缝使用(iOS 11.0+,iPhone 6s+)。
  • Google ARCore:同时支持Android和iOS,因为对硬件没有控制力,综合衡量比不上ARKit,但是对于消费者来说没有显著差别。
  • 历史悠久的ARToolkit:前文已经有介绍,开源社区不是很活跃。
  • 商业化sdk Vuforia:性能表现很不错,支持Android、iOS、UWP,如果可以它底层会使用ARKit或ARCore,如不过不满足使用条件,它会使用自带的AR引擎能力。
  • 国内有影响力的AR公司:商汤公司的SenceAR,太虚AR、老子云等。

大部分SDK都支持成为Unity里面的一个开发插件,同时Unity官方为了减轻开发者的sdk学习成本,将包括ARkit、ARCore在内的多个sdk再次封装成了ARFoundation SDK,当然这个SDK只适合在Unity编辑器里面开发。

1.3 现状总结和展望

目前AR技术还有很多痛点,主要集中在以下几个方面:

  1. 检测环境的计算量很大,因此实时性不好,很多设备一旦快速移动,虚拟物体和环境的融合就会产生漂移误差。
  2. 耗电发热,计算和摄像头频繁使用使得AR设备续航较低,大部分都低于5小时。
  3. 穿戴式ar显示技术未成熟,大部分设备在清晰度、视野、体验性上都有些不足,甚至会产生一定发“晕动症”。
  4. 体积没有小型化,即使苹果眼镜的渲染图,也比普通眼镜笨重得多。
  5. 软件生态不成熟。

基于以上原因,AR生态整体用户规模相比VR较小,AR眼镜主要应用在B端的企业定制化领域中,比如医疗、军工、远程协助等。移动端AR内容应用主要集中于工具、游戏两大类别,而且大部分只适合“慢移动速”、“地图环境狭小(室内)”的应用场景。

5G技术的发展被人们认为是AR技术的一个重大助推基建,基于云计算的理念,5G带来的高传输速度可以让AR设备架构发生改变:即放弃计算结构,将计算任务由云资源负责,AR设备只负责摄入和显示画面。这样一来,AR设备将能克服计算性能、耗电、发热、体积大等缺点。

二、AR领域的关键技术简介(学点原理)

2.1 探知环境的技术(自我定位、检测3D物体、环境建模)

AR技术的第一个独特的技术就是设备如何去“理解”外界环境,大部分AR技术都是将外界环境记录成“点阵云”,比如一个3D物体,设备会去识别它的边缘、尺寸、以及一些关键的特征点。这些点加上深度信息(或者说距离信息)就成了立体的三维坐标,多个点就组成了“点阵云”。一般来说建立整个环境地图的建模的流程如下:

  1. 用户抵达一个新场所,开启摄像头。
  2. 设备根据陀螺仪等传感器确定自己的高度、朝向,并以此为空间坐标系原点。
  3. 识别用户摄像头输入,进行“点阵云”建模。
  4. 用户到处移动,直至整个地图被扫描建模完成。

上述流程有一个专业的名词,即SLAM(Simultaneous Localization And Mapping,时定位与地图构建),在机器人领域得到广泛的应用,比如扫地机器人、送餐机器人等。

SLAM技术中有一个关键的技术点,即如何获得一个点的深度信息(距离信息)。业界有以下几种方案:

  • 双目匹配(两个摄像头)

这个是学习人眼获取深度信息的一种模式,因为人有两只眼睛,通过两只眼睛看到的图像做对比,即可计算出物体离人眼的距离。因此双目匹配就是用两个摄像头拍摄画面,利用物体在两幅画面的横坐标之差来计算距离,下图是一个概念示意图,真实情况没这么简单。

*双目匹配计算距离概念示意图*
  • 单目测距

人闭上一只眼睛也能获得物体的远近信息,这个是怎么做到的呢?主要是通过生活经验积累再辅助一些眼球肌肉记忆。这个“经验”对应到程序里就是训练出来的算法模型。苹果公司就在单目测距上有很深的积累,很多老式机器只有一个摄像头,苹果公司也能通过图像算法识别物体的远近。这个方案是最节省成本的一个方案,无缝适配现存大部分设备。

  • 深度摄像头

利用激光雷达或结构光(RGB-D)在物体表面的反射获取深度点云;利用红外线照射到物体上,测量ToF时间等。大部分扫地机器人都采用了深度摄像头来探测地形。iPhone12 Pro系列在摄像头下面多了一个LiDar激光雷达,它使用激光来判断距离和深度

*扫地机器人利用深度摄像头来探测地形*

SLAM技术在各行各业都有广泛的应用,不止局限在AR领域,比如自动驾驶、3D建模、机器人,无人机都是SLAM的应用领域。

2.2 显示技术(HMD\光场成像\全息投影)

AR的另一个关键技术就是显示技术,主要分为三类:

  • 视觉差显示技术

原理和3D电影一样,利用两个眼睛看到不同的图像形成视觉差。利用两个不同的显示器或者光线投射器,使得左右眼看到同一个物体的不同视角的图像,人的大脑会将两幅图像合并从而获得“立体感”。

  • 全息投影技术

全息投影技术可以通过将光线投射在空气或者特殊的介质(如玻璃、全息膜)上呈现3D影像。人们可以从任何角度观看影像,得到与现实世界中完全相同的视觉效果。目前很多舞台都利用了全息投影技术,比如中国春晚、初音未来演唱会等。

*初音未来演唱会*
  • 光场成像技术

不利用视觉差,设备直接向人的眼球投射一个3D物体光线场,模拟大自然最真实的光线反射情况。这个概念来自Magic Leap 公司2015年的宣传视频,当然后面被证实该视频系后期合成。Magic Leap凭借这个技术概念获得了无数投资机构青睐,市场估值高达45亿美元,投资机构包括了谷歌、阿里巴巴、高通等知名企业机构。截止到2021年12月份,Magic仍旧没有拿出任何一款光场成像技术设备,因此被业界广泛质疑和批评。

*Magic Leap的裸眼AR概念视频*

显示技术关乎AR的最直接体验感受,目前市面上的AR设备都没有做到“自然级”的体验。长时间使用都会让人产生不适,如果光场成像技术能够成熟,那人观察AR物体的汇聚距离和聚焦距离就会一致,有效缓解“晕动症”问题。

2.3 交互技术

目前为止,除了传统的触摸,按键、语音等技术,AR大致有3个方向的虚拟交互技术:

  • 动作捕捉: 主要是手部动捕捉,目前Hololens2在这一块上技术积累最雄厚,不需要任何外设,直接通过手势就可以流畅操控设备。
*Hololens 2的手势追踪示意*
  • 眼动追踪: 使用摄像头捕捉人眼或脸部的图像,然后用算法实现人脸和人眼的检测、定位与跟踪,从而估算用户的视线变化。目前市面上已经出现了多款成熟的眼动仪,配合眼动仪可以更方便的玩3D游戏,比如通过视线转动就可以移动镜头,不再需要鼠标移动。眼动追踪还有很多应用场景,比如测谎仪、专注力检测等。不少远程教育公司准备使用眼动仪来判断学生是否在专注的听老师讲课。
*眼动追踪-定位人的瞳孔*
  • 脑机接口: 通过识别大脑活动电信号来操控设备,马斯克旗下的Neuralink公司通过向大脑植入十分之一发丝粗细的神经线,来检测和传输大脑的信号。这个方案相比无植入方案信号检测和处理更加灵敏和准确。下图是Neuralink公司展示的猴子通过脑机接口玩电子游戏的视频,传送门在此
*Youtube视频-猴子通过脑机接口玩游戏*

这些交互技术看起来都十分激动人心,不光能应用于AR,VR领域同样适用。笔者认为,我们正处于一个大时代来临的前夜,接下来十年将产生远比移动互联网普及更剧烈的变化(2021年10月28日Facebook正式改名为Meta)。

三、开发者技术入门

3.1 技术选型

目前头戴式设备并不普及,各个厂商各玩各的,微软Hololens2是当前最强的头戴式AR设备,它的开发方式是Unity+MRTK插件,目前Hololens主要用在企业级的场景中,如果想在这个平台上创业,建议深耕一个应用场景,比如军工、远程协助等。其他的AR头戴式设备暂时可以放弃,坐等大玩家入场(苹果、三星等)。

移动端AR应用开发者建议分别抱紧Google和苹果的大腿,根据1.2节中的介绍,可以分别学习ARCore和ARKit两个SDK。这两个SDK理论上也会被将来的AR头戴式设备所使用,所以这时候入场并不是白费工作。

跨平台开发者建议Unity平台,使用Unity官方封装好的ARFoundation SDK,屏蔽掉平台差异。

3.2 AR SDK普遍具备的功能

下表来自于Unity官网(略作文字翻译梳理),很好的概括了大部分AR SDK具备的功能,开发者通过这个表可以初窥AR是怎么运作的。

| 功能 | 描述 | | ------------ | ------------------------------------------------ | | 设备跟踪 | 跟踪当前设备在物理空间中的位置和方向。 | | 射线投射 | 通常用于确定虚拟内容的显示位置,即投射一条虚拟线条,来确定虚拟物体和真实物体的相对位置。 | | 平面检测 | 检测水平和垂直表面(例如咖啡桌、墙壁)的大小和位置。这些表面被称为“平面”。 | | 参考点(特征点) | 跟踪平面和特征点随时间变化的位置。 | | 点云检测 | SLAM中的重要机制,参考前文2.1节 | | 手势 | 根据人的手,将手势识别为输入事件。 | | 面部识别 | 检测人脸,比如出现人脸就启动AR效果附着在脸上。 | | 2D 图像跟踪 | 检测环境中的特定 2D 图像。比如识别到一张特定二维码就启动AR效果 | | 3D 对象跟踪 | 同理于上 | | 环境探测 | 检测环境特定区域中的光照和颜色信息,这有助于使AR内容更好的与环境融合,比如产生阴影等。 | | 网格 | 生成与物理空间相对应的三角形网格,因此更能够与物理环境的表示形式进行交互和/或在视觉上覆盖细节。 | | 2D 和 3D 人身跟踪 | 无需多说,自行体验。 | | 距离和遮挡 | 将到物理世界中对象的距离应用于渲染的 3D 内容,从而实现物理对象与虚拟对象的逼真混合。 | | 多设备跟踪 | 在同一个 AR 会话(游戏)中共享和显示其他AR设备的位置。

3.2 ARFoundation SDK尝鲜(Mac+iOS)

笔者是Android开发者,但是手头没有支持AR的设备,因此选择iOS来尝鲜AR,先把必要的工具下载好:

  • Unity:需要注册一个Unity ID,类似Apple ID的作用,如果只是学习使用,可以下载Unity 个人版本(建议使用UnityHub来下载和管理Unity)。
  • Xcode:Unity编译过程会先生成一个Xcode工程,然后由用户在Xcode中配置参数来编译最终app。
  • Visual Studio Code及其配套插件:Unity没有代码编辑能力,点击脚本会默认跳到用户设置的编辑器去编写代码。

开始新建一个项目:

  1. 通过UnityHub来新建项目,默认有一个AR工程模板。

  1. Unity新建完成后可以看到左上角已经默认建立了一个Scene,里面包含了AR Session Origin和AR Session。

  1. 工程新建完成后,在Unity File->Build Setting中切换目标编译平台为iOS。
  1. 上图继续点击Player Settings..,选择在启动时安装AR套件。

  1. 通过阅读demo代码(C#),可以发现此demo的功能是检测平面,并且用户点击某处平面可以放置一个物体。

  1. 此处demo功能其实没有完善,点击放置的物体没有创建和设置,在Unity中创建一个Cube预制体,并拖动到AnchorCreator.cs脚本的成员变量上(不要慌,这个就是Unity的机制)。

  1. 终于可以开始编译运行了,点击Unity中File->Build AndRun,会默认生成一个Xcode工程,并自动打开Xcode,在Xcode里面登录AppleId用于真机调试,并配置好签名等信息。

  1. 运行效果如下,首先地毯被检测出来是一个平面,上面打满了一个个白点。点击地毯创建了一个Cube在地面上,再次点击又创建了一个。

限于篇幅和精力(偷懒?),demo有关内容将不再深入展开。读者可以自行尝试如下内容:

  • 将这个屎黄色的Cube替换成更漂亮的AR物体,比如一个小恐龙、一个坦克、一条奶狗。
  • 为AR物体添加一些简单交互事件,比如跟随你的设备随机移动(遛狗?)。
  • 来一些游戏交互,比如点击坦克,它就发射子弹。

如果读者有需求可在评论区留言,笔者将视需求情况再出一篇文章详细介绍如何实现更多的AR效果。

总结

目前AR技术已经具备相当的成熟度,笔者非常期待2022年苹果和三星将要上市的AR眼镜,届时可能正式开启万物AR的时代。移动互联网风口你没有抓住,不妨在AR或者VR风口上分一杯羹。有人会担心此时入场会不会做无用功(炮灰)?笔者认为不会,开发者、交互设计师可以先在移动端AR/VR上积累经验。AR/VR的交互方式和技术都显著不同,这些的积累的经验和技术是可以复制到AR眼镜上去的,眼镜完全可视为一个戴在脸上的手机,不是吗?

现在,不管是苹果的技术还是Google的技术都已经进入到一个稳定阶段,而且AR眼镜会继续使用现有的SDK技术,因此开发者现在入场是一个不错时机。

那么站在一个普通开发者角度,我们应该储备哪些技术呢?

  • Unity技术栈(C#):不管是不是开发游戏,Unity都是必学的,十分适合构建3D内容。
  • ARKit SDK技术栈(苹果生态不多说):消费级市场最庞大的技术栈,想挣钱不能离开它。
  • Hololens技术栈(C#):可选,地表最强AR穿戴式设备,你不能忽视它突然爆发的可能性,而且赛道很新(后浪拍死前浪的机会?)
  • ARCore SDK(JAVA+kOTLIN):可选,跟你学Android的理由一样,占据设备多,门槛低,应用领域极广,最具就业潜力的技术栈,将来也许你去开发机器人AR程序也说不定,是不?

笔者目前比较偏爱Unity+ARKit生态(缺钱),因此会在这方面持续深耕,如有需要、疑问请在评论区留言。

参考文档

web与虚拟现实之webAR:https://kstack.corp.kuaishou.com/article/4334

快手万物AR:https://mp.weixin.qq.com/s/0LcJwlJorFKAOZMOApCOcA

AR和MR的区别:https://www.zhihu.com/question/39157545

苹果AR发展史:https://zhuanlan.zhihu.com/p/420474476

AR开发入门之总篇:https://zhuanlan.zhihu.com/p/87017830

ARToolkit简介:https://www.cnblogs.com/polobymulberry/p/5857372.html

单目深度领域研究:https://www.zhihu.com/question/38684776/answer/84746440

单目视觉测距前世今生:https://zhuanlan.zhihu.com/p/56263560

Magic Leap的光场技术探秘:https://www.zhihu.com/question/42905291/answer/107874437

眼动追踪技术:https://zhuanlan.zhihu.com/p/101479231

Unity中文社区课堂:https://learn.u3d.cn/

Unity官方文档:https://docs.unity3d.com/cn/current/Manual/UnityManual.html

Unity B站官方:https://space.bilibili.com/386224375/channel/series

hi, 我是快手电商的云台

快手电商无线技术团队正在招贤纳士🎉🎉🎉! 我们是公司的核心业务线, 这里云集了各路高手, 也充满了机会与挑战. 伴随着业务的高速发展, 团队也在快速扩张. 欢迎各位高手加入我们, 一起创造世界级的电商产品~

热招岗位: Android/iOS 高级开发, Android/iOS 专家, Java 架构师, 产品经理(电商背景), 测试开发... 大量 HC 等你来呦~

内部推荐请发简历至 >>>我们的邮箱: [email protected] <<<, 备注我的花名成功率更高哦~ 😘