近日,超维星球分享了除AR界两大巨头Hololens、Magic Leap外的重量级公司。
而霸占了AR界两大巨头的他们又有什么异同呢。
Magic Leap 和 Hololens 这类 AR 眼镜设备,都是为了看到现实中不存在的物体和现实世界融合在一起的图像并与其交互。
从技术上讲,可以简单的看成两个部分:
-
对现实世界的感知 (Perception)
-
一个头戴式显示器以呈现虚拟的影像 (Display) 。
The World is Your New Desktop
2014 年 11 月 10 日,Magic Leap融资五亿之后发出一则招聘启事,标题是"The World is Your New Desktop”(世界就是你的新桌面)。
Magic Leap 感知研究的高级副总裁 (VP of Perception) Gary Bradski 和 计算视觉的技术负责人 (Lead of Computer Vision) Jean-Yves Bouguet 在Stanford作了演讲。
Gary 是计算机视觉领域的领军人物,在 Intel 和柳树车库 (Willow Garage) 创造并发展了 OpenCV(计算视觉工具库),也是 ROS(机器人操作系统)的创始团队之一,同时也是 Stanford 顾问教授。
Jean-Yves 原来在 Google 负责谷歌街景车(Street View Car)的制造,是计算视觉技术的大牛。
本文相关技术信息皆来源于此次演讲内容。
显示部分
Hololens 和 Magic Leap的区别:
感知部分其实 Hololens 和 Magic Leap 从技术方向上没有太大的差异,都是空间感知定位技术。
Magic Leap 与 Hololens 最大的不同应该来自显示部分,Magic Leap 是用光纤向视网膜直接投射整个数字光场 (Digital Lightfield)产生所谓的 Cinematic Reality(电影级的现实)。
Hololens 采用一个半透玻璃,从侧面 DLP 投影显示,虚拟物体是总是实的,与市场上 Espon 的眼镜显示器或 Google Glass 方案类似,是个 2 维显示器,视角还不大,40 度左右,沉浸感会打折扣。
Magic Leap 的本质原理:
光线在自由空间中的传播,是可以由 4 维光场唯一表示的。成像平面每个像素中包含到这个像素所有方向的光的信息,对于成像平面来讲方向是二维的,所以光场是 4 维的。
平时成像过程只是对四维光场进行了一个二维积分(每个像素上所有方向的光的信息都叠加到一个像素点上),传统显示器显示这个 2 维的图像,是有另 2 维方向信息损失的。
而 Magic Leap 是向你的视网膜直接投射整个 4 维光场,所以人们通过 Magic Leap 看到的物体和看真实的物体从数学上是没有什么区别的,是没有信息损失的。理论上,使用 Magic Leap 的设备,你是无法区分虚拟物体和现实的物体的。
使用 Magic Leap 的设备,最明显的区别于其他技术的效果是人眼可以直接选择聚焦 (主动选择性聚焦)。
比如我要看近的物体,近的物体就实,远的就虚。注意这不需要任何的人眼跟踪技术,因为投射的光场还原了所有信息,所以使用者直接可以做到人眼看哪实哪,和真实物体一样。
举个例子:在虚拟太阳系视频的 27 秒左右(如这个 gif 图),摄影机失焦了,然后又对上了,这个过程只发生在摄影机里,和 Magic Leap 的设备无关。
换句话说,虚拟物体就在那,怎么看是观察者自己的事。
Magic Leap 管自己的效果叫 Cinematic Reality。
主动选择性聚焦:
众所周知人类的眼睛感知深度主要是靠两只眼睛和被观察物体做三角定位(双目定位, triangulation cue)来感知被观察物体的与观察者的距离的。
但三角定位并不是唯一的人类感知深度的线索,人脑还集成了另一个重要的深度感知线索:
人眼对焦引起的物体锐度(虚实)变化(sharpness or focus cue) 。
但传统的双目虚拟显示技术(如 Oculus Rift 或 Hololens) 中的物体是没有虚实的。
如下图,当你看到远处的城堡的时候,近处的虚拟的猫就应该虚了,但传统显示技术中,猫还是实的,所以你的大脑就会引起错乱,以为猫是很远的很大的一个物体。
但是这和你的双目定位的结果又不一致,经过几百万年进化的大脑程序一会儿以为猫在近处,一会儿以为猫在远处,来来回回你大脑就要烧了,于是你要吐了。
而 Magic Leap 投影了整个光场,所以你可以主动选择性聚焦,这个虚拟的猫就放在了近处,你看它的时候就是实的,你看城堡的时候,它就是虚的,和真实情况一样,所以你不会晕。
虚拟现实和增强现实的不同:
虚拟现实中,使用者是看不到现实世界的,头晕往往是因为人类感知重力和加速度的内耳半规管感受到的运动和视觉看到的运动不匹配导致的。
所以虚拟现实的游戏,往往会有晕车想吐的感觉。
这个问题的解决不是靠单一设备可以搞定的,如果使用者的确坐在原定不动,如果图像在高速移动,什么装置能骗过你的内耳半规管呢?
市场上的方案比如 Omni VR,或者 HTC Vive 这样的带 Tracking 的 VR 系统让你实际行走才解决这个不匹配的问题,但这类系统是受场地限制的。
不过 THE VOID 的应用就很好的利用了 VR 的局限,不一定要跑跳,可以用很小的空间做很大的场景,让你以为你在一个大场景里就好了。
现在大部分虚拟现实的体验或全景电影都会以比较慢得速度移动视角,否则你就吐了。
但是 Magic Leap 是 AR 增强现实,因为本来就看的到现实世界,所以不存在这个内耳半规管感知不匹配的问题。
对于 AR 来讲,主要挑战是在解决眼前投影的物体和现实物体的锐度变化的问题。
所以 Magic Leap 给出的解决方案是很好的解决这个问题的。
但都是理论上的,至于实际工程能力怎么样就靠时间来证明了。
光纤投影
人类希望能凭空看到一个虚拟物体,已经想了几百年了。
各种科幻电影里也出现了很多在空气中的全息影像。
但从物理上很难实现的:
纯空气中没有可以反射或折射光的介质。
显示东西最重要的是介质。
Shot directly through Magic Leap tech,很多文章错误的翻译成「直接看到」或「裸眼全息」,其实视频是相机透过 Magic Leap 的技术拍的。
Magic Leap 想实现的是把整个世界变成你的桌面这样的愿景。
所以与其在世界各个地方造初音未来那样的 3D 全息透明屏做介质或弄个全息胶片,还不如直接从人眼入手,直接在眼前投入整个光场更容易。
而 Magic Leap 采用完全不同的一个方法实现光场显示,它采用光纤投影。
在 Magic Leap 做光纤投影显示 ( Fiber optic projector) 的人是 Brian Schowengerdt,他的导师是来自华盛顿大学的教授 Eric Seibel,致力于做超高分辨率光纤内窥镜 8 年。
简单原理就是光纤束在一个 1mm 直径管道内高速旋转,改变旋转的方向,然后就可以扫描一个较大的范围。
Magic Leap 的创始人比较聪明的地方,是找到这些做高分辨率光纤扫描仪的,由于光的可逆性,倒过来就能做一个高分辨率投影仪。
如图,他们 6 年前的论文,1mm 宽 9mm 长的光纤就能投射几寸大的高清蝴蝶图像。现在的技术估计早就超过那个时候了。
而这样的光纤高分辨率投影仪还不能还原光场,需要在光纤的另一端放上一个微镜头阵列 microlens array,来生成 4 维光场。
光纤束是扫描性的旋转,这个 microlens array 不用做的很密很大,只要显示扫描到的区域就好了。
相当与把大量数据在时间轴上分布开了,和通讯中的分时一样,因为人眼很难分辨 100 帧 上的变化,只要扫描帧率够高,人眼就分辨不出显示器是否旋转显示的。
所以 Magic Leap 的设备可以很小,分辨率可以很高。
感知部分
增强现实要有感知部分
设备需要知道自己在现实世界的位置(定位),和现实世界的三维结构(地图构建),才能够在显示器中的正确位置摆放上虚拟物体。
三维感知部分并不是什么新东西,计算机视觉或机器人学中的 SLAM(Simultaneo
us Localization And Mapping,即时定位与地图构建)就是做这个的,已经有 30 年的历史了。
设备通过各种传感器(激光雷达,光学摄像头,深度摄像头,惯性传感器)的融合将得出设备自己在三位空间中的精确位置,同时又能将周围的三位空间实时重建。
Magic Leap 的感知技术
图为Gary 教授在 Magic Leap Stanford 招聘会中展示的 Magic Leap 在感知部分的技术架构和技术路线。
可以看到以 Calibration 为中心,展开成了 4 支不同的计算机视觉技术栈。
从图上看,整个 Magic Leap 感知部分的核心步骤是 Calibration(图像或传感器校准),因为像 Magic Leap 或 Hololens 这类主动定位的设备,在设备上有各种用于定位的摄像头和传感器,摄像头的参数和摄像头之间关系参数的校准是开始一切工作的第一步。
这步如果摄像头和传感器参数都不准,后面的定位都是无稽之谈。
计算机视觉技术用传统的校验相当花时间,需要用摄像头拍摄 Chess Board,一遍一遍的收集校验用的数据。
但 Magic Leap 的 Gary,他们发明了一种新的 Calibration 方法,直接用一个形状奇特的结构体做校正器,摄像头看一遍就完成了校正,极为迅速。
有了 Calibration 部分后,开始最重要的三维感知与定位部分(左下角的技术栈),分为 4 步。
Planar Surface Tracking(平面表面跟踪)
大家可以在虚拟太阳系的 Demo 中看到虚拟太阳在桌子上有反光,且这个反光会随着设备佩戴者的移动而改变位置,就像是太阳真的悬在空中发出光源,在桌子表面反射产生的。
这就要求设备实时的知道桌子的表面在哪里,并且算出虚拟太阳与平面的关系,才能将太阳的反光的位置算出来,叠在设备佩戴者眼镜相应的位子上,并且深度信息也是正确的。
难点在平面检测的实时性和给出平面位置的平滑性(否则反光会有跳变)从 Demo 中可以看出 Magic Leap 在这步上完成的很好。
Sparse SLAM(稀疏 SLAM)
Gary 在 Info Session 上展示了他们实时的三维重构与定位算法。
为了算法的实时性,他们先实现了高速的稀疏或半稀疏的三维定位算法。
从效果上看,和目前开源的 LSD 算法差不了太多。
Sensors; Vision and IMU(视觉和惯性传感器融合)
导弹一般是用纯惯性传感器做主动定位,但同样的方法不能用于民用级的低精度惯性传感器,二次积分后一定会漂移。
而光靠视觉做主动定位,视觉部分的处理速度不高,且容易被遮档,定位鲁棒性不高。将视觉和惯性传感器融合是最近几年非常流行的做法。
3D Mapping and Dense SLAM(3D 地图重建)
下图展示了 Magic Leap 山景城办公室的 3D 地图重建,仅仅是带着设备走了一圈,就还原了整个办公室的 3D 地图,并且有很精致的贴图。
书架上的书都能重建的不变形。
因为 AR 的交互是全新的领域,为了让人能够顺利的和虚拟世界交互,基于机器视觉的识别和跟踪算法成了重中之重。
全新人机交互体验部分需要大量的技术储备做支持。
分支布局
Crowdsourcing 众包
用于收集数据,用于之后的机器学习工作,要构建一个合理的反馈学习机制,动态的增量式的收集数据。
Machine Learning &Deep Learning
机器学习与深度学习。需要搭建机器学习算法架构,用于之后的识别算法的生产。
Scenic Object Recognition 场景物体识别
识别场景中的物体,分辨物体的种类,和特征,用于做出更好的交互。
Behavior Recognition 行为识别
识别场景中的人或物的行为,比如跑还是跳,走还是坐,可能用于更加动态的游戏交互。
跟踪方面
Gesture Recognition 手势识别
用于交互,其实每个 AR/VR 公司都在做这方面的技术储备。
Object Tracking 物体追踪
这个技术非常重要,比如 Magic Leap 的手捧大象的 Demo,至少你要知道你的手的三维位置信息,实时 Tracking,才能把大象放到正确的位子。
3D Scanning 三维扫描
能够将现实物体,虚拟化。比如你拿起一个艺术品,通过三维扫描,远处的用户就能够在虚拟世界分享把玩同样的物体。
Human Tracking 人体追踪
比如:可以将现实中的每个人物,头上可以加个血条,能力点之类。
Eye Tracking 眼动跟踪
Gary 解释说,虽然 Magic Leap 的呈像不需要眼动跟踪,但因为要计算 4 维光场,Magic Leap 的渲染计算量巨大。
如果做了眼动跟踪后,就可以减少 3D 引擎的物体渲染和场景渲染的压力,是一个优化的绝佳策略。
Emotion Recognition 情感识别
如果 Magic Leap 要做一个 Her 电影中描绘的人工智能操作系统,识别主人得情感,可以做出贴心的情感陪护效果。
Biometrics 生物识别
比如要识别现实场景中的人,在每个人头上显示名字等。
Top 10 Dev Recommendations
在今年的Build2016开发者大会上,微软颁布发表HoloLens开发者版首批版本正式发货,包括头显、头显手提包和一个遥控器,售价3000美元(约合人民币19677元),第二批HoloLens也已在5月份发货。
而上周Unite Europe大会上,IdentityMine的开发者Rene Schulte给出了HoloLens十大开发建议并给予解释。
寻找一位好的3D设计者
对于那些注重视觉效果的软件产品来说,开发者需要严重考虑这条建议。
这也是HoloLens上Spreadsheet和Skype和例子,好的3D设计者才可以完全开发出全息技术的潜能。
抽象的解释并不是最好的选择,一位能够理解全息技术的3D开发者很重要。
把HoloLens当成移动设备
HoloLens是一个强大的科技,但是目前还不能与高端的PC相比。
考虑到HoloLens并不需要任何的缆线,所以可以参考移动设备的应用原则进行设计使用。
利用好Multicore CPU
HoloLens是一个强大的科技,其装载的多核心CPU是其他的设备所不能比拟的。
在渲染和信息处理的时候要好好利用好这个CPU。
提高3D计算能力
HoloLens是需要考虑到现实环境的。
就算你可以发挥出硬件的优势,并且创造出一些惊人的图像,但是如果不能让其融入真正环境,不够逼真的话,那也没有什么用处。
锚定全息图
对于虚拟现实开发者来说,图像飘移曾经是个问题,当头显不能跟上用户的头部移动的时候,就会发生图像飘移的问题。
在增强现实领域,如果视觉上的物件发生飘移则更加致命。
利用好细节层次(LOD)
在计算机图形学中,当3D物品远离观看者的时候,细节层次可以降低其复杂度。
当物体在远处或者快速移动的时候,模型视觉质量的降低通常是不会被人发现的。
这跟虚拟现实和增强现实研发息息相关,因为复杂度降低后的物品对用户的视觉来说并不再重要,可以把所需的处理能力转移到其他地方。
注意Gaze Cursor(光标)
光标是用户视线范围精确的度量,视线的中央。
这跟上面提到的LOD息息相关:当用户的视场中央不再是某件物品的时候,那就无需再渲染那么多的复杂度。
使用动画和转换
这可以让事情变得更加有趣,同时也可以避免让场景过于复杂。
在虚拟现实和增强现实中,一个动画可以比静止的图像更有趣。
重复使用Unity脚本代码与自定义插件
Unity是HoloLens的官方游戏引擎,所以并没有太多的选择。
然而并不意味着开发者们不能自定义自己的开发过程,并且重复使用某些Asset,以避免长时间运行脚本所出现的问题。
避免长开发周期
虚拟现实和增强现实的关键是迭代。
考虑到目前虚拟现实和增强现实仍然是一个年轻的媒介,所以经常会出现工作原则和未知应用的讨论。
在深入开发之前,应该要好好分析自己的项目,不然所开发出来的产品会跟自己的原来的目的不相符,这很浪费时间。
评论