如何實現3D應用啟動器呢?我們需要兩個步驟實現:
1.? 準備3D模型
2.? 修改項目配置以集成3D圖標
準備3D模型
3D應用啟動器要求的圖標文件必然是3D模型文件,這一點是明確的。同時,使用的3D模型必須同樣符合HoloLens項目的一般性兼容要求,即對面數或者素材尺寸等方面的限制。3D應用啟動器的模型應當在30厘米的立方體空間中設計,也就是說建議的模型長寬高尺寸應當小于30cm*30cm*30cm。此外,作為用于系統主頁的啟動圖標,一些額外的要求也必須遵守:
- 導出格式:模型資產必須為.glb格式的3D模型,glb格式是免費開放的glTF格式的二進制版本,支持內嵌貼圖和數據,很多工具都可以生成或導出此格式的模型文件,包括Windows 10內置的Paint 3D應用。
- 建模標準:模型曲面的三角形個數必須小于10000個,每個層次細節(LOD)具有不超過64個節點和32個子網格。
- 材質:模型使用的貼圖尺寸最大不超過4096*4096,推薦使用的尺寸為512*512。
- 動畫:模型的動畫不應大于30FPS下的20分鐘,也就是36000個關鍵幀。包含的MorphTagets(變形目標)頂點的個數必須不大于8192個。
- 模型優化:使用的模型必須經WindowsMRAssetConverter優化過,它可以根據微軟的要求自動化優化我們的模型,是微軟提供的開源工具之一。
首先,用系統內置的Paint 3D應用快速創建一個符合要求的3D模型,可以使用Remix 3D上的免費3D模型。
下一步導出模型,選擇Menu - Save as - 3D model,導出格式選擇.glb。
再優化模型,下面使用WindowsMRAssetConverter工具自動優化導出的模型文件,確保它可以被項目兼容并使用。注意,不符合要求的模型將不會再HoloLens系統主頁上顯示。
此刻模型準備就大功告成啦,下面就把它集成到項目中。注意,要把文件生成行為設為內容。
集成3D應用啟動器
為了能夠讓系統識別到3D模型作為啟動器,修改UWP應用清單就是必要的做法。當我們使用Visual Studio創建一個UWP項目時,默認會在項目中生成一個Package.appxmanifest應用清單文件。此XML格式的應用清單文件是UWP應用必須具有的組件之一,用于聲明應用的信息、權限和其他系統行為的注冊,可以說是每一個應用的身份憑據了。當然,對于Unity3D開發的3D應用,需要在Unity導出生成UWP項目后再編輯此清單文件。
下面我們首先修改清單文件,引入uap5命名空間,如下:
接下來在Application元素中使用uap5:MixedRealityModel標簽聲明啟動器模型路徑。
如果不引入此MixedRealityModel標簽那么應用就會被默認為2D應用,引入后系統才會認為此應用使用3D啟動器。完成以上步驟后,實現一個基本的3D應用啟動器就大功告成了。
邊框盒選項(Bounding Box)
前面的部分我們已經實現基本的3D應用啟動器了,整個配置過程非常簡單。那么如何自定義啟動模型的邊框盒呢?對于實現了3D應用啟動器的應用而言,系統默認會生成邊框盒。此外,HoloLens還允許我們修改邊框盒的參數來自定義3D啟動器模型的顯示效果。主要是使用SpatialBoundingBox標簽中的Center和extents屬性來指定模型相對于邊框盒中心的位置,以及邊框盒中心點到每個邊框在對應軸上的距離,這里設置的屬性值單位都為米。
使用方法和引入3D啟動器類似,首先引入命名空間:
在MixedRealityModel下添加SpatialBoundingBox標簽,如下:
這樣配置后,我們的3D啟動器的模型將會根據設置的自定義參數顯示在空間特定的位置上。
二級3D磁貼
UWP應用具有一個可以創建二級磁貼的特性,可以生成快捷的二級磁貼入口,類似于快捷方式一般。對于HoloLens而言,現在我們也可以像創建2D二級磁貼一樣,使用代碼快捷的生成3D二級磁貼了,就像微軟的Holograms應用一般,可以快捷的把全息模型放置到空間中。
同時3D二級磁貼還支持兩種激活模式:
1.??默認激活:此模式下點擊3D二級磁貼則會立刻打開應用,進入其應用視圖。
2.??不激活:此模式下點擊選中3D磁貼不會觸發任何應用,它就像一個普通的全息圖像一樣展示在空間中。
3D二級磁貼的使用方式和普通二級磁貼類似,只需要簡單的調用系統API即可,如下:
其中需要注意的是,用作二級磁貼的3D模型只能是存放在應用安裝目錄或者獨立存儲空間中的內容,使用ms-appx或ms-appdata協議路勁引入。二級磁貼的邊框盒也可以直接使用代碼設置,其屬性和3D啟動器一致。