如何實(shí)現(xiàn)3D應(yīng)用啟動(dòng)器呢?我們需要兩個(gè)步驟實(shí)現(xiàn):
1.? 準(zhǔn)備3D模型
2.? 修改項(xiàng)目配置以集成3D圖標(biāo)
準(zhǔn)備3D模型
3D應(yīng)用啟動(dòng)器要求的圖標(biāo)文件必然是3D模型文件,這一點(diǎn)是明確的。同時(shí),使用的3D模型必須同樣符合HoloLens項(xiàng)目的一般性兼容要求,即對(duì)面數(shù)或者素材尺寸等方面的限制。3D應(yīng)用啟動(dòng)器的模型應(yīng)當(dāng)在30厘米的立方體空間中設(shè)計(jì),也就是說(shuō)建議的模型長(zhǎng)寬高尺寸應(yīng)當(dāng)小于30cm*30cm*30cm。此外,作為用于系統(tǒng)主頁(yè)的啟動(dòng)圖標(biāo),一些額外的要求也必須遵守:
- 導(dǎo)出格式:模型資產(chǎn)必須為.glb格式的3D模型,glb格式是免費(fèi)開(kāi)放的glTF格式的二進(jìn)制版本,支持內(nèi)嵌貼圖和數(shù)據(jù),很多工具都可以生成或?qū)С龃烁袷降哪P臀募?,包括Windows 10內(nèi)置的Paint 3D應(yīng)用。
- 建模標(biāo)準(zhǔn):模型曲面的三角形個(gè)數(shù)必須小于10000個(gè),每個(gè)層次細(xì)節(jié)(LOD)具有不超過(guò)64個(gè)節(jié)點(diǎn)和32個(gè)子網(wǎng)格。
- 材質(zhì):模型使用的貼圖尺寸最大不超過(guò)4096*4096,推薦使用的尺寸為512*512。
- 動(dòng)畫(huà):模型的動(dòng)畫(huà)不應(yīng)大于30FPS下的20分鐘,也就是36000個(gè)關(guān)鍵幀。包含的MorphTagets(變形目標(biāo))頂點(diǎn)的個(gè)數(shù)必須不大于8192個(gè)。
- 模型優(yōu)化:使用的模型必須經(jīng)WindowsMRAssetConverter優(yōu)化過(guò),它可以根據(jù)微軟的要求自動(dòng)化優(yōu)化我們的模型,是微軟提供的開(kāi)源工具之一。
首先,用系統(tǒng)內(nèi)置的Paint 3D應(yīng)用快速創(chuàng)建一個(gè)符合要求的3D模型,可以使用Remix 3D上的免費(fèi)3D模型。
下一步導(dǎo)出模型,選擇Menu - Save as - 3D model,導(dǎo)出格式選擇.glb。
再優(yōu)化模型,下面使用WindowsMRAssetConverter工具自動(dòng)優(yōu)化導(dǎo)出的模型文件,確保它可以被項(xiàng)目兼容并使用。注意,不符合要求的模型將不會(huì)再HoloLens系統(tǒng)主頁(yè)上顯示。

此刻模型準(zhǔn)備就大功告成啦,下面就把它集成到項(xiàng)目中。注意,要把文件生成行為設(shè)為內(nèi)容。
集成3D應(yīng)用啟動(dòng)器
為了能夠讓系統(tǒng)識(shí)別到3D模型作為啟動(dòng)器,修改UWP應(yīng)用清單就是必要的做法。當(dāng)我們使用Visual Studio創(chuàng)建一個(gè)UWP項(xiàng)目時(shí),默認(rèn)會(huì)在項(xiàng)目中生成一個(gè)Package.appxmanifest應(yīng)用清單文件。此XML格式的應(yīng)用清單文件是UWP應(yīng)用必須具有的組件之一,用于聲明應(yīng)用的信息、權(quán)限和其他系統(tǒng)行為的注冊(cè),可以說(shuō)是每一個(gè)應(yīng)用的身份憑據(jù)了。當(dāng)然,對(duì)于Unity3D開(kāi)發(fā)的3D應(yīng)用,需要在Unity導(dǎo)出生成UWP項(xiàng)目后再編輯此清單文件。
下面我們首先修改清單文件,引入uap5命名空間,如下:

接下來(lái)在Application元素中使用uap5:MixedRealityModel標(biāo)簽聲明啟動(dòng)器模型路徑。

如果不引入此MixedRealityModel標(biāo)簽?zāi)敲磻?yīng)用就會(huì)被默認(rèn)為2D應(yīng)用,引入后系統(tǒng)才會(huì)認(rèn)為此應(yīng)用使用3D啟動(dòng)器。完成以上步驟后,實(shí)現(xiàn)一個(gè)基本的3D應(yīng)用啟動(dòng)器就大功告成了。
邊框盒選項(xiàng)(Bounding Box)
前面的部分我們已經(jīng)實(shí)現(xiàn)基本的3D應(yīng)用啟動(dòng)器了,整個(gè)配置過(guò)程非常簡(jiǎn)單。那么如何自定義啟動(dòng)模型的邊框盒呢?對(duì)于實(shí)現(xiàn)了3D應(yīng)用啟動(dòng)器的應(yīng)用而言,系統(tǒng)默認(rèn)會(huì)生成邊框盒。此外,HoloLens還允許我們修改邊框盒的參數(shù)來(lái)自定義3D啟動(dòng)器模型的顯示效果。主要是使用SpatialBoundingBox標(biāo)簽中的Center和extents屬性來(lái)指定模型相對(duì)于邊框盒中心的位置,以及邊框盒中心點(diǎn)到每個(gè)邊框在對(duì)應(yīng)軸上的距離,這里設(shè)置的屬性值單位都為米。
使用方法和引入3D啟動(dòng)器類似,首先引入命名空間:

在MixedRealityModel下添加SpatialBoundingBox標(biāo)簽,如下:

這樣配置后,我們的3D啟動(dòng)器的模型將會(huì)根據(jù)設(shè)置的自定義參數(shù)顯示在空間特定的位置上。
二級(jí)3D磁貼
UWP應(yīng)用具有一個(gè)可以創(chuàng)建二級(jí)磁貼的特性,可以生成快捷的二級(jí)磁貼入口,類似于快捷方式一般。對(duì)于HoloLens而言,現(xiàn)在我們也可以像創(chuàng)建2D二級(jí)磁貼一樣,使用代碼快捷的生成3D二級(jí)磁貼了,就像微軟的Holograms應(yīng)用一般,可以快捷的把全息模型放置到空間中。

同時(shí)3D二級(jí)磁貼還支持兩種激活模式:
1.??默認(rèn)激活:此模式下點(diǎn)擊3D二級(jí)磁貼則會(huì)立刻打開(kāi)應(yīng)用,進(jìn)入其應(yīng)用視圖。
2.??不激活:此模式下點(diǎn)擊選中3D磁貼不會(huì)觸發(fā)任何應(yīng)用,它就像一個(gè)普通的全息圖像一樣展示在空間中。
3D二級(jí)磁貼的使用方式和普通二級(jí)磁貼類似,只需要簡(jiǎn)單的調(diào)用系統(tǒng)API即可,如下:

其中需要注意的是,用作二級(jí)磁貼的3D模型只能是存放在應(yīng)用安裝目錄或者獨(dú)立存儲(chǔ)空間中的內(nèi)容,使用ms-appx或ms-appdata協(xié)議路勁引入。二級(jí)磁貼的邊框盒也可以直接使用代碼設(shè)置,其屬性和3D啟動(dòng)器一致。