|
Microsoft HoloLens 全息眼鏡 揭 秘
揭秘微軟黑科技 HoloLens -
● ● ● 微軟 HoloLens 技術(shù)解謎(上) :如何還原三維場(chǎng)景 HoloLens 是什么?HoloLens 是微軟發(fā)布的可穿戴式擴(kuò)增實(shí)境計(jì)算設(shè)備,它擁有這么幾個(gè)關(guān)鍵要素:
HoloLens 不是什么?![]() 看完微軟栩栩如生的宣傳影片后,如果你的反應(yīng)是:
那么你要好好看這一段,因?yàn)?Matrix 是 Virtual Reality / VR / 虛擬實(shí)境,VR 的特點(diǎn)是讓參與者置身于電腦生成的 3D 圖像世界中,淡化真實(shí)的世界。VR 近期的代表產(chǎn)品是 Oculus Rift,戴上 Rift 后你是看不到真實(shí)世界的。在我看來(lái) VR 最大的問(wèn)題是:這個(gè)虛擬世界很真實(shí)很精彩,但是有什么用呢?也就是說(shuō) VR 只能做到更逼真的 3D 世界,它無(wú)法幫助人們更好地理解真實(shí)的世界。 ![]() HoloLens 也不是 Google Glass,它比 Google Glass 多了:
HoloLens 也不是市場(chǎng)上常見(jiàn)的的 AR,常見(jiàn)的基于內(nèi)置鏡頭的 AR 應(yīng)用基于內(nèi)置鏡頭有:
![]() 以及基于任意圖片的 AR。 ![]() 很炫是嗎,但是它們只能檢測(cè)到圖片所在的那個(gè)平面。HoloLens 比它們都“牛”,它能檢測(cè)到各個(gè)角度的 3D 場(chǎng)景! HoloLens 的 AR 是如何得到 3D 場(chǎng)景深度資訊的?我們回到 AR 的定義,想要實(shí)現(xiàn)擴(kuò)增實(shí)境,必須先理解實(shí)境,那么對(duì)于 HoloLens 而言,實(shí)境是什么呢?是傳感器的數(shù)據(jù)。 傳感器是啥?是攝影鏡頭。 同樣是攝影鏡頭,為什么 HoloLens 就可以感知深度呢?微軟的 Kinect 在這方面很成功,那么是不是 HoloLens 上放了一臺(tái)嵌入式的 Kinect 呢? 答案在下面的原型圖片中: ![]() HoloLens 擁有四臺(tái)攝影鏡頭,左右兩邊各兩臺(tái)。通過(guò)對(duì)這四臺(tái)攝影鏡頭的即時(shí)畫(huà)面進(jìn)行分析,HoloLens 可覆蓋的水平視角和垂直視角都達(dá)到 120 度。 也就是說(shuō)它采用的是立體視覺(jué) / Stereo Vision 技術(shù)來(lái)獲取類似下圖的深度圖 (depth map)。 ![]() 立體視覺(jué)是電腦視覺(jué)學(xué)科的一個(gè)子學(xué)科,專注于從兩個(gè)攝影鏡頭的圖像數(shù)據(jù)中得到真實(shí)場(chǎng)景中的物體離攝影鏡頭的距離。示意圖如下: ![]() 下面是基本的步驟,查閱 OpenCV 文檔可以了解具體到函數(shù)用法 :
![]()
只有一張深度圖是不夠的,它只是某一時(shí)刻真實(shí)的場(chǎng)景在攝影鏡頭中的映射。要想得到完整的 3D 場(chǎng)景,我們需要分析一系列的深度圖。 HoloLens 如何從多張深度圖重建 3D 場(chǎng)景?答案是 SLAM(Simultaneous Localization And Mapping),即同步定位與建圖系統(tǒng)。這個(gè)技術(shù)被用于機(jī)器人、無(wú)人汽車、無(wú)人飛行器的定位與尋路系統(tǒng)。解決的是非常哲學(xué)的問(wèn)題:
SLAM 有很多實(shí)現(xiàn)的方式,有一個(gè)開(kāi)源的方式,實(shí)現(xiàn)了很多深度圖的處理和匹配算法,可以認(rèn)為是 3D 版本的 OpenCV。 而微軟圍繞著 Kinect 的深度圖數(shù)據(jù)發(fā)明了 Kinect Fushion 算法,并發(fā)布了兩篇論文:
為什么我認(rèn)為 HoloLens 與 Kinect Fushion 有關(guān)?答案在這個(gè)頁(yè)面中 。 Shahram Izadi 是微軟劍橋研究院的 principal researcher 及 research manager。他所領(lǐng)導(dǎo)的互動(dòng) 3D 技術(shù)組(interactive 3D technologies)為微軟的多項(xiàng)產(chǎn)品提供了研究力量,包括 Kinect for Windows, Kinect Fusion 以及 HoloLens。順便說(shuō)一句,他們組在招人。 Kinect Fushion,透過(guò)在室內(nèi)移動(dòng) Kinect 設(shè)備,獲取不同角度的深度圖,即時(shí)更新,對(duì)不同對(duì)深度圖進(jìn)行累積,計(jì)算出精確的房間以及房間內(nèi)物體的 3D 模型。 ![]() 它分四個(gè)階段:
在 HoloLens 的應(yīng)用中我們運(yùn)行到第三步,即獲取 3D 樂(lè)高模型就可以了,第四步并不是必須的。因?yàn)?HoloLens 的屏幕是透明的,不需要再把房屋的模型渲染一遍,我們自帶的眼睛已經(jīng)渲染了一遍了:) HoloLens 炫酷的 demo 都是怎么制作的?還剩下三個(gè)難點(diǎn),下面文章敘說(shuō):
● ● ● 微軟 HoloLens 技術(shù)解謎(下) :SDK 會(huì)是這樣? 在上面文章《微軟 HoloLens 技術(shù)解謎(上):如何還原三維場(chǎng)景》 中我介紹了自己對(duì)于 HoloLens 背后的建模技術(shù)的看法,雖然之前在微軟的 Xbox 部門(mén)工作過(guò),但是和大家一樣也是上周才知道 HoloLens 這個(gè)好玩的設(shè)備。當(dāng)前微軟官方對(duì)于 HoloLens 透露出來(lái)的訊息非常有限,最核心的兩個(gè)組件深度傳感器以及全息屏幕的原理依然充滿著謎題。文章發(fā)布后,在微軟 HoloLens 技術(shù)解謎(上):如何還原三維場(chǎng)景的留言中讀者提出了一些問(wèn)題。 讀者提問(wèn)之“HoloLens 的深度感應(yīng)器有沒(méi)有可能是基于 TOF?”先介紹一下背景知識(shí),市面上常見(jiàn)的有三種類型的深度感應(yīng)器:
我認(rèn)為 HoloLens 沒(méi)有使用 TOF 技術(shù)的原因是因?yàn)槿绻@四個(gè)鏡頭的位置放的是 TOF 感應(yīng)器,那么還缺少一個(gè)朝前的 RGB 鏡頭用于視訊聊天類 App。讀者提到的中間部分我認(rèn)為是微型的投影機(jī),HoloLens 使用微投在“擋風(fēng)玻璃”上顯示全像的畫(huà)面。 至于這個(gè)問(wèn)題的標(biāo)準(zhǔn)答案,還得等微軟發(fā)布新的訊息。 讀者提問(wèn)之“HoloLens 能不能當(dāng) VR 用?這個(gè)問(wèn)題很好,的確可以這么玩,NASA 與微軟的的火星合作計(jì)劃基本上是一個(gè)虛擬實(shí)境的應(yīng)用,它無(wú)視了真實(shí)的環(huán)境。如果 HoloLens 可以提供調(diào)節(jié)“擋風(fēng)玻璃”透光度的 API,那么調(diào)成完全不透光時(shí)就好比戴著 Oculus Rift 的頭盔,是另一種體驗(yàn) VR 的途徑??墒桥笥褌?,這是在浪費(fèi) HoloLens 的機(jī)能?。?/p> 那么,作為未來(lái)的應(yīng)用開(kāi)發(fā)者,應(yīng)該怎樣充分榨干它的機(jī)能呢?這是本篇文章的重點(diǎn)。 正文部分首先讓我腦洞開(kāi)一會(huì),為大家“介紹”下 Holo SDK。按照微軟的偏好,SDK 標(biāo)配的語(yǔ)言肯定有 C++ 和 C#,因此要進(jìn)行開(kāi)發(fā),這兩種語(yǔ)言你至少得會(huì)一個(gè)。 然后,這個(gè) SDK 里有哪些功能呢?根據(jù)官方 demo 中的場(chǎng)景,我覺(jué)得基本功能至少有:
![]() 2.針對(duì) HoloLens 特別最佳化過(guò)的應(yīng)用
3.沉浸式的真全像游戲 ![]() 這一篇只講“偽全像的傳統(tǒng)應(yīng)用”這種類型的應(yīng)用對(duì)于傳統(tǒng)開(kāi)發(fā)者而言最容易上手,幾乎不需要修改程序碼,自然也不需要擁有 3D 圖形學(xué)的知識(shí)。大部分人會(huì)從這種應(yīng)用入手開(kāi)始 Holo 開(kāi)發(fā)。 如果不需要 3D 知識(shí)就能實(shí)現(xiàn) 3D 的界面,那么 3D 的效果是哪來(lái)的呢?那就是 Windows 10 引入的全像窗口管理器 —— explorer3d.exe。我們平時(shí)啟動(dòng) Windows 看到的“桌面”是窗口管理器(explorer.exe)的一部分,把“桌面”想像成三維的就行了,很簡(jiǎn)單是吧?
以影片播放器為例,播放器并不會(huì)直接將影片畫(huà)面顯示到桌面上,而是畫(huà)到一個(gè)暫存區(qū)域,經(jīng)過(guò)一系列我不知道的步驟后,explorer.exe 再將畫(huà)面以“2D 的方式拷貝”到能被我們看到的地方。而 explorer3d.exe 用的是“3D 的方式”。 所謂“3D 的方式”就是使用 Direct3D 做一些“會(huì)的人嫌我講得啰嗦,不會(huì)的人看了還是不會(huì)”的事…… ![]() 也就是在初始化應(yīng)用的時(shí)候:
在應(yīng)用軟件執(zhí)行時(shí):
在應(yīng)用軟件退出時(shí):
不用擔(dān)心,這些都是 explorer3d.exe 會(huì)負(fù)責(zé)的。 細(xì)心的讀者會(huì)發(fā)現(xiàn)我們沒(méi)有用到一個(gè)很重要的功能:
要解釋它我必須講解 world、view、projection 三個(gè)矩陣,還要講解矩陣的乘法以及 dot product 的公式等等,這些完全是圖形學(xué)的知識(shí)了,一時(shí)半刻講不完,我會(huì)再專門(mén)為它們寫(xiě)一個(gè)系列。我打算用一句話解釋一下,explorer3d.exe 會(huì)維護(hù)一個(gè)全局的 global_matrix,它等于 world * view * projection,view 的值由功能(d)中的訊息可以得到。global_matrix 的作用就好比第一人稱射擊游戲中的鼠標(biāo),寫(xiě)到這里我發(fā)現(xiàn)把 explorer3d.exe 視為一個(gè) 3D 游戲會(huì)簡(jiǎn)單很多,3D 游戲場(chǎng)景里的電視機(jī)也能播放影像,其實(shí)是一樣的道理。 ![]() 總結(jié)一下,這個(gè)類型的應(yīng)用軟件工程師幾乎不需要修改程序碼,由 explorer3d.exe 負(fù)責(zé)調(diào)用 Direct3D 將傳統(tǒng)應(yīng)用的內(nèi)容轉(zhuǎn)換成 3D 的貼圖。
● ● ● 解構(gòu)微軟HoloLens技術(shù) 引用宣傳視頻里面的一句話:
HoloLens 所實(shí)現(xiàn)的效果并不是微軟一家的創(chuàng)新,他早已流傳在種種科幻電影中。HoloLens 是一個(gè) Oculus+Kinect+Jetson TK1 集成起來(lái)的夾在鼻梁上的嵌入式怪物。腦補(bǔ)一下把 Kinect 帶到頭上的情景吧。微軟做到了! 根據(jù)我目前看到的信息,HoloLens 需要的技術(shù)支持包括三個(gè)部分:
這是游戲?qū)猛鏍€的東西,可以說(shuō)在阿凡達(dá)之后拉開(kāi)了一個(gè)時(shí)代的幕布,經(jīng)過(guò) NVIDIA、Intel 等公司的苦心經(jīng)營(yíng),實(shí)時(shí)的雙攝像頭渲染已經(jīng)很成熟。微軟終于把這種技術(shù)推向了更廣的領(lǐng)域。下圖這種效果在也就是現(xiàn)在是游戲級(jí)別的水平。
根據(jù)網(wǎng)上流傳的信息,可以肯定微軟采用了基于深度識(shí)別的 SLAM(實(shí)時(shí)定位與地圖構(gòu)建)技術(shù)。這里解釋一下什么是 SLAM,就是通過(guò)傳感器獲取環(huán)境的有限信息,比如視覺(jué)信息、深度信息、自身的加速度和角速度等來(lái)確定自己的相對(duì)或者絕對(duì)位置,并完成對(duì)于地圖的構(gòu)建。 SLAM 的準(zhǔn)確度對(duì)于最后的顯示效果非常重要,姿態(tài)確定就不是事兒。幾十塊的電容式陀螺儀或者幾百塊的 MEMS 抄幾段代碼就好,但怎么確定位置就是微軟的功力了。當(dāng)然深度攝像頭這種事情微軟常年吊打整個(gè)行業(yè),Kinect 快成行業(yè)標(biāo)準(zhǔn)了。想想我們用的激光雷達(dá)的價(jià)格。真是要哭了。
電影中,使用小型探測(cè)器掃描出來(lái)了隧道全景并且全息呈現(xiàn)了出來(lái)。對(duì)應(yīng)到現(xiàn)實(shí)《普羅米修斯》里面用的是這種玩意,相當(dāng)于一輛低配的奧迪 A8 的價(jià)格,可以發(fā)射幾十束激光同時(shí)掃描。Google 無(wú)人車也用這種激光雷達(dá)來(lái)進(jìn)行實(shí)時(shí)的路況分析。
微軟做到的可是實(shí)現(xiàn)了三年前科幻電影的效果啊!
注意這張圖,微軟暗示進(jìn)入一個(gè)房間之前要先進(jìn)行掃描,這里明顯是在用 Deep Camera 生成 Point Cloud 然后三角面片進(jìn)行 SLAM。如果確定是和 Kinect 類似的紅外攝像頭,那么可以認(rèn)為 kinect 有的毛病他都會(huì)有,比如對(duì)黑色物體、光滑表面的探測(cè)。 可以說(shuō),HoloLens 的核心難度是深度探測(cè)和相關(guān)的手勢(shì)識(shí)別。這可是微軟的專長(zhǎng)了。所以 HoloLens 就是一個(gè)戴到了鼻梁上的 Kinect。 為什么說(shuō) SLAM 對(duì)于 HoloLens 非常重要呢?因?yàn)橹挥袑?shí)現(xiàn)了靠譜的 SLAM,才能知道眼鏡的空間坐標(biāo)和相對(duì)于室內(nèi)各種障礙物的位置,同時(shí)識(shí)別出各種室內(nèi)擺件的形狀,這是宣傳片中人機(jī)交互的基礎(chǔ)。
在視頻中,主人公一直在走動(dòng),畫(huà)面的穩(wěn)定性很好。
注意上圖這里,可以看到對(duì)于各個(gè)表面的貼合度已經(jīng)達(dá)到了 SLAM 的程度。
這里注意到一個(gè)細(xì)節(jié),展示在三維空間中的 UI 很像是 Autodesk Fusion 的 UI,難道自動(dòng)桌已經(jīng)先行一步?來(lái)自官網(wǎng)的一張圖片,可以看到使用的正是 Autodesk。 作為半個(gè)工程師,我當(dāng)時(shí)買(mǎi) Leap Motion 就是為了玩 Solidworks Fusion?,F(xiàn)在有了 HoloLens,比 Fusion 體驗(yàn)不知道酸爽多少倍。腦補(bǔ)一下去參觀 EAST 的時(shí)候眼睛里顯示出 EAST 剖面的情景。不能再震撼了。 這三個(gè)技術(shù)在近些年成熟,促成了 HoloLens 產(chǎn)品化。之前 Google Glass 的設(shè)想與此類似,Hololens 把它推向了現(xiàn)實(shí)。
其實(shí) Hololens 所實(shí)現(xiàn)的效果也不是新鮮貨。早在冷戰(zhàn)末期,武裝直升機(jī)飛行員就通過(guò)頭盔里面的信息來(lái)操作機(jī)槍所瞄準(zhǔn)的方向。這兩年我軍也有裝備。當(dāng)年 Su35 的“回馬槍”向后發(fā)射的導(dǎo)彈就是用尾椎雷達(dá)和頭盔瞄準(zhǔn)具實(shí)現(xiàn)的。
更進(jìn)一步,上圖用到的也是類似的技術(shù)。 不過(guò),根據(jù)技術(shù)分析,Hololens 可能會(huì)遇到如下一系列困難: 第一,耗電量。計(jì)算視覺(jué)、SLAM,以及反過(guò)向進(jìn)行三維虛擬現(xiàn)實(shí),都是常耗費(fèi)計(jì)算量的任務(wù)。 Hololens 是時(shí)勢(shì)造英雄的產(chǎn)品,這種計(jì)算量在二十年前可是阿拉莫斯實(shí)驗(yàn)室用于核聚變模擬的計(jì)算量。現(xiàn)在只要耗電量跟的上,NVIDIA 的 Tegra K1 還有 Intel 家的協(xié)處理器在嵌入式上飆計(jì)算量沒(méi)問(wèn)題。 第二,是在開(kāi)放環(huán)境、欠光線環(huán)境的識(shí)別度問(wèn)題。我對(duì)此持保守態(tài)度,得拿到產(chǎn)品再說(shuō)。 第三,是定位精準(zhǔn)度問(wèn)題。這是老大難問(wèn)題了。
事實(shí)上,上圖中這種配合將成為很長(zhǎng)一段時(shí)間內(nèi)的主流。 如果修的不是自來(lái)水管而是血管,看到的是通過(guò) B 超技術(shù)實(shí)時(shí)掃描出來(lái)的人體內(nèi)部,那么未來(lái)的醫(yī)院會(huì)是怎么樣的。 如果顯示的不是自來(lái)水管的 manual,而是實(shí)時(shí)匹配無(wú)人機(jī)的爆炸視圖,那么以后的工廠和 DIY 是怎么樣的。 讓人難以想象的是,這一切居然要成真了! 微軟研究院養(yǎng)了那么多人真的不是白養(yǎng)的。目前來(lái)看,微軟在這些技術(shù)上解決的都非常好。 另外十分看好 HoloLens+ 無(wú)人機(jī)的交互。拿到貨以后我要做的第一件事情就是把我們的無(wú)人機(jī)系統(tǒng)移植上去。這畫(huà)面太美。我簡(jiǎn)直不敢想。 還有多系統(tǒng)配合,這是像 iPhone 可以推動(dòng) 21 世紀(jì)歷史進(jìn)程的玩意。
Hololens將物理世界與虛擬現(xiàn)實(shí)融為一體
技術(shù)實(shí)現(xiàn) 1、攝像頭: HoloLens的深度攝像頭視角廣度為120*120,遠(yuǎn)遠(yuǎn)超過(guò)只能看到一角的Kinect。 2、處理器: HoloLens配備多達(dá)18個(gè)傳感器,每秒傳輸百萬(wàn)兆字節(jié)的數(shù)據(jù)進(jìn)入處理器,這些數(shù)據(jù)全都由內(nèi)置的CPU、GPU和首創(chuàng)的HPU(全息處理單元)進(jìn)行處理。 3、光學(xué)鏡片: HoloLens為了精確模擬畫(huà)面的視覺(jué)感官,讓每個(gè)畫(huà)面都有真實(shí)的空間和距離感受,光線會(huì)在所謂的“光引擎”中反射數(shù)百萬(wàn)次,然后光線進(jìn)入兩塊鏡片,在經(jīng)過(guò)多層紅綠藍(lán)色的鏡片最終進(jìn)入你的眼睛。 4、散熱: HoloLens的性能比普通的筆電更強(qiáng)大但不會(huì)過(guò)熱——因?yàn)闊崃鲿?huì)從設(shè)備四周散發(fā)出去。 交互 1、手勢(shì): HoloLens通過(guò)手勢(shì)進(jìn)行操作,可以直接對(duì)眼前看到的物體,進(jìn)行抓取、旋轉(zhuǎn)、移動(dòng)等調(diào)整。打開(kāi)你的手掌就回到主屏了。 2、語(yǔ)音: 設(shè)備中的麥克捕捉語(yǔ)音指令。 3、眼控: 傳感器追蹤佩戴者的目光并調(diào)整顯示。 應(yīng)用 1、全息影像: HoloLens全息影像投射在屋內(nèi)的物體上并且鎖定住——這是一個(gè)被微軟工程師們稱為“定格”。你可以繞著目標(biāo)四處移動(dòng)并在任何角度觀察它,而不是跟著你的眼鏡(頭部)移動(dòng)。用HoloLens觀察到怪獸的全息影像時(shí),你可以輕松保持“安全距離”。 2、虛擬環(huán)境: HoloLens可以模擬一個(gè)物理空間——比如跟“好奇號(hào)”一起探測(cè)火星表面?;鹦堑挠跋衲茏層脩羯砼R其境,科學(xué)家可以跟實(shí)驗(yàn)對(duì)象交互,甚至在火星上插一枚虛擬國(guó)旗。比如:理論上你可以在畫(huà)面里指定一個(gè)地點(diǎn),然后火星車就真的能前往采集土壤樣品了。 3、增強(qiáng)現(xiàn)實(shí): HoloLens掃描你的環(huán)境和建立實(shí)時(shí)的數(shù)據(jù)模型。比如你正在玩一個(gè)游戲,游戲中的角色可以作為一個(gè)虛擬的全息影像在你的起居室嬉鬧。這個(gè)游戲角色不僅知道沙發(fā)在哪里,還能看見(jiàn)它是皮質(zhì)的——甚至直到它比木質(zhì)地板更松軟。 虛擬現(xiàn)實(shí),真金白銀
投資機(jī)構(gòu)已經(jīng)投下十億美金的重注在虛擬和增強(qiáng)現(xiàn)實(shí)的產(chǎn)品上,下一代的計(jì)算平臺(tái)也將在這里出現(xiàn)。
● ● ● 微軟開(kāi)設(shè)HoloLens全息眼鏡體驗(yàn)店
2015年12月18日,微軟在紐約的HoloLens全息眼鏡體驗(yàn)展示臺(tái)正式投入使用,同時(shí)微軟表示將在明年年初發(fā)布HoloLens全息眼鏡開(kāi)發(fā)工具,并準(zhǔn)備將HoloLens帶入計(jì)算機(jī)平臺(tái)。 該店位于紐約第五大道店的旗艦店,其中一個(gè)特意開(kāi)辟的樓層,在內(nèi)部設(shè)置大型展位,包括三個(gè)房間,參觀者和開(kāi)發(fā)者可以在三間房當(dāng)中體驗(yàn)三種不同的演示。 參觀者需要先測(cè)量瞳距(IPD),然后觀看一個(gè)詳細(xì)的視頻教學(xué),才能被允許帶上HoloLens全息眼鏡進(jìn)行體驗(yàn)。微軟在其中演示的Demo已經(jīng)經(jīng)過(guò)數(shù)月測(cè)試和調(diào)整,包括HoloStudio,它是微軟Windows畫(huà)筆的全息版本,采用空中抓取顏色的手勢(shì)與語(yǔ)音命令相結(jié)合,來(lái)移動(dòng)對(duì)象和重新著色。 同時(shí)為了避免牽扯到其他品牌,消費(fèi)者不會(huì)在演示房間內(nèi)看到在HoloLens全息眼鏡發(fā)布會(huì)上的Trimble架構(gòu)建模軟件演示,或美國(guó)航空航天局的火星可視化工具。 HoloStudio是微軟Windows畫(huà)筆的全息版本,采用空中抓取顏色的手勢(shì)與語(yǔ)音命令相結(jié)合,來(lái)移動(dòng)對(duì)象和重新著色。X射線是一個(gè)快節(jié)奏的,基于手柄的游戲,HoloLens僅作為房間掃描選項(xiàng),在這種情況下,你通過(guò)HoloLens全息眼鏡,可以看到外星機(jī)器人從墻壁當(dāng)中爬出。第三個(gè)演示demo則是“全息講故事”,可以在某處使用3D動(dòng)畫(huà)軟件和Microsoft PowerPoint創(chuàng)建故事,使用HoloLens全息眼鏡觀看故事播放的全息版本。
|
|
|