这是本博客第一篇无关编程的文章。
关于 Magic Leap,不知道的人可以先看看这篇文章:https://yivian.com/news/39621.html
摘要一下:
Magic Leap成立于2011年,虽然一直保持神秘,但却能持续得到大公司和投资机构的青睐(至今已完成19亿美元融资),并且一直吸引着从业者们的关注,这令科技网站记者和分析师们感到挫败(重要的大新闻,但却无法获取真实的相关信息)。尽管这家公司已经发布了数个高质量的概念视频,展示了在现实世界中注入虚拟创意的前景,但他们一直都没有向市场公开运行中的技术。一直以来,有些媒体甚至公开怀疑整起事情是否只是一场营销骗局。但种种质疑声音没有影响Magic Leap估值的持续上涨,现在这家公司的估值已经高达60亿美元。
这究竟是个啥产品?简单点说,它是一个 MR (AR / VR = Mix R = 混合现实)眼镜。根据本专家对它的分析,这绝对是一次显示技术的革命,是下一代显示器。
最新消息是:Magic leap 已经发布了开发者版本。要在这个眼镜上开发游戏产品的程序员,可以考虑去买一个开发者版本了。而投资已经追加到上百亿美金了。
大家还记得前两年网上疯传的鲸鱼跳出体育馆地板的视频?我当时看到那个视频,判断是假的。后来 Magic leap 承认那是特效。但这家公司后来发布了一些视频,号称不是特效,而是他们的设备的真实效果。这些视频可以从这里看:https://v.qq.com/x/page/k0022dr3jrx.html
当时看到那个鲸鱼跳出地板的视频,以本人光学专业背景(毕业后就没干过光学)来看,技术上要实现类似效果,全息似乎能做到。但全息的问题是,它无法做到屏蔽掉虚拟图像背后的实际物体发出的光线。也就是说,就算是全息图像,你能看到空中有一个全息图像,但这个图像是透明的,透过它你能看到图像背后的东西。
在网上搜了一下,国内网站出来一堆东西,比如:
https://www.zhihu.com/question/26495301 这篇知乎,标题是【
Magic Leap可能是什么样的技术原理?】,底下一帮装X犯,说了半天,没一个人说到点子上。
确实,Magic leap 没有公布它的技术,也没有公布产品。大家都靠猜,然后国外的科技媒体(连线)也没猜出来它的技术原理。不过他们有篇文章提到 Magic leap 在用某个大学的设备做液晶片。
前几天在机场等灰机,掏出 Kindle 来看书。俺买了一本讲目前最新科技进展的书,里面提到各种基因方式治疗癌症,各种 IT 技术的最新发展状况,其中一篇提到 Magic leap,作者是去 Magic leap 参观过的科技媒体人(当然是老外,我现在手边没有该书,不确定作者是不是连线的编辑)。人能静下来看书的时候,能从书里,看出些东西来。当时看书里提到 Magic leap 做液晶片,俺就想到它的技术实现原理了。
这篇文章 http://36kr.com/p/5039170.html (标题:
了解 Magic Leap 的技术背景,就不难为它洗白)牛叉哄哄的说了一大堆各种技术,就是没说到这个玩意最牛叉的地方。里面提到三维场景重构,通过传感器感知三维环境,三维场景识别,物理建模与仿真,等等巴拉巴拉一堆,都不是什么目前搞不定的高科技了,都是软件算法问题。
看完老外写的文章,我能确定的事情是:
1. 这是一个眼镜,而不是裸眼观看 MR;
2. 人眼通过这个眼镜,可以看到外面的真实世界。也就是说这个眼镜是透明的,人眼直接看到真实世界。
3. 人眼同时能看到叠加在真实世界上面的虚拟图像;
3.1. 虚拟图像可以遮挡后面的真实世界的光线;
3.2. 虚拟图像有远近焦距。
综合 3.1 和 3.2,这个产品有点意思了。
传统的 VR/AR 眼镜,就是用一个屏幕来产生虚拟的图像。至于给人一个沉浸的感觉,是把这个屏幕,凑到人眼跟前,让人眼的整个视野范围都被屏幕占据。那么近的距离,人眼怎么看?不懂光学的人想不通了。其实很简单:在屏幕和眼睛之间,加一个凸透镜,让屏幕处于凸透镜的焦点上,那么,从人眼的角度看来,屏幕是在无穷远处,眼睛尽管放松看远方,就能看清楚屏幕上的图像画面。光学上,这个叫做“成像到无穷远处”。目前市面上的所有VR/AR眼镜,包括 HTC,三星,索尼,Google glass,以及微软的 HoloLens,都是这个原理。用于产生图像的屏幕,可能是液晶屏,可能是其它显示屏,比较贵也比较好的是 TI 出的 DLP 屏。
这样的眼镜,Google glass 是通过光路把屏幕图像投入人眼,同时不遮挡人眼对周围环境的观察。从人眼的角度来看,虚拟的图像直接叠加在人眼直接观看到的周围环境上,可以称为AR。但虚拟图像是透明的,挡不住图像后面的真实环境的物体的光线;而且虚拟图像的焦距是固定的,就是屏幕的焦距。
如果是 HTC 或三星、索尼的产品,则因为采用了2片屏幕,分别对应2只眼睛,因此可以播放立体图像。但是,这个立体图像有个大问题:立体的景深,和应该对应的焦距,不一致。实际上图像的焦距是固定的,就是屏幕成像给人眼的距离。前面说到是无穷远,但通常产品会调试为一个距离,比如人眼观察到的图像大概是在10米距离上。这种立体景深和焦距的不协调,会导致头晕。并且,虚拟图像无法呈现到现实世界中的某个具体物体上,因为距离人眼的距离(也就是焦距)不一致。
微软的 HoloLens 我没摸过实物,但根据网上的文章描述,它应该是把真实世界的场景拍摄下来,然后再把虚拟物体叠加上去,播放给人眼观看。人眼看到的真实世界的场景并不是直接看到的,而是拍摄后从屏幕显示出来的。这样相对容易给人眼看到的真实世界的场景上叠加虚拟物体画面。但这里仍然有个焦距的问题没有解决。也就是说,不管虚拟物体在场景中的虚拟位置的远近,它的实际成像距离是相同的。那么,在3D场景中,距离更远和更近的两个物体,人眼看到的焦距是相同的。而实际情况是,人眼看更远的物体,则较近的物体因为眼睛焦距的问题会模糊;人眼看更近的物体,较远的物体会因为焦距问题而模糊。目前市面上的所有AR/VR眼镜都解决不了这个问题。因此带来的问题就是不够真实,并且因为给人眼带来的不协调的感觉,容易让人头晕,不舒服。
根据文章的描述,Magic leap 的产品,解决了这个问题。这才是真正的黑科技,才是它牛叉的核心技术要点。
那么,如果有两个虚拟物体的图像,要让眼睛看起来,其真实距离和其在虚拟空间中的3D位置,完全一致,如何做到?普通的一个屏幕显示整个3D画面的成像方式,是没可能做到的。
我们知道,如果我们用计算机来呈现一个图像,图像就是无数个点阵。当然,这些点阵,对应了人眼睛的视网膜感光细胞。如果是普通屏幕,屏幕上的两个物体,都是由屏幕上的点阵构成。从人眼焦距的角度,这两个物体给人眼的距离的感觉,是相同的,都等于屏幕到人眼的距离(这个距离也可以是经过透镜调整后的光学虚像的距离)。如果是双屏3D的画面,2个眼睛看到的画面有一些视角差,让大脑感觉两个物体有3D的距离远近,但眼睛的调焦(睫状肌的紧张程度)却告诉大脑这两个物体的距离是一样的。
我们怎么让一个画面里面的两个物体,其成像焦距就是不一样?关于 Magic leap 的公开网上信息里面会提到【光场】。但这个光场,会误导人。懂光学技术的人知道,所谓光场,就是电磁场,其传播到眼睛的过程,就好像一个球面波在往前推进,我们叫它【波前】。真实场景的光的波前推进到人眼,人眼看见的信息,除了在视网膜上的平面点阵(感光细胞)上有水平和垂直方向的光的颜色和亮度的信息,对眼睛来说还包括了垂直于眼睛的空间距离信息 -- 焦距。要想人工实现一个完整的光的【波前】,目前我们已知的技术是光全息技术。所以,我第一次知道 Magic leap 的东西时,第一个反应是它采用了计算全息技术。
什么是计算全息?普通的全息技术,是通过激光的干涉,将真实物体反射的激光的波前和参考光干涉,记录到感光板上的方式,将干涉条纹记录下来。当用参考光去照射这个干涉条纹,条纹将参考光衍射后产生的光,刚好就是恢复了拍照时的物体的反射光的波前,也就是包含当时的光的全部信息(不只是空间亮度分布,而普通的照片就只包括空间亮度分布),这就是全息。通过全息技术,确实可以在空间中呈现一个真正3D的图像 --- 包括距离信息,也就是有真实的焦距。而计算全息,则是通过计算机程序,将一个虚拟物体在假想的全息拍照中应该有的干涉条纹计算出来,然后用液晶片呈现出来这个干涉条纹,然后让参考光通过,呈现3D全息图像。
计算全息目前的发展是技术上可以做出来,当然计算量很大,需要很强的算力;也需要很贵的液晶片因为干涉条纹的距离是光波长的一半,要求液晶片的点距足够小。这个远比苹果手机的视网膜屏的点距小。
但全息方式的问题是,全息图像目前技术上会不容易做出真实彩色。而且因为计算量,要做成动态视频,成本会很高。
有没有成本低一些技术上更容易一些的实现方式?在机场看 Kindle 的时候,我注意到作者提到 Magic leap 做液晶片。而我刚好又知道液晶透镜这个技术。因此我开了一下脑洞,觉得可以不用全息方式也能做到同一个画面中两个虚拟物体图像的焦距不同的效果,计算量会小很多,也就是算力成本会低很多。
采用什么方式呢?从光学上来看,普通的屏幕,每个像素点的光是发散的,通过人眼聚焦到视网膜上。焦距就是屏幕到眼睛的距离。如果我让每个像素点的光不发散,就是一条直线(光学术语:准直。用激光很容易做到),然后放一个透镜到这个像素前面,这束准直的光线就会发散。我控制透镜的焦距,也就可以控制它的发散角度。而光线的发散角度不同,在眼睛看来,它的焦距就不同。也就是说,我们可以精确控制每个像素呈现给眼睛的焦距。
因此,我们只需要:
1. 一个图像,比如 1920 X 1080 的图像,每个像素点,我用准直的光线产生;
2. 每个像素点,我都给它配一个可以控制焦距的透镜。
这样一来,屏幕上的两个物体的图像,就是两堆像素点。控制每一个像素点的焦距,就可以让眼睛看到的两个图像,在空间中,有不同的焦距。问题完美解决。
技术上的实现并不难,因为有液晶透镜技术。目前点阵液晶屏幕的技术非常成熟,但大家可能不知道控制液晶,可以让通过液晶的光线发生偏折,也就是可以拿液晶当焦距可调的透镜使用。结合液晶点阵的技术和液晶透镜的技术,要对每个像素的光线进行焦距控制,技术上是可行的。当然目前液晶透镜的可调焦范围比较小,在这个应用场景下可能不够用,还需要其它办法做每个像素的焦距控制。
然后今天我上网搜索了一下 Magic leap 的原理,搜到这样的网页:
1. https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2015006784
【
种波导装置包括平面波导和至少一个光学衍射元件(DOE),所述光学衍射元件在波导的外部和内部之间提供多个光路。DOE的相位分布可以将线性衍射光栅与圆形透镜组合,以形成波前并且产生具有期望焦点的光束。波导装置可以被组装以产生多个焦平面。DOE可能具有低衍射效率,并且当正常观看时平面波导可以是透明的,允许来自用于AR系统的环境环境(例如真实世界)的光通过。光可以长时间地返回通过平面波导。能源部可以动态调整。】
这是采用衍射加上透镜的方式,来给光束的焦距进行调整;
2.
https://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=20131219&DB=&locale=&CC=WO&NR=2013188464A1&KC=A1&ND=1
【线性波导的二维阵列包括多个2D平面波导组件,列,组或层,其各自产生相应的深度平面以用于模拟的4D光场。线性波导可以具有矩形圆柱形状,并且可以以行和列堆叠。每个线性波导至少部分地内反射,例如经由至少一个相对的至少部分反射的平面侧壁对,以沿着波导的长度传播光。弯曲的微反射镜可能会反射一些光线而通过其他光线。侧壁或面部可能会反射某些光线模式,而通过其他光线。任何给定的波导的弯曲的微反射器均在限定的径向距离处贡献球面波前。】
这段文字的意思是用光纤构成图像点阵。如果是低数值孔径的光纤,就算是普通光,从光纤端面出来时,也是基本上不发散的直线啦。顺便说一句,俺还记得当年的教科书上的数值孔径的英文标记:NA。我老人家专业课考试成绩那么差,这都还记得,佩服佩服。
既然成像的时候光学上已经可以解决视野里面某个虚拟物体的焦距问题,其它都是软件的干活了。当然软件也是有难度有技术含量的。
然后是另外一个黑科技问题:虚拟图像如何遮挡真实场景,而不是透明的虚拟图像?
这个问题同样可以用液晶解决。懂液晶的人都知道,液晶这玩意,我们叫它【液晶光阀】。它就是个光的阀门,可以让光通过或不通过,只要我们用电去控制它。前面提到用液晶面板构成全息条纹,就是用了液晶光阀的原理。普通的液晶屏幕面板,也是用了液晶光阀的原理。手机或电脑屏幕上,你看到的一个黑点,就是那个构成像素的液晶单元让光不通过。
因此,人眼前面的透明屏,我们用液晶面板来做。刚好呈现虚拟物体的位置,我们让透明屏上对应的像素点都变得不透明,人眼只看到眼镜投射出来的虚拟的图像,看不到真实物体。对应效果视频里面的那个手捧大象,你透过虚拟的大象看不见大象后面的手,但能看见大象前面的手。完美融合虚拟和现实!关于遮挡,查到这样一个网页:
3. https://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=20130530&DB=&locale=&CC=WO&NR=2013077895A1&KC=A1&ND=1
【系统可以包括选择性透明投影设备,用于从相对于观看者的眼睛的空间投影设备位置向观看者的眼睛投射图像,当没有投影图像时,投影设备能够呈现基本上透明的状态; 遮挡掩模装置,耦合到所述投影装置并且被配置为以与所述投影装置投影的图像相关的遮挡图案,从与所述投影装置相对的所述投影装置的一个或多个位置选择性地阻挡从所述观看者的眼睛朝向所述眼睛行进的光;】
注意第一句:选择性透明。用液晶光阀点阵就能解决。
搞定了图像焦距的控制(而不是固定焦距,不是同一幅图中不同虚拟物体只能相同焦距),再搞定背景屏蔽。搞定了这两个黑科技,其它都不是问题了 --- 当然要有强大的软件的支撑,但都是目前的 AR 技术可以做到的。
以上就是我在机场看书时突然开的脑洞。
然后,今天查到这个网页,不是 Magic leap 而是另外一拨人做的显示器: https://www.leiphone.com/news/201408/45JklGQVOqEoy80N.html
看起来,它就是用了我设想的方式。我可以说英雄所见略同吗?
为什么说这是显示技术的革命?
从有显示技术以来,不管是最早的电影,还是后来的电视,还是把屏幕装进盒子凑近人眼的所谓 VR/AR 眼镜,其实现技术可能是电影胶片在幕布上的投影,或者阴极射线管(还记得 CRT?)由电子枪扫描到玻璃屏上产生光点,又或者用液晶产生光点(像素点阵),又或者街头视频广告牌直接用发光二极管产生光点(像素点阵),对眼睛来说,都是平面上的亮度分布和颜色分布,同一个屏幕上的图像都处于相同的焦距。
而 Magic leap 的眼镜,它产生的图像,可以给眼睛一个动态的焦距 -- 虚拟图像应该是多远,给眼睛的焦距就是多远。这样,在整个视场中,假设有3个虚拟物体,其虚拟的离观看者的空间距离各有不同,我可以在同一时间用软件将它呈现出来,并且有不同的焦距。观看者的眼睛可以调节焦距,看较远的物体,或是看较近的物体,人眼的调焦过程,和现实中看远近不同的物体的经验完全一样。这是以前的显示技术做不到的。而这样会让眼睛感觉更真实,更舒服。再加上它能够屏蔽掉虚拟图像后面的现实环境的光线,就使得这个虚拟图像和现实的融合更逼真。这远非目前市面上采用普通屏幕的 VR/AR 眼镜能比的。因为屏幕图像的焦距是可以调整的,戴这个眼镜的人也不必因为每个人眼睛的屈光度不同(近视程度不同)而需要调节眼镜焦距或者戴上自己的近视眼镜再戴AR眼镜。
想想这样的效果,如果拿来做游戏,电影《头号玩家》里面的场景都不是事。
可以预料,未来当技术成熟,成本下降,所有的显示器都会换成这样的显示装置,人人都会戴一个这样的眼镜,而手机不再需要大屏幕,会还原成只有简单电话号码数字显示的小屏幕,需要大屏幕看图像时直接用眼镜就好了。作为一个程序猿,我老人家期待我的电脑桌面用这个眼镜来呈现,代码直接显示到这个眼镜的视野里面。这样我就不用长期盯着一个固定距离的屏幕,导致眼睛疲劳 --- 无论看电视还是看电脑还是看手机,最大的问题就是眼睛长时间看固定距离的屏幕,眼睛调焦的睫状肌长期保持固定姿势。这也是小孩子玩电脑看电视玩手机时间长了会近视的原因。
再多说两句:
在电视机还很难买到的年代,能生产彩色显像管是很厉害的事,在当时也是高科技。当电子工业部买下北美最后一条彩色显像管生产线,在深圳建设彩色显像管工厂的时候,美国就没有彩色显像管制造厂了。但是,深圳这家彩色显像管工厂一直到关门,也没有赢利,最后卖给三星。当时国内大小显像管生产线上了一堆,都是国营企业。然后显像管行业没持续多少年,就被液晶显示面板干掉了。
然后国营上广电买了日本的液晶面板生产线,最后也是不赢利,卖给了京东方。京东方的液晶面板终于开始赢利了。这时候,美国人的下一代显示技术要来了。
而这个下一代显示技术,不是简单的显示,而是融合了显示技术,集成光学技术,计算机,以及一大堆很牛叉的算法的东西。不是简单搞定生产线和生产工艺就可以的。
下一代显示技术和现在的液晶显示面板,TI 的 DLP 显示芯片等等的差距,就好比导弹和炮弹的差距。