1、Hololens概述
Hololens有如下特性
一、空間映射藉助微軟特殊定製的全息處理單元(HPU),HoloLens 實現了對周邊環境的快速掃描和空間匹配。這保證了 HoloLens可以準確地在真實世界表面放置或展示全息圖形內容,確保了核心的AR體驗。
二、場景匹配HoloLens 設備能存儲並識別環境信息,恢復和保持不一樣場景中的全息圖像對象。當你離開當前房間再回來時,會發現原有放置的全息圖像均會在正確的位置出現。
三、天然交互HoloLens 主要交互方式爲凝視(Gaze)、語音(Voice Command)和手勢(Gesture),這構成了 HoloLens的基本輸入要素。同時傳統的鍵盤鼠標等設備也被支持,天然的交互方式更貼近人類習慣,提升了交互效率。
四、 通用應用HoloLens 平臺的操做系統爲 Windows Holograpic,一樣基於 Windows 10 定製。因此Windows 10 UWP 通用應用程序能夠順利地在 HoloLens 上運行。這不只下降了研發和遷移成本,也讓開發效率可以大幅提高。固然,說了不少 HoloLens 獨特的特性和優勢後,HoloLens 開發者版本也存在一些亟待解決的問題,包括視野較窄、凝視體驗不佳、抗光線干擾弱和重量續航等問題。 但瑕不掩瑜,HoloLens 帶來了真正的混合現實體驗,擁有着強烈的衝擊感,將來將大有做爲。
2、開發環境搭建
開發Hololens以前須要準備如下環境(如下爲我準備的環境)
一、Visual Studio 2015 Update 3
二、HoloLens Emulator (build 10.0.14393.0)
三、Unity HoloLens Technical Preview
四、Windows 10 SDK (10.0.14393.33) VS中進行安裝
更加詳細的環境配置可參考
https://developer.microsoft.com/en-us/windows/holographic/install_the_tools
3、集成HoloToolkit-Unity項目
在建立了標準 Unity 項目以後,咱們須要集成微軟官方提供的 HoloToolkit-Unity 項目。HoloToolkit-Unity 項目是微軟官方的開源項目,用於幫助開發者快速開發 HoloLens 應用,可以快速爲項目集成基本輸入、空間映射和場景匹配等特性。
關於該項目的詳細介紹,能夠參考微軟的開源項目https://github.com/Microsoft/HoloToolkit-Unity
集成步驟
一、下載HoloToolkit-Unity代碼 https://github.com/Microsoft/HoloToolkit-Unity.git
二、使用unity打開HoloToolkit工程,右擊Assets,導出Package
三、在本身的工程中使用HoloToolkit-Unity package
新建本身的Unity工程,Assets -> Import Package -> Custom Package 選擇剛纔導出的HoloToolket-Unity package, 導入成功後,能夠看到HoloToolkit菜單
4、構建場景
一、新建空白場景後,咱們須要刪除原有的 Main Camera 對象,同時從 HoloToolkit/Utilities/Prefabs 目錄中拖拽一個 Main Camera Prefab 組件到場景中
二、點擊「 Create Empty」 建立一個空遊戲對象,並將其命名爲 Input,爲 Input 對象添加核心腳本組件,分別爲 GazeManager.cs、 GestureManager.cs、 HandsManager.cs 和KeywordManager.cs。這樣就集成了凝視、手勢和語音命令三大核心特性。對於凝視射線、手勢識別和語音命令功能,均建議使用單例來進行管理,這樣能夠避免功能混亂,方便管理。同時爲凝視設置可視化的指針,能夠提升用戶的交互體驗和效率。
三、從 HoloToolkit/Input/Prefabs/ 目錄下拖拽 CursorWithFeedback Prefab 組件到場景中。這樣當凝視在全息對象時,其表面會出現可視化凝視組件。 當用戶手勢被識別到時,會出現一個藍色的手掌圖像,可以貼心的告訴用戶能夠操做了。
四、建立一個Cube對象並建立一個新的C#腳本,命名爲 HoloTest.cs。git
using UnityEngine; using System.Collections; public class HoloTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } public void OnSelect() { gameObject.GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0, 255) / 255f, Random.Range(0, 255) / 255f, Random.Range(0, 255) / 255f); } }
五、HoloTest.cs 腳本的功能爲隨機更換對象的材質顏色,遵循 GestureManager.cs 中預設的OnSelect消息名稱進入 Input 組件檢視選項卡,爲 KeywordManager.cs 組件配置語音命令。語音命令觸發時將會執行相應的組件行爲。 本例中,當我說出「 test」時,觸發Cube的 OnSelect 方法,來隨機改變 Cube 顏色。
六、爲了知足HoloLens的需求,咱們須要在 Player Settings 裏面開啓Virtual Reality Support,並在下拉列表中選中Windows Holographic,只有這樣 HoloLens 纔會將此應用渲染爲3D應用,這一點十分關鍵。
5、編譯運行
一、生成vs工程
二、打開vs工程,打開microphone權限,設置在模擬器中運行
三、運行,以下爲在Hololens模擬器上的運行效果
按空格鍵選中cube,或者說出指令」test」, 觸發OnSelect事件,cube的顏色將隨機發生變化
github