本文主要是介绍Why is ARKit better than the alternatives?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
苹果在今年的 WWDC 上发布的 ARKit 对增强现实领域(Augmented Reality)产生了巨大的影响。开发者首次发现,一款强大并广泛可用的 AR SDK“恰好”适用于他们的 App。它不需要对标记、初始化、深度摄像机和专用的创建工具进行修改。不出所料,这引发了一阵 Demo 热潮。但是大部分开发者都不知道 ARKit 的工作原理,也不了解其优于其他 SDK 的具体原因。揭开 ARKit 背后的原理有助于发现如今 ARKit 的局限之处、完善内容、以及帮助我们预测 Android 和头显(VR 或 AR)等设备何时会有类似的功能出现。
本文笔者已经从事 AR 行业九年了,曾经也搭建过与 ARKit 完全一样的技术(但不幸的是当时并没有与之相对应的硬件支持)。关于 AR 系统是如何搭建的以及为何这样搭建,作为一名业内人士,我也有着自己的看法。
这篇博客是为那些掌握一些科学技术但不是计算机视觉工程师的人而写的。从科学的角度看,我知道我所做的一些简化不是百分百的准确,但也希望能够帮助人们在已有的基础上有更深一层地理解。
ARKit 是基于什么样的技术进行搭建的?
从技术角度来看,ARKit 是一种具有简单的 2D 平面检测功能的视觉惯性测距系统(Visual Inertial Odometry,简称 VIO)。VIO 意味着可以通过软件实时追踪用户的空间位置(用户在空间上的 6dof 姿势),即在每帧刷新之间重新计算用户的位置,速度为每秒 30 次及以上。这些计算是并行完成两次。通过视觉(摄像)系统将现实世界中的一个点与摄像机传感器上的一帧像素相匹配,从而追踪用户的姿势。惯性导航系统也可以追踪用户的姿势(用户的加速度计和陀螺仪跟踪统称为惯性测量单元,或者叫 IMU)。接下来,卡尔曼滤波器结合两个系统的输出结果,决定哪一个系统提供的估测更接近用户的“真实”位置(地面实况)并通过 ARKit SDK 更新位置。VIO 系统追踪用户的 iPhone 在六维空间里的移动,好比用户汽车里的里程表测量车的行驶距离一样。6 维是指 xyz 方向上的三维运动(移动)加上俯仰/偏转/滚动(旋转)。
VIO 带来的最大好处是 IMU 的读数大约为 1000 每秒并且基于加速度(用户的移动)。曾经使用的航位推算法用于测量 IMU 读数之间的设备运动,但这种方法推算是一种猜测,就像如果我让你向前走一步,然后猜测走了多远一样,此时会用航位推算法来估计距离。稍后我会介绍如何准确地进行猜测。惯导系统中的误差会随时间累积,所以 IMU 帧率越长,惯导系统从视觉系统中复位后的时间越长,追踪位置距离真实位置偏差就越多。
视觉/光学测量使用摄像机的帧率,通常为 30fps 并且依赖距离(不同的场景帧率也有所不同)。光学系统通常随着距离的增大误差也不断的增大(时间也会有轻度影响),所以用户运动得越远,误差就越大。
好消息是每个系统的优点都抵消了另一个系统的缺点。
所以视觉和惯性跟踪系统是基于完全不同的测量系统,,没有相互依赖。这意味着可以盖住摄像机或者只看到一个具有很少光学特征的场景(比如白墙),而惯性系统可以为一些帧中“携带载荷”。或者设备在完全静止的条件下,视觉系统可以呈现出一个比惯性系统更加稳定的姿态。Kalman 波器不断地选择最佳姿态,从而实现稳定跟踪。
到目前为止一切顺利,但有趣的是 VIO 系统已经存在很多年并在业界广泛认可,并且在应用市场已经有相当一部分应用。所以苹果使用 VIO 并不代表 VIO 本身怎样。我们要关注的是苹果系统为何如此健壮。
ARKit 的第二个关键点是简单的平面检测。有了“地面”你才能在上面建立内容,否则就会像在太空中一样乱浮动。“地面”是从光学系统检测到的特征(就是你在演示中看到的小点),而任意三点构成一个平面,通过算法将这些平面平均化,通过足够多的平面就可以估计出真实的平面位置。另外,这些点通常被称为“点云”,这是一个很容易混淆的术语。这些点都是用于光学跟踪的稀疏点云。稀疏的点云花费更少的内存和 CPU 时间来追踪,并且在惯导系统的支持下,光学系统追踪所需的点数量很少。这是一种不同于密集点云的点云,它看起来也接近真实。(注意一些追踪器使用密集点云来进行追踪, 所以这就更加混乱)
关于一些误解的说明
顺便说一下,我见过有人将 ARKit 比做 SLAM,或用 SLAM 来指代追踪。需要澄清的是,SLAM 是一个像“多媒体”一样非常宽泛的术语。追踪本身则是一个更加通用的术语而里程计则是更加具体的。但在 AR 相关的实际使用过程中可以通用,这很难分清。有很多方法来实现 SLAM,追踪只是综合 SLAM 系统中的一个组成部分。我认为 ARKit 是一个轻量或简版 SLAM 系统。Tango 或 Hololens 的 SLAM 系统拥有除了里程计之外更多的特性。
ARKit 的两个奥秘之处是:“如何从单镜头中得到 3D 效果?”和“如何获得度量标度(比如演示中的卷尺)”奥秘就在于完善 MIU 误差消除系统(使得航位推算猜测更加精确)。当做到这一点时:
为了获得 3D 效果,需要从两个不同的地方获得场景视图,然后对你的位置进行立体计算。我们眼睛就是这样看到的 3D 效果,一些跟踪器也因此而依赖立体相机。如果你有两台相机就很容易计算,知道它们之间的距离,而且同时捕获帧。用一个相机你可以捕捉一次画面,然后移动到下一个位置进行第二次捕捉。使用 IMU 航位推算你可以计算两次捕获位置之间的距离然后正常进行立体计算(事实上你可以多捕获几次使计算更加准确)。
为了获得度量尺度,系统同时依赖 IMU 的精确航迹推算。从 IMU 提供的加速度和时间测量中,你可以向后合并以计算速度并且再次向后合并以获取画面之间的实际距离。难点并非数学,而是从 IMU 中除去误差以获得近乎完美的加速度测量。在你移动手机的几秒钟之内,一个微小的错误每秒运行一千次,就会造成 30% 或更大程度的错误。事实上苹果已将这个误差降低到一位数,这一点很难得。
Tango、Hololens 以及 Vuforia 效果怎么样呢?
Tango 是一个品牌而非真正的产品。它由硬件参考设计(RGB、鱼眼、深度相机和 CPU/GPU)和提供 VIO 的软件堆栈(运动追踪)、细数映射(区域学习)和致密 3D 重建组成(深度知觉)。
Hololens 的软件堆栈完全相同,除了一些用于处理 CPU/GPU 进程和节省能源的 ASIC码(被称为全息处理单元)。
Vuforia 也是基本相同,但它是独立于硬件的。
以上所有都是用相同的 VIO 系统(Tango 和 ARKit 甚至用了由 FlyBy 开发的相同的代码库)。Hololens 和 Tango 都没有用深度相机追踪(尽管我相信他们即将将深度相机融入一些案例中),所以 ARKit 为什么这么好?实际上,ARKit 真的没有比 Hololens 好在哪里(我甚至认为 Hololens 的追踪器在市场上是最好的),但 Hololens 的硬件没有被广泛使用。微软原本可以在 Windows 智能手机上使用 Hololens 追踪,但我认为最后微软出于某种商业原因而没有这样做(因为他们会增加很多成本和时间来校准用于低容量手机的传感器,并且 Microsoft 版本的 ARKit 并不能说服开发商从 iOS 和 Android 转向微软)。
12 个月前,谷歌可以很容易地将 Tango 的 VIO 系统应用到市场上大量的安卓机上,但是他们也没有这么做。如果当时他们这样做了,那么 ARKit 将会是从后追赶,而不是像现在一样拥有突破。我认为(并不确定)这是因为谷歌不想为每一个 OEM 制造商都制作一个独特的传感器校准处理器。Tango 不同 OEM 厂商版本各不相同,谷歌并不想照顾到如此大量的 OEM 厂商,它只想对三星和华为等这种拥有大量设备的厂商进行支持。相反他们可以告诉 OEM 厂商:“这是硬件的设计参考,可以选择接受或者放弃。”(当然这并不是那么简单,但这也确实是 OEM 厂商给我的反馈)。由于安卓已将智能手机硬件商品化了,而相机和传感器是有所差别的最后一块领域了,所以 OEM 厂商绝不会去迎合谷歌的想法。谷歌还强制将深度相机整合进包中,这也相应的给手机的物料成本增加了很多(并且十分耗电),这也是厂商拒绝 Tango 的另一个原因。自 ARKit 的发布之日起世界就发生了改变。我们将很期待看到:
- OEM 厂商是否会找到一个Tango的替代系统(他们正在寻找);
- 谷歌在硬件设计参考上作出让步(以及相应的控制平台)
所以 ARKit 相比其他替代方案更好的最终原因是苹果可以将 VIO 算法紧密耦合到传感器上,并且话费大量的时间来校准它们以消除在位置计算中的错误和不确定性。
值得一提的是大型的 OEM 系统有很多替代品。这儿有很多学术性质的跟踪器(ORB Slam 就是一个很好的例子,OpenCV 也有一些可选项)但他们几乎都仅限于光学(单 RGB、或立体声、和/或深度相机为基础、有些使用稀疏地图、有些使用密集的、还有一些深度地图使用来自其他传感器的半直接数据,达到目的的方法不止一种)。
我是一名开发者, 我应该选择哪个呢, 为什么呢?
在 ARKit 上开始实施你的 AR 想法。ARKit 已经可以使用并且你可能已经有了一个支持的手机。要认识到设计和开发一个在真实世界中的应用的巨大差异,在真实世界中你无法控制场景,而在智能手机或 VR 程序中你可以控制每个像素。
接下来转到 Tango 或者 Hololens。现在想象一下,当你的内容可以与不受控制场景的 3D 结构相互交互时会发生什么。
这是一个非常陡峭的学习曲线,胜过从网页开发到移动开发或者从移动开发到 VR 开发。你需要彻底重新思考应用程序是如何工作的,还有用户体验或用例的意义。我看过很多 ARKit 的 Demo,而这些四年前他们就在 Vuforia 上实现过,八年前在 Layar 上实现过。开发人员正在重新学习同样的内容,只是范围更大一些。多年来我见过几乎所有类型的 AR 应用程序的例子,并且很乐意给予反馈和支持,尽管来问。
我会鼓励开发者不要害怕搭建新颖的程序,一些没用的应用都是首先出现在智能手机上,但在手持设备上却很难发现适用的 AR 场景用例。
世界很小, 没有多少人能把这些系统做的非常好
一个很吸引人但未得到充分赏识的方面是世界上只有少数人可以构建如此良好跟踪器。这些工程师在专业领域的相互交流使得单目 VIO 在移动领域成为最佳的解决方案。没有其他的方式可以提供这样的用户体验(到目前为止)。
2000 年中,波士顿的军事/工业供应商 Intersense 最先开始实施 VIO。其中一个联合发明者 Leonid Naimark 也是我在 2011 年开办的 Dekko 公司胜任首席科学家。在 Dekko 证实 VIO 由于传感器的限制不能在 iPad2 上运行之后,Leonid 回到了军工行业,而 Dekko 的 CTO Pierre Georgel 现在是谷歌梦之队的高级工程师。Ogmento 是由我在 Super Venture 的合伙人 Ori Inbar 创建的。之后 Ogmento 更改为 FlyBy,他们团队在带有外置鱼眼的 iOS 系统上成功的开发出 VIO 系统。之后这个代码库许可给谷歌,并成为 Tango 的 VIO 系统。随后苹果买下了 FlyBy,同样的代码库也成为了 ARKit VIO 的核心。FlyBy 的CTO,Chris Broaddus 依然继续为 Daqri 创建跟踪器,但现在他和牛津的博士后、Zoox 的前首席科学家在一家研发自治机器人的公司。(还包括我在 6D 的合伙创始人,他目前正在领导 Active Vision Lab。
2007 年左右,Georg Klein 在 Oxford Active Computing 实验室(PTAM)开发了第一个移动 SLAM 系统,之后继续为 Hololens 设计了 VIO 系统。合作者还有 David Nister,但他后来去了 Tesla 建立自主系统。George 的博士学生,Gerhard Reitmayr 带头进行 Vuforia 的 VIO 系统研发。Vuforia 的工程领导者 Eitan Pilipski 现在在 Snap 带领 AR 项目。在牛津、剑桥和帝国理工学院的研究团队的核心成员开发了 Kinect 追踪系统,现在在 Oculus 和 Magic Leap 领导追踪系统的开发。
有趣的是,我并不清楚现在哪些 AR 初创公司中在 AR 追踪方面是由那些小的天才团队人员领导的。拥有在机器人或者其他计算机视觉的相关背景的创始人并不能证明他们的产品能够在如此广泛的环境中健壮的运行。我稍后再谈一下目前这一代科学家在研究什么,给个提示:不是VIO。
性能统计
AR 系统从不会“运行”或者“不运行”。问题永远在于,能否在一个足够广泛的场景下良好的运行。“优化”的最终结果就是将统计数据向你所希望的方向推进。
因此,永远不要相信一个 AR 应用程序的演示,尤其是在 YouTube 上面看起来惊艳的演示。一个程序能在可控范围内和在有轻微变化的环境中精准工作,但在日常使用中毫无作用,这两者之间存在着很大的差距。而这种情况在智能手机或者 VR 程序的演示中并不存在,(比如,想象一下 Slack 是否工作取决于你的相机指向碰巧哪里或者碰巧你怎样移动了你的手腕),因此观众就要被愚弄了。
举个典型例子来说明为何统计可以决定一个系统的工作性能。上面的图片中,我们用格子代表相机中的数字图片传感器。每一个盒子都是一个像素。为了使追踪稳定,每个像素应该匹配一个真实世界中相对应的点(我们假设设备始终保持稳定)。然而第二张图片显示光子不能适应环境,各种强度的光落在他们想落的地方,每一个像素只是这一点上光子的总量。场景中任何光线的变化(一片云通过太阳、荧光灯的闪烁等等)都会改变光子击中传感器的位置,现在传感器就得到了一个与真实世界不同的像素点。就视觉跟踪系统而言,你已经移动过了。这就是为什么当你在 ARKit 演示中看到点时,他们有亮有暗,因为系统要决定哪些亮点是可靠的哪些不是。接下来需要确定这些点来进行位置计算,平均计算结果得出实际位置的最准确估测。因此,所有为了消除统计错误而做的工作共同得到一个更加健壮的系统。这就需要在相机硬件堆栈(多镜头和镜头镀膜、快门和图像传感器规格等等)和 IMU 软硬件算法之间进行紧密的集成和校准。
整合软硬件
有趣的是,VIO 并不是很难使用。现在已经有很多公开的算法和非常多相应的实现,但是却很难将它使用好。我的意思是,惯性光学系统几乎可以立即聚合到立体地图上,并且可以用低单位数精度来决定度量标度。例如,我们在 Dekko 上所实现的要求用户在一开始就有一个明确的移动,然后将手机前后移动大约 30s 才能进行收敛聚合。建立一个良好的惯性追踪系统需要一些有经验的工程师。不幸的是,世界上只有 20 个人拥有必要的技能和经验。其中大多数都正在建造巡航导弹跟踪系统或者火星漫游者导航系统等,而不是消费型的手机。
因此即使你能够接触这些人中的一个,事情依然取决于现有的软件和硬件是否能够同步以便更大程度地降低错误。系统的核心包括,在软件上能够准确建模的 IMU;能够完全访问整个相机堆栈的权限以及栈中每个组件的详细规格;最为重要的是,IMU 和相机需要十分精确地进行时钟同步。系统需要精确地知道 IMU 读取的数据对应的捕获帧开始和结束的位置。这对于连接两个系统是非常必要的,但是直到现在这也是不可能的,因为 OEM 厂商没有理由投资于此。这就是基于此系统的 Dekko ipad2 花费很长时间才能实现聚合的原因。Tango Peanut 是第一个能精确时钟同步所有内容的设备,也是第一个提供良好跟踪功能的消费型手机。今天,Qualcom 等芯片系统都有一个用于所有组件的同步传感器中枢,这意味着 VIO 在大多数当前设备上可行,并配有合适的传感器校准功能。
由于硬件和软件的紧密依赖,软件开发人员几乎不可能在没有 OEM 厂商的深度支持的情况下构建一个良好的系统。Google 投入了大量资金让一些 OEM 厂商支持 Tango 硬件规格。MSFT、Magic Leap 等正在设计他们自己的硬件,这也就是为什么 Apple 的 ARKit 如此成功的原因,因为他们已经能够设计出符合自己的软硬件。
光学校准
为了使软件能够精确地知道是否摄像机传感器上的像素能够与现实世界中的点相匹配,摄像机系统需要精确地校准。这儿有两种类型的校准:
几何校准:使用相机的针孔模型来校正镜头的视野和镜筒效果等。基本上由于镜头的形状所有的图像都会产生变形。大多数软件开发人员可以在没有 OEM 输入的情况下使用棋盘格和基本公开的相机规格进行几何校正。
光度校准:这里涉及到很多东西,通常要求 OEM 厂商参与。因为光度校准涉及到图像传感器本身的细节特征以及内部透镜所有的涂层等。光度校准一般用于处理色彩和强度的映射。例如,正在拍摄遥远星星的望远镜连接的摄像机需要知道是否传感器上一个像素光强度的轻微变化确实是星星还是仅仅来源于传感器或透镜中的像差。光度校准对于 AR 跟踪器的好处是提高了传感器上的像素和真实世界中的点的匹配度。因此光学跟踪具有更强的鲁棒性以及更少的错误。
在上面的幻灯片图像中,图像传感器上落入像素桶中的各种各样 RGB 光子图片解释了问题。来自真实世界中一个点的光有时会落在几个像素的边界上,并且每一个像素都将平均分配所有击中它的光子的强度。用户运动,场景阴影的微小变化或闪烁的荧光灯都将改变表示真实世界中点的像素。这是所有光学校准都尽可能地消除的错误。
惯性校准
当我们在思考 IMU 时,记住 IMU 是用来测量加速度而不是距离或速度是很重要的。IMU 读取错误会随着时间的推移积累地非常快。校准和建模的目标就是确保在 X 部分距离测量(加速度的双重整合)是足够精确的。理想情况下,摄像机是有足够长的时间来弥补由于用户覆盖镜头或者场景中发生其他事情所造成数帧跟踪的丢失。
使用 IMU 测量距离被称为航迹推算。这基本上是一个猜测,但是通过对 IMU 的行为进行建模,找出产生错误的所有方式,然后编写过滤器来减少这些错误,可以使这个猜测更加精确。想象一下如果你被要求向前走一步,然后猜测你走了几英寸这么个场景。单步猜测会有很大的误差,但是如果你重复走上千步,测量每一个步长,允许知道你走的是哪只脚、走在什么地板上、你穿的什么鞋子、你的移动速度以及你的疲惫程度等等,那么你对距离的猜测最终会变得非常准确。这基本上就是 IMU 校准和建模的原理。
在 IMU 中会有很多错误来源。一个机器臂通常用于以完全相同的方式重复地移动设备,而来自 IMU 的输出会一直被捕获和过滤,直到 IMU 的输出能够和机器臂的地面实况移动十分精确地匹配。Google 和微软甚至将它们的设备发送到 ISS 和”零重力飞行”的微重力中以便消除额外的错误。
这只是一些必须从跟踪中识别的错误而已,如图标中的 RGB 线。要想获得真正的精确度会比它听起来要更难。对于 OEM 而言,PITA 必须在它所有组合的全部设备中克服这些问题。即使不同的设备可能会有不同的 IMU(例如, Galaxy 7 可能拥有来自 Invensense 或 Bosch 的 IMU。并且为 Bosch 的建模并不适用于 Invensense)。这是 Apple 相对于 Android OEM 的另一个优势。
追踪技术的未来
那么对于目前已经存在 VIO,接下来会发生什么,它会使 ARKit 变得多余么?令人惊讶的是,VIO 仍然是在追踪数百米范围内最好的方式(对于更长的距离,系统将需要使用融合到系统中的 GPS 加上某种地标识别来进行重新定位)。这样做的原因是,即使其他光学系统也能够像 VIO 一样精确,但是它们将仍然需要更多的(GPU 或摄像头)功耗,这在 HMD 中非常重要。单目 VIO 是目前精确度最高,功耗消耗最低,同时成本也是最低的解决方案。
深度学习在追踪研究界有一定的影响。到目前为止,基于深度学习的系统大约是 10% 的错误,其中顶级的 VIO 系统错误率却在个位数。但它们正在追赶,并将真正有助于户外重新定位。
深度相机可以通过以下几种方式帮助 VIO 系统。在低特征场景中,深度相机在提高地面实况,度量标度以及边界追踪的精度方面有很大的帮助。但是它们非常耗能,因此只有在非常低的帧率以及帧间使用深度相机和 VIO 才是有意义的。它们在户外也不会正常运行,因为来自太阳光的红外散射会过滤掉深度相机中的红外线。深度相机的拍摄范围也取决于它们的功耗,这意味它们只适合在手机上的短距离范围内使用(几米的范围)。另外深度相机在 BOM 成本方面也是非常昂贵的,因此 OEM 厂商避免在大容量手机上使用它们。
立体 RGB 或鱼眼镜头都有助于看到更大范围的场景(因为立体 RGB 和鱼眼镜头具有潜在的光学特性。例如普通镜头可能只会看到白色的墙壁,但是一个鱼眼设备可以在画面中看到有图案的天花板和地毯 - Tango 和 Hololens 使用这种方法)。并且相对 VIO 而言,它们可以以更低的计算成本来获取更加有深度的信息。尽管 VIO 使用较低的 BOM 和功率也可以达到同样的精度。由于手机立体摄像头(即使是 HMD)之间的距离非常近,因此手机上深度计算的精度范围也被受到限制(相隔数厘米距离的手机相机在深度计算的精度上可以达到数米)。
跟踪管道最有趣的事情是支持在更大的范围进行跟踪,尤其是在户外数千米的范围。在这一点上,AR 的跟踪相比自动驾驶的跟踪除了使用更少的传感器和更低的能耗外,几乎没有任何区别。因为任何设备最终都将在尝试映射更大的区域时时消耗尽空间,所以要解决这个问题就需要云服务的支持。0这也是最近 Google 宣布 Tango 视觉定位服务的原因。我们将在未来几个月内看到更多相关的东西。这也是现在每个人都如此关心 3D 地图的原因。
AR 计算机视觉的前景
6dof 位置跟踪将在 12-18 个月在所有的设备上实现完全的商品化。但是这儿还有待解决的事情:
3D 重建(在 Hololens 术语中叫空间映射或在 Tango 术语中叫深度感知)。3D 重建系统能够找出场景中真实物体的形状和结构。并且允许虚拟事物之间相互碰撞以及隐藏在真实世界的后面。这也是使人们混淆的一个特征,因为人们认为这意味着 AR 仅仅是混合现实。但是 AR 就是 AR,仅仅是人们大部分看到的 AR Demos 都没有支持 3D 重建,因此 AR 中的虚拟内容看起来仅仅是在镜头中现实物体的前面移动而已。3D 重建通过从场景中捕获密集的点云(今天使用深度相机),然后将其转换为网格,并将隐形网格传递给 Unity(连同真实世界的坐标)。之后将真实世界网格精准地放置在相机所捕获的场景上。这意味着虚拟事物似乎能够与现实世界互动。注意目前 ARKit 是通过检测 2D 平面来完成 2D 版本的重建。这是它所需的最低的要求。Unity 的内容需要一个地平面来进行放置,否则它们将会没有地方可放并且四处飘浮。
上述提到有关深度摄像机的所有问题在 3D 重建中仍然存在,这也就是它不可广泛使用的原因。目前正在进行积极的研究,以便支持使用单个 RGB 相机来完成真实且实时的 3D 重建。大约还需 12-18 个月才能看到相关的产品。这就是为什么我认为真正的消费级 AR 头戴式显示设备仍然很遥远的一个主要原因。
在 3D 重建之后,从语义上对 3D 场景的理解有许多有趣的研究。你所看到的几乎所有惊人的计算机视觉深入学习都使用的 2D 图像(常规图片),但对于 AR (自动驾驶, 无人机等),我们需要对 3D 世界有一个语义性的理解。像 ScanNet 这样的新举措将在这方面帮助很多,类似于 ImageNet 帮助 2D 语义一样。
那么我们需要弄清楚如何将所有这些惊人的技术扩展到实时支持多个并发用户。
AR 其他部分的前景
深入研究这些内容已经超出本篇博客的范围,但是还有很多工作要做来提升技术栈:
- 光学:视场、眼框尺寸、分辨率、亮度、深度、 聚光度重定向都有待解决。我认为在最终消费级解决方案出现之前,我们将会看到数个过渡性的头显设计。它们只有有限的功能集,只期待解决其中的某一个问题(如社交信号跟踪或企业使用情况、或别的东西).
- 渲染:使虚拟内容与现实世界相一致。确定真实的光源并将虚拟事物和现实事物进行虚拟匹配,以便使阴影和纹理看起来更逼真。这也就是多年来好莱坞特技效果一直在做的内容(所以复仇者联盟看起来十分逼真)。但是对于 AR 来说,它是在手机上实时完成的,无法控制现实世界的灯光和背景等。
- 输入:解决输入问题还有很长的路要走。研究表明多模式输入系统在使用时可以提供最好的效果。有谣言说 Apple 将采用这种方式。多模式只是意味着多种输入“模式”(手势、语音、计算机视觉、触摸、眼睛跟踪等)以便更好地理解用户的意图。
- GUI 和 App:对于 AR 来说,并没有我们认为的 App 这么一个东西。我们想要的仅仅是看一眼 Sonos 音箱,虚拟的控制面板就会出现在设备上。我们并不想要一个小方块状的 Sonos 按钮。我们只是想要将需要的控制面板出现在视野中(像战斗机飞行员头戴显示器)并且和现实中的物体连接起来。目前还没人知道如何来实现,但绝对不会是 4*6 的网格图标。
- 还有社会问题需要解决。在我看来,只有 Apple 和 Snap 懂得如何推销时尚,并且 AR HMD 也是时尚进行的驱动。这可能比以上所有的技术问题要更难解决。
这篇关于Why is ARKit better than the alternatives?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!