實作 3D 應用程式啟動器 (UWP 應用程式)

注意

這項功能已新增為 2017 年 4 月更新的 2017 年 4 月更新 (RS3) ,且 HoloLen Windows 10 s 支援 2018 年 4 月更新。 請確定您的應用程式是以 HoloLens 上的 Windows SDK 版本大於或等於 10.0.16299 和 HoloLens 上的 10.0.17125 為目標。 您可以 在這裡找到最新的 Windows SDK。

Windows Mixed Reality首頁是使用者啟動應用程式之前登陸的起點。 建立適用于 Windows Mixed Reality 的 UWP 應用程式時,根據預設,應用程式會以 2D slate 的形式啟動其應用程式標誌。 開發Windows Mixed Reality體驗時,可以選擇性地定義 3D 啟動器來覆寫應用程式的預設 2D 啟動器。 一般而言,建議使用 3D 啟動器來啟動沉浸式應用程式,讓使用者離開Windows Mixed Reality家。 當應用程式就地啟動時,最好使用預設的 2D 啟動器。 您也可以建立 3D 深層連結 (secondaryTile) 做為 2D UWP app 內內容的 3D 啟動器。

3D 應用程式啟動器建立程式

建立 3D 應用程式啟動器有三個步驟:

  1. 設計和概念
  2. 模型化和匯出
  3. 將它整合到您的應用程式 (本文)

應使用Windows Mixed Reality撰寫指導方針來撰寫要作為應用程式啟動器的 3D 資產,以確保相容性。 不符合此撰寫規格的資產將不會在Windows Mixed Reality家轉譯。

設定 3D 啟動器

在 Visual Studio 中建立新的專案時,它會建立一個顯示 app 名稱和標誌的簡單預設磚。 若要將此 2D 標記法取代為自訂 3D 模型,請編輯應用程式的應用程式資訊清單,以在預設磚定義中包含 「MixedRealityModel」 元素。 若要還原為 2D 啟動器,只要從資訊清單中移除 MixedRealityModel 定義即可。

XML

首先,在您的目前專案中找出應用程式套件資訊清單。 根據預設,資訊清單會命名為 Package.appxmanifest。 如果您使用 Visual Studio,請以滑鼠右鍵按一下方案檢視器中的資訊清單,然後選取 [ 檢視來源 ] 以開啟 xml 進行編輯。

在資訊清單頂端,新增 uap5 架構,並將其納入為可忽略的命名空間:

<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">

接下來,在應用程式的預設磚中指定 「MixedRealityModel」 :

<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>

MixedRealityModel 元素接受指向儲存在應用程式套件中的 3D 資產的檔案路徑。 目前僅支援使用 .glb 檔案格式傳遞的 3D 模型,並針對Windows Mixed Reality 3D 資產撰寫指示進行撰寫。 資產必須儲存在應用程式套件中,目前不支援動畫。 如果 「Path」 參數保留空白的 Windows 會顯示 2D 平板,而不是 3D 啟動器。 注意: 在建置和執行應用程式之前,.glb 資產必須在組建設定中標示為「內容」。

在方案總管中選取 .glb,並使用 [屬性] 區段將它標示為組建設定中的 [內容]
在方案總管中選取 .glb,並使用 [屬性] 區段將它標示為組建設定中的 [內容]

週框方塊

周框方塊可用來選擇性地在 物件周圍新增額外的緩衝區區域。 周框方塊是使用中心點和範圍來指定,表示周框方塊的中心與每個座標軸邊緣之間的距離。 周框方塊的單位可以對應至 1 單位 = 1 公尺。 如果未提供周框方塊,則會自動將一個方塊套用至物件的網格。 如果提供的周框方塊小於模型,則會調整大小以符合網格。

支援周框方塊屬性將會隨附 Windows RS4 更新作為 MixedRealityModel 元素上的屬性。 若要先在應用程式資訊清單頂端定義周框方塊,請新增 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">

接下來,在 MixedRealityModel 上設定 SpatialBoundingBox 屬性來定義周框方塊:

        <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>

使用 Unity

使用 Unity 時,必須先在 Visual Studio 中建置並開啟專案,才能編輯應用程式資訊清單。

注意

從 Unity 建置和部署新的 Visual Studio 解決方案時,必須在資訊清單中重新定義 3D 啟動器。

注意

這項功能已新增為 2017 年 Fall Creators Update (RS3) ,適用于沉浸式 (VR) 頭戴式裝置,以及 HoloLens 的 2018 年 4 月更新 (RS4) 的一部分。 請確定您的應用程式是以 HoloLens 上沉浸式 () 頭戴式裝置和 10.0.17125 上 10.0.16299 的 Windows SDK 版本為目標。 您可以 在這裡找到最新的 Windows SDK。

重要

3D 深層連結 (secondaryTiles) 僅適用于 2D UWP 應用程式。 不過,您可以建立3D 應用程式啟動器,從Windows Mixed Reality家啟動獨佔應用程式。

2D 應用程式可以藉由將 3D 模型從您的應用程式新增至Windows Mixed Reality首頁的功能,藉此增強Windows Mixed Reality,就像 Windows [開始] 功能表上的 2D 次要磚一樣。 例如,您可以建立 360° 相片球,直接連結至 360° 相片檢視器應用程式,或讓使用者從資產集合放置 3D 內容,以開啟作者的詳細資料頁面。 這些只是使用 3D 內容擴充 2D 應用程式功能的幾種方式。

建立 3D 「secondaryTile」

您可以在建立時定義混合實境模型,以使用 「secondaryTiles」 從您的應用程式放置 3D 內容。 混合實境模型是藉由參考應用程式套件中的 3D 資產,並選擇性地定義周框方塊來建立。

注意

目前不支援從獨佔檢視內建立 「secondaryTiles」。

using Windows.UI.StartScreen;
using Windows.Foundation.Numerics;
using Windows.Perception.Spatial;

// Initialize the tile
SecondaryTile tile = new SecondaryTile("myTileId")
{
    DisplayName = "My Tile",
    Arguments = "myArgs"
};

tile.VisualElements.Square150x150Logo = new Uri("ms-appx:///Assets/MyTile/Square150x150Logo.png");

//Assign 3D model (only ms-appx and ms-appdata are allowed)
TileMixedRealityModel model = tile.VisualElements.MixedRealityModel;
model.Uri = new Uri("ms-appx:///Assets/MyTile/MixedRealityModel.glb");
model.ActivationBehavior = TileMixedRealityModelActivationBehavior.Default;
model.BoundingBox = new SpatialBoundingBox
{
    Center = new Vector3 { X = 1, Y = 0, Z = 0 },
    Extents = new Vector3 { X = 3, Y = 5, Z = 4 }
};

// And place it
await tile.RequestCreateAsync();

週框方塊

周框方塊可用來在 物件周圍新增額外的緩衝區區域。 周框方塊是使用中心點和範圍來指定,表示周框方塊的中心與每個座標軸邊緣之間的距離。 周框方塊的單位可以對應至 1 單位 = 1 公尺。 如果未提供周框方塊,系統會自動調整物件網格。 如果提供的周框方塊小於模型,則會調整大小以符合網格。

啟用行為

注意

在 Windows RS4 更新期間,將支援這項功能。 如果您打算使用此功能,請確定您的應用程式是以大於或等於 10.0.17125 的 Windows SDK 版本為目標

您可以定義 3D secondaryTile 的啟用行為,以控制使用者選取時回應的方式。 這可以用來將 3D 物件放在純資訊或裝飾性的Mixed Reality家中。 支援下列啟用行為類型:

  1. 預設值:當使用者選取 3D secondaryTile 時,應用程式會啟動
  2. 無:當使用者選取 3D secondaryTile 時,不會發生任何情況,且不會啟用應用程式。

取得和更新現有的 「secondaryTile」

開發人員可以返回其現有次要磚的清單,其中包含先前指定的屬性。 它們也可以藉由變更值,然後呼叫 UpdateAsync () 來更新屬性。

// Grab the existing secondary tile
SecondaryTile tile = (await SecondaryTile.FindAllAsync()).First();

Uri updatedUri = new Uri("ms-appdata:///local/MixedRealityUpdated.glb");

// See if the model needs updating
if (!tile.VisualElements.MixedRealityModel.Uri.Equals(updatedUri))
{
    // Update it
    tile.VisualElements.MixedRealityModel.Uri = updatedUri;

    // And apply the changes
    await tile.UpdateAsync();
}

檢查使用者是否在 Windows Mixed Reality

3D 深層連結 (secondaryTiles) 只能在檢視顯示在Windows Mixed Reality頭戴式裝置時建立。 當您的檢視未顯示在Windows Mixed Reality頭戴式裝置時,建議您藉由隱藏進入點或顯示錯誤訊息,以正常處理此問題。 您可以查詢 IsCurrentViewPresentedOnHolographic () 來檢查此問題。

磚通知

磚通知目前不支援使用 3D 資產傳送更新。 這表示開發人員無法執行下列動作:

  • 推播通知
  • 定期輪詢
  • 排程通知

如需其他磚功能和屬性以及如何用於 2D 磚的詳細資訊,請參閱 UWP Apps 磚檔

另請參閱