HoloLens 開發總結

目前科技界最感興趣的設備之一是微軟HoloLens。HoloLens背後的技術十分迷人,但也十分複雜。簡單來說,它可以被描述爲真實世界和虛擬世界的融合,其中來自兩個“現實”的對象可以並存,同時可以實時地彼此交互。這種技術被稱爲“混合現實”。


許多開發者都爲HoloLens感到興奮,即便並沒有太多早期用戶購買了售價爲3000美元的開發者包。好消息是,你其實不需要擁有一臺設備就能爲其開發內容。藉助Universal Windows Platform,你的應用也能運行在HoloLens上。


1. 準備工具、SDK、IDE


從太空探索到建築、再到遊戲和教育,微軟HoloLens都被用於革新這些行業,這款產品也已經找到了實際的用例。由於HoloLens使用了相對較新的技術,目前沒有太多的工具用於開發混合現實內容。大多數熟悉的開發套件和軟件適合在開發全息應用程序時使用。根據Program-Ace,一組最低要求的工具是:


3D設計:Autodesk Maya、3ds Max、Adobe PhotoShop、Substance Painter
動畫:Biped for 3ds Max
開發:Unity、Vuforia、Microsoft Visual Studio、Windows 10 SDK、HoloLens Emulator(如果你沒有HoloLens設備)


要開發全息體驗,開發者必須擁有上述的工具。而這些工具都可以在微軟官網上找到。一旦完成了安裝和準備環節,你就可以準備開發一款全新的混合現實體驗。


2. 設置全息圖


當你通過這些3D建模和渲染工具來開發VR應用、遊戲或HoloLens體驗時,其使用方法仍然一樣。不同之處只有當這些三維模型被集成至全息環境中才會出現。


雖然HoloLens所能實現的視覺體驗十分驚豔,但開發者仍然需要小心地開發,以避免經常會遇到的現象:眩暈,也被稱爲暈動症。當用戶身處VR環境中可能會出現暈動症,並可能會經歷眼睛不適、頭痛、噁心、暈眩和迷失方向等等。


在我們的開發過程中,Program-Ace的專家同樣面臨着相同問題,因爲HoloLens應用的構建方式會導致暈動症。這時,近裁剪面(near clip plane)就能派上用場。在使用Unity時,近裁剪面需要設置爲不少於0.85m,這十分重要,因爲如果比這個數值小,物體就會過於靠近用戶的眼睛,使得眼睛變成“鬥雞眼”。


除了會讓視覺體驗更難處理之外,這還會造成用戶嚴重的不適。全息內容到眼睛的理想距離應該儘可能接近2m,因爲這個距離不會出現雙眼競爭(binocular rivalry)。


簡單來說,投影到透明組合器的左右兩塊透鏡的兩張圖像將在距離用戶2米處完全重疊。在不可能把全息內容放置在推薦距離的情況下,你可以使用最有利的區域:即1.25至5米的範圍。


 




開發者還應該注意視覺體驗的另一個基本要素:幀率。爲了確保HoloLens能實現愉悅和安全的體驗,我們主張將幀率設置爲每秒30幀以上。


但是,請注意不要偏離推薦值,因爲太小的幀速率會導致前面提及的暈眩問題,而因爲設備的有限的計算性能限制,系統也不能迅速處理過高的幀速率。


3. 用注視與全息世界交互


追蹤用戶的注視點對管理虛擬內容十分重要,尤其是HTC Vive和Oculus Rift。


爲了實施這項技術,HoloLens會追蹤用戶頭部在空間中的位置,每秒處理一個千兆字節的實時信息。我們可以想象一個涉及多個選擇的簡單應用程序:例如,一個解釋太陽系的標準應用。當用戶查看某個行星時,它就會變爲高亮顯示,並在其旁邊顯示更多的信息。


在默認情況下,HoloLens中細小半透明圓圈實際上是一個3D光標,會指明用戶正在注視的位置。然而,它能夠以任何形式呈現,無論是真實還是虛擬。


Unity會幫助開發者以多種方式操縱這個HoloLens特性。例如,已知的“廣告牌”技術允許全息圖總是面向用戶。這對於諸如文本或按鈕的UI元素特別有利。此外,開發者可以使用3D光標來吸引用戶的注意力,並將其引導至必要的全息圖或對象。


4. 用語音與全息世界交互


語音命令是用戶與頭戴式設備交互的最不尋常的方式。然而,它感覺更自然和直觀,併爲應用程序導航甚至是設備的UI提供了全新的頻譜。Program-Ace專家爲此創建了一組規則,開發者在使用Unity編程語音識別時必須遵守這些規則:


語音命令應儘可能保持簡短,以簡化非母語的發音,不要通過複雜的短語或句子混淆用戶。
應在整個應用程序中使用一個預定義的命令來執行類似的操作,例如單擊和打開。
通過基於手勢的替代方法來複制語音命令,從而提高整體用戶體驗,並避免發音錯誤或不清楚的情況。
5. 用手勢與全息世界交互


手勢是與混合現實世界進行交互的新方式。這種輸入方式已經被證明是有用和高效的操作。通過一系列離散和連續的運動,用戶可以更輕鬆地控制HoloLens。


離散手勢使用的是即時動作,例如點擊圖標或打開菜單;而連續手勢則包含旋轉或滾動。


 




當爲HoloLens開發時,你應該確保設備通過突出顯示圖標、打開應用程序或執行其他適當的操作來迅速響應手勢。類似於對用戶的注視進行編程,開發者可以加入幾行代碼來警告用戶他或她的手勢位於視野之外。


然而,由於混合現實技術尚未成熟,HoloLens存在一定的侷限性。例如,手部位置或對象放置並不總是可以被準確地識別。在爲HoloLens開發時應該要考慮到這一點,並確保距離偏差不會對應用程序的功能產生重大影響。


使用 Unity 引擎開發 HoloLens 應用是非常容易的事情,大部分流程與開發 UWP 項目並無不同。但仍有不少需要注意的雷區和特殊要求,以下就是部分要注意的部分: 

1. Main Camera 一定要按照官方要求配置,背景純色且 RGBA 值爲(0,0,0,0),這樣
才能避免遮擋現實內容; 
2. Gaze 凝視特性需要我們使用 Raycast 來實現,注意處理射線未命中目標情形,默認凝
視最遠距離爲 15 米,若是未擊中物體,使用時可能會出現空引用異常; 
3. 手勢識別、拍照和語音命令等均需使用 Windows 特有 API,空間映射和場景匹配需要
使用 HoloLens 特有 API; 
4. 其他很多細節上的體驗,例如可視化凝視組件、目標區域可視化指引組件,使用他們來
給用戶提示,可以幫助用戶理解應用操作方法,提高使用體驗。 
最後,AR/MR 技術獨特的交互體驗與開發特性,代表了未來自


然交互的發展方向,相較於
目前成熟的 VR 技術,它們具有更光明的發展前景和更廣闊的用途。無論是微軟還是 Magic
Leap,它們無疑會是未來市場的引領者,而目前也是我們學習的黃金階段,能夠迎頭趕上這
波浪潮,對於相關從業者具有重要的意義。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章