(翻譯++)微軟Hololens開發教程系列(1): Holograms 100-使用Unity構建第一個全息影像應用


Holograms 100-使用Unity構建第一個全息影像應用

前言

本系列博文翻譯至微軟Holograms的官方英文教程,其地址為: https://developer.microsoft.com/en-us/windows/holographic/academy

該系列文章由淺入深的講解了如何一步步的使用Unity3D來開發Hololens的應用程序,教程中所使用到的項目文件可以作為后續的開發模板使用。此外,在翻譯時,結合自己的理解和經驗,我對其中的一些部分增加了額外的解釋,希望能幫助大家更好的理解Hololens的開發。

 

 

開發工具和環境需求請參閱msp的昌偉哥哥 博文<HoloLens開發手記-配置開發環境 Install the tools>,對於沒有Hololens真機設備的朋友,可以考慮利用模擬器進行常規的開發和調試。

基於我個人的經驗,盡量使用CPU主頻高一些的記筆記或者桌面電腦(有固態硬盤更好)以提高生產力,因為在大部分的情況下,在Unity中開發全息應用的一次調試和部署都會需要兩次編譯,第一次由Unity編譯並導出相應的C# 項目及文件,第二次是則是需要使用Visual Studio打開導出的項目,然后編譯並部署到Hololens模擬器或真機中進行調試。 關於使用模擬器遇到的常見問題,我會嘗試在另外一篇文章中分享出來。

 

第一章 - 創建項目

在使用Unity構建一個應用程序之前,首選需要創建一個Unity項目。 一個Unity項目會包含所有用到的資源,比如來自3D Max,Maya的模型文件,動畫,場景,Photoshop圖片以及腳本文件和其他會使用到的素材等。值得注意的是,Unity是使用windows 或者 mac 的文件目錄結構本身來管理項目資源,它並不依賴於一個中央管理文件(類似Visual Studio中的 解決方案*.sln或項目文件*.csproj)。

Unity 本身支持使用C# 或者Javascript來撰寫相應的腳本代碼,你可以使用任何你喜歡的編輯工具來創建和維護這些腳本。 Unity會自動發現項目文件目錄下的所有腳本,除此之外,如果腳本在Visual Studio或者其他的編輯工具中被修改保存后,Unity也會自動重新加載這些更改后的腳本。

如果需要編譯和部署一個UWP程序的話,可以使用Unity來導出整個源代碼然后使用Visual Studio 來完成后續的編譯和部署功能,接下來我們就來看看如何創建一個Unity 項目:

  1. 運行Unity
  2. 選擇 New
  3. 輸入項目的名稱(例如 “HelloHologram”)
  4. 選擇項目保存的文件目錄
  5. 確保建立的是3D 項目(勾中)
  6. 點擊Create Project

 

第二章 - 設置攝像機

 我們需要對Unity中的主攝像機做一些設置上調整來確保它能在Holoens的應用程序中處理頭部跟蹤動然后正確的渲染影像。

首先,想要更好的放置你的全息應用程序,我們必須先知道用戶的位置在哪,為了方便起見,我們會使用世界原點(X:0,Y:0,Z:0)作為用戶的起始位置,也就是主攝像機的位置,你可以將主攝像機想象為用戶的雙眼,隨着用戶頭部的移動,主攝像機的位置也會不斷更新。以此主攝像機的起始位置為參照,我們便能方便的控制和調整全息圖像和用戶之前的距離。 (注意,在Unity中開發Hololens的應用,一個Unit單位就代表現實中的一米)

  1.  在Hierachy面板中單擊選中“Main Camera” 
  2.  接着在Inspector面板中,找到Transform組件然后將PositionX:0,Y:1,Z:-10)更改為X:0,Y:0,Z:0)

 接下來,我們需要更改主攝像機的背景設置,因為在一個全息的應用程序中,攝像頭渲染的全息圖像應該使用真實世界的影像來作為背景,而非采用默認的Skybox質地作為渲染背景。

  1. Hierachy面板中繼續選中“Main Camera”,在Inspector面板中找到Camera組件,然后在Clear Flags下拉框中將設置從Skybox改為Solid Color
  2. 使用顏色選擇器將Background設置為RGBA (0,0,0,0)即純黑色。(這樣做的目的其實是為了方便Hololens在運行時將純黑的背景設置為透明,繼而能顯示真實世界的影像畫面。其原理和電影中制作特效時需要演員在先在一個特定顏色的簾幕前做動作,然后在后期編輯時再用特效場面來替換掉其原有的純色背景是完全一樣的)

最后,為了避免渲染的全息影像太過靠近用戶的雙眼,需要在Inspector面板中將Camera組件的Near clicp(視距)設置為Hololens的推薦值:0.85米,即雙眼離全息影像的距離至少為0.85米遠

 

第三章 - 創建全息應用

 在Unity中創建一個全息影像的應用和創建一個普通的Unity項目並沒有什么不同,當項目創建完成后,你可以基於Unity自帶的坐標系統,很方便的放置一個3D模型(即最終輸出為全息影像)在你希望的位置。別忘了Unity中的坐標系統既代表了真實世界的投影,Unity中的1個單位就代表真實世界中的1米 (比如將一個方塊Cube 的X值設置為1,則以為着以世界原點為基准,該物體往X方向移動1米)

  1. 在Hierachy面板左上方的Create下拉框中選擇新建一個3D Object > Cube
  2. 在Hierarchy面板中單擊選中新建的這個Cube
  3. 在對應的Inspector面板中找到Transform 組件,並將其Position設置為(X:0,Y:0,Z:0)
  4. Transform組件中將Rotation 設置為 (X:45,Y:45,Z:45)來轉動方塊使它更具立體感,與此同時,將Scale設置為(X:0.25,Y:0.25,Z:0.25)來縮小方塊使它的長,寬,高縮小至大約0.25米
  5. 選擇Unity目錄的File > Save Scene來保存當前的場景的改動

 

第四章 - 從Unity中導出至Visual Studio

當你跟隨着之前的章節完成你的第一個全息應用的創建后,接下來要做到事便是從Unity中將項目導出到 Visual Studio中進行編譯以便最終將你的全息應用部署到Hololens 設備或者Hololens模擬器中。在導出之前,我們需要在Unity對項目做一些設置上的調整

 

Unity 中的性能設置

對於Hololens而言,維持一個高刷新率是至關重要的,它直接影響到全息影像在現實世界中呈現的效果以及用戶的感受。因此,我們有必要稍微犧牲一些畫面上的質量以換取一個較高的性能。具體細節可參閱官方關於Unity 性能的文檔 Performance recommend for Unity (目前僅有英文版本)

  1. 在Unity的主菜單中選擇 Edit > Project Settings > Quality
  2. 在打開的QualitySettings面板中選中Windows Store 的圖標(選中后會高亮顯示),然后在底部的下拉框中選擇Fastest將項目的質量輸出設置為性能最優

 

Unity 中的編譯設置

在2D/3D圖形相關的開發的市場中,選擇Unity作為開發平台的人占比超過50%之多,其中最重要的一個原因既是Unity 能方便迅速的編譯和導出針對不同運行平台的應用程序。常見的包括了Xbox,Mac,Windows Store等等。

在本文中,我們的目標平台是Hololens,一個運行Windows 10的設備。因此,我們需要在Unity中將編譯的目標平台選擇為Windows Store來生成Universal Windows Platform的應用程序 (UWP程序可以運行在所有的Windows 10 平台上)

  1. 選擇Unity 目錄 File  > Build Settings..
  2. Building Settings 中的Platform list 里選擇 Windows Store
  3. 將SDK 設置為 Universal 10
  4. Build Type 設置為 D3D

 

針對Windows 全息應用的導出設置

為了使Unity導出的應用程序能正確的以全息圖像視野而非普通2D圖像視野來顯示,我們需要在Unity中進行一些相應的設置即添加Hololens作為其虛擬現實設備。

  1. Build Settings 窗口的左下方,點擊Player Settings按鈕
  2. Player Settings窗口中選擇 Settings for Windows Store 選項卡
  3. 展開Other Settings 面板
  4. Rendering欄目里,勾中Virtual Reality Supported 多選框來添加一個新的虛擬現實設備到列表中(確認Windows Holographic已添加到支持的設備列表中)

 

導出到Visual Studio解決方案

到這一步為止,我們構建的Unity項目已經全部設置好了,接下來我們將從Unity中把項目編譯然后導出相應的Visual Studio解決方案及項目文件

  1. 首先返回到Build Settings 窗口 (從Unity目錄選擇File > Build Settings)
  2. 點擊Add Open Scenes 按鈕將當前打開的場景添加到此次編譯中來
  3. 勾中 Unity C#Projects 確保Unity會生成相應的C# 項目文件
  4. 點擊Build 開始編譯
  5. 在彈出的窗口中選擇導出C#項目的保存路徑,建議在其Unity項目根路徑下直接添加一個新目錄 “App
  6. 點擊確定后Unity則開始編譯,一旦編譯完成后Windows會自動打開其導出的目錄
  7. 在彈出的文件瀏覽器中進入到App目錄
  8. 雙擊生成好的解決方案文件(本例中為 HelloHolograms.sln)

 

設置應用程序為Windows 全息應用

在默認情況下,從Unity中導出的Universa Windows Platform 應用程序將會在所有的Windows 10設備上運行。但是對於全息應用程序來說,有些功能上的優勢是holoLens有且僅有的,因此如果你不打算在其他Hololens的Windows10 設備上運行你的應用程序的話,那么最好將應用的目標設備設置為僅運行在Hololens設備上。

  1. Visual Studio 中,從右邊的解決方案瀏覽器面板中右擊 Package.appxmainifest文件,然后選擇 View Code
  2. 在開打的文件中,找到TargetDeviceFamily 這一行然后將其從默認的Name="WindowsUniversal" 改為 Name="Windows.Holographic"
  3. 在同一行中,將MaxVersionTested="10.0.10240.0"改為 MaxVersionTested="10.0.10586.0"
  4. 保存Package.appxmainifest 以完成更改

 

 第五章 - 編譯和部署全息應用程序

現在我們唯一剩下的工作就是從Visual Studio中編譯然后部署我們的第一個全息應用程序了。首先,在Visual Studio頂部的編譯選項工具欄里,將目標從Debug改為Release ,平台從ARM改為X86. 接下來的步驟,需要取決於你是在模擬器中或者Hololens真機上進行部署,具體請參閱如下

 

 通過Wi-Fi將應用部署到Hololens真機

  1. 在Visual Studio的編譯選項欄里,將設備這一下拉框中選擇 Remote Machine
  2. 在彈出的對話框中輸入 Hololens的IP地址 (Hololens 和你的筆記本需要加入同一個Wi-Fi網絡),然后更改Authentication ModeUniversal(未加密協議)
  3. 選擇Visual Studio 的菜單目錄 Debug > Start without debugging. 如果這是你第一次從你手上的筆記本部署應用到Hololens中,你需要先將你的Hololens和你的筆記本做一次配對,具體操作參閱 pair it with Visual Studio

 通過USB將應用部署到Hololens真機

  1. 在Visual Studio的編譯選項欄里,將設備這一下拉框中選擇 Device

  2. 選擇Visual Studio 的菜單目錄 Debug > Start without debugging.

 通過USB將應用部署到Hololens模擬器

  1. 在Visual Studio的編譯選項欄里,將設備這一下拉框中選擇 HoloLens Emulator
  2. 選擇Visual Studio 的菜單目錄 Debug > Start without debugging.

 

當你成功的將第一個全息應用部署完成后,你將會看到一個方塊懸停在你的面前,你可以走進它或者圍繞着它細節觀察和體驗. Good Luck!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM