HoloLens開發手記-實現3D應用啟動器
一直有人問我,第三方應用在HoloLens上可以實現3D啟動圖標嗎?就像微軟官方出的應用那樣。在不久之前,這個問題的答案還是No。
但是隨著最新的Windows build 1803版本的發布,現在我們可以創建3D啟動圖標了。
實現方法
要實現一個3D啟動器很簡單,三步走:
- 設計模型
- 優化和導出模型
- 集成到應用項目中
關於模型
對於MR應用,想要使用3D啟動器,那麽使用的模型格式必須為.glb,而且必須滿足微軟官方對模型面數和大小的要求。最簡單獲取glb模型的方式是使用Windows 10自帶的Paint 3D應用創建,導出模型文件默認就是glb格式。而且還可以利用微軟的Remix 3D網站,上面有大量的3D模型可以直接拿來在Paint 3D中使用。
關於具體的模型設計要求和優化要求,請直接參照官方文檔:https://docs.microsoft.com/zh-cn/windows/mixed-reality/creating-3d-models-for-use-in-the-windows-mixed-reality-home
模型集成
在有了模型文件後,下一步就是將它集成到項目中。繼承的方式很簡單,主要是修改UWP項目的配置文件package.appxmanifest.
首先修改命名空間部分,引入uap5的schema,這樣我們才可以用“MixedRealityModel”標簽來生命啟動模型定義:
<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" IgnorableNamespaces="uap uap2 uap5 mp" xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">
下一步修改默認圖標的定義:
<Applications> <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="ExampleApp.App"> <uap:VisualElements DisplayName="ExampleApp" Square150x150Logo="Assets\Logo.png" Square44x44Logo="Assets\SmallLogo.png" Description="ExampleApp" BackgroundColor="#464646"> <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" > <uap5:MixedRealityModel Path="Assets\My3DTile.glb" /> </uap:DefaultTile> <uap:SplashScreen Image="Assets\SplashScreen.png" /> </uap:VisualElements> </Application> </Applications>
這段示例代碼裏我指定了3D模型文件的路徑為“Assets\My3DTile.glb”,實際根據文件正確路徑填寫。
註意:模型文件導入項目後,build action行為要設置為內容(content),這樣才可以被正確識別到。
邊框盒子(Bounding Box)
如果我們不指定模型的邊框盒屬性的話,系統會默認生成一個。但是如果有特殊需求的話,可以手動指定邊框盒屬性,設置邊框盒代碼如下:
先引入邊框盒所在命名空間uap6
<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6" IgnorableNamespaces="uap uap2 uap5 uap6 mp" xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">
再修改邊框盒設置,可以設置模型中心位置,以及中心到每個軸的距離。
<uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" > <uap5:MixedRealityModel Path="Assets\My3DTile.glb"> <uap6:SpatialBoundingBox Center=”1,-2,3” Extents=”1,2,3” /> </uap5:MixedRealityModel> </uap:DefaultTile>
那麽快速實現3D應用啟動器就搞定了,下面是實際效果:
https://weibo.com/tv/v/GhxQJrMYw?fid=1034:940e672a7047303e11bc96edec7ee456
HoloLens開發手記-實現3D應用啟動器