如何進行HoloLens 2 上應用開發(fā)?

Hololens 2 自今年2月份公布以來,引起了業(yè)界的廣泛關注。對于開發(fā)者而言,如何進行HoloLens 2 上應用開發(fā)是大家關注的焦點之一。

編譯架構(gòu)

HoloLens 2 支持的最低部署環(huán)境為RS5(Windows 10 April 2018 Update),并且需要將WindowsSDK 升級至18362及以上版本,大家可以安裝“Windows10 May 2019”或者1903的SDK。在編譯架構(gòu)上,HoloLens 2目前能夠使用ARM架構(gòu),Unity 2018.3.X版本能夠發(fā)布ARM32位,而ARM64位目前還暫未開放。

開發(fā)工具

開發(fā)工具建議首選Unity。它完善的工具鏈,C#的開發(fā)環(huán)境,天生的跨平臺特性,豐富的第三方插件,都使得Unity成為最方便好用的開發(fā)載體。開發(fā)者至少需要升級到2018.3以上版本,因為目前Unity2019版本還不夠穩(wěn)定,所以目前建議大家使用Unity2018進行開發(fā)。

Unreal引擎也已經(jīng)官方支持HoloLens 2了,但SDK暫時還未開放。Unreal引擎能夠打造高質(zhì)量的3D內(nèi)容,在一些場景下HoloLens 2 可產(chǎn)生更好畫面效果。UE4的XR 框架和設備特定API不但能夠具備HoloLens 2 的各項功能開發(fā),還支持頭戴式設備(HMD)和AR集成設備,在跨平臺兼容的擴張性上幫助開發(fā)者們獲得更多的支持。

我們建議比較硬核的開發(fā)者或者擁有自主研發(fā)3D引擎的公司,可以選擇使用原生DirectX開發(fā),這樣開發(fā)效率會提升。 OpenXR的runtime支持也已經(jīng)加入,但還屬于比較早期階段。

HoloLens 2 模擬器

如果開發(fā)者暫時沒有HoloLens 2 設備的話,大家也可以使用模擬器進行開發(fā)。如要安裝HoloLens 2 模擬器,需要將操作系統(tǒng)升級到1809版本或以上。大家可以查看文末HoloLens 2 模擬器官方文檔鏈接,進行學習。

開發(fā)套件

要開發(fā)HoloLens 2 的應用,就離不開MRTK v2了。MRTK提供了一整套在MR設備上操作、交互及協(xié)同的框架。在HoloLens一代時候,我們還可以不使用MRTK自行開發(fā),但到了HoloLens 2 的時代,我們幾乎已經(jīng)離不開MRTK v2了(或者說,繞開它的成本很高,且毫無意義)。如果你之前的應用是用MRTK v1開發(fā)的,可以根據(jù)官方教程,將MRTK v1開發(fā)的應用遷移到MRTK v2。

MRTK v2相比老版本做了大量進化,它在上一代開發(fā)套件上進行了大量重構(gòu),橫跨了VR/AR/MR,同時增加了對OpenVR的支持,使其覆蓋面變得更加寬泛。經(jīng)過重構(gòu)的Input模塊,使得所有設備的不同輸入方式可以被包容在一起,開發(fā)者可以用相對統(tǒng)一的思路來處理各種不同設備的輸入方式。

重構(gòu)也使MRTK v2有了更為清晰的模塊化結(jié)構(gòu),更靈活的配置性和更好的擴展性,基于MRTK Package結(jié)構(gòu)進行的開發(fā),使得它的擴展性得到了空前的提升。

最后,從MRTK v2的路線圖來看,目前發(fā)布的只是RC1版本,開發(fā)團隊在后面的規(guī)劃中還有更多的內(nèi)容,讓我們拭目以待。

本能的交互理念

HoloLens 2 無論是從硬件還是軟件都加入了本能交互的理念,這些本能交互設計在輸入技術上包括了像Inside-Out追蹤、手勢追蹤、眼動追蹤及自然語言等無縫多類型模式。這些輸入方式在MRTK v2開發(fā)上也有諸多體現(xiàn)。

自然手勢

HoloLens 2 可以用最自然的方式讓雙手和虛擬物體交互,它通過機器學習能夠近乎實時捕捉手部的21個關節(jié),并通過這些關節(jié)來耦合對應的輸入指令。這也意味著我們可以掌控整個手部的動作。有趣的是,在微軟混合現(xiàn)實開發(fā)者日(MRDD)上微軟官方推薦也是用Leap Motion來對這種操作進行簡單模擬。手部位置的追蹤和基礎手勢已經(jīng)內(nèi)置在MRTK v2之中,只要使用默認的配置制作的應用,當你伸出雙手,你就能看到有一雙虛擬的手完整的套在你的手上,并隨著你的手實時運動。

HoloLens手勢互動2

使用默認的設置,我們也可以隨意用手抓取近處的虛擬物體,當物體較遠時,還可以用手部伸出的射線來像光標一樣選取。而各種豐富的手勢甚至不需要我們寫一行代碼就可以實現(xiàn)。當然,如果要實現(xiàn)真正可用的功能,還是需要用代碼把這些功能整理到你的應用之中。

MRTK v2中提供了一個能夠體驗全部HoloLens 2 輸入方式和UI的示例場景,上手時,開發(fā)者們可以優(yōu)先考慮用它來進行初次體驗。

眼動追蹤

眼動追蹤,顧名思義就是能夠通過識別用戶的眼動來進行交互操作。它可以幫助用戶在使用時選擇目標,閱讀時上下移動視線能夠滾動導航幫助閱讀以及將用戶體驗時的關注點進行統(tǒng)計分析。MRTK v2提供了一系列眼動追蹤的組件來幫助開發(fā)者設計項目。但是需要注意的是,由于眼動追蹤相對來說敏感度較高,開發(fā)者在項目眼動追蹤的交互設計時,應注意避免眼動追蹤對項目交互流程進行的誤操作干擾。

共享空間錨

做過多人協(xié)同的MR應用的開發(fā)者都知道,空間不能共享是一件很痛苦的事情。當我們有多臺MR設備需要在一個共同場景中同步時,每一臺設備對空間的理解都不相同,我們往往需要逐個調(diào)整每一臺設備中的空間錨,才能讓這些設備中看到的畫面看起來在同一個位置。

微軟在HoloLens 一代階段曾經(jīng)設計了一套API,能夠?qū)⒖臻g信息序列化,并通過網(wǎng)絡傳輸給其他HoloLens,讓其他設備的空間與這臺設備共享,但是當時的這一套機制實用性卻不太強。一方面,空間信息序列化后過于龐大,經(jīng)常達到上百MB的容量,網(wǎng)絡傳輸困難;另一方面,其他設備下載空間信息后,有很大概率無法和自身識別的空間進行匹配,導致經(jīng)常不能使用。隨著HoloLens 2 的到來,微軟也發(fā)布了新的Azure Spatial Mapping。這次是直接將空間信息通過簡單的REST API上傳到Azure,由Azure管理并存儲,其他端則是從Azure下載。我們也在微軟總部進行了簡單的測試,上傳下載的速度還是很快的,比之前做了大幅的優(yōu)化。

Azure Spatial Anchor的加入讓混合現(xiàn)實場景的分享與交互不僅只針對HoloLens 2 這類支持UWP平臺的混合現(xiàn)實設備,還兼容了ARKit和ARCore等AR技術的平臺,支持Pad和智能手機等多類終端也參與到共享空間錨信息中。當然,我們必須要連上Azure公有云才能訪問此服務,在純內(nèi)網(wǎng)環(huán)境中就無法使用了,這時候還需要開發(fā)者自己寫相應的映射服務。