3D アプリランチャーを実装する (UWP アプリ)Implement 3D app launchers (UWP apps)

注意

この機能は、イマーシブヘッドセット用の2017フォール作成者更新プログラム (RS3) の一部として追加されました。 HoloLens では、Windows 10 April 2018 更新プログラムがサポートされています。This feature was added as part of the 2017 Fall Creators Update (RS3) for immersive headsets and is supported by HoloLens with the Windows 10 April 2018 Update. アプリケーションが10.0.16299 のバージョンをターゲットにしていることを確認してください。これは Windows SDK、HoloLens でのイマーシブヘッドセットと10.0.17125 の以上である必要があります。Make sure your application is targeting a version of the Windows SDK greater than or equal to 10.0.16299 on immersive Headsets and 10.0.17125 on HoloLens. 最新の Windows SDK については、こちらを参照してください。You can find the latest Windows SDK here.

Windows Mixed Reality ホームは、アプリケーションを起動する前にユーザーが移動する開始点です。The Windows Mixed Reality home is the starting point where users land before launching applications. Windows Mixed Reality の UWP アプリケーションを作成する場合、既定では、アプリはアプリのロゴを使用して2D スレートとして起動されます。When creating a UWP application for Windows Mixed Reality, by default, apps are launched as 2D slates with their app's logo. Windows Mixed Reality のエクスペリエンスを開発するときに、必要に応じて3D ランチャーを定義して、アプリケーションの既定の2D ランチャーをオーバーライドできます。When developing experiences for Windows Mixed Reality, a 3D launcher can optionally be defined to override the default 2D launcher for your application. 一般に、Windows Mixed Reality ホームからユーザーを取得するイマーシブアプリケーションを起動するには、3D ランチャーを使用することをお勧めします。一方、アプリが適切にアクティブ化されている場合は、既定の2D ランチャーが優先されます。In general, 3D launchers are recommended for launching immersive applications that take users out of the Windows Mixed Reality home whereas the default 2D launcher is preferred when the app is activated in place. 3d ディープリンク (secondaryTile)は、2d UWP アプリ内のコンテンツへの3d ランチャーとして作成することもできます。You can also create a 3D deep link (secondaryTile) as a 3D launcher to content within a 2D UWP app.

3D アプリランチャー作成プロセス3D app launcher creation process

3D アプリランチャーを作成するには、次の3つの手順を実行します。There are 3 steps to creating a 3D app launcher:

  1. 設計と conceptingDesigning and concepting
  2. モデリングとエクスポートModeling and exporting
  3. アプリケーションへの統合 (この記事)Integrating it into your application (this article)

アプリケーションのランチャーとして使用する3D アセットは、互換性を確保するために、 Windows Mixed Reality オーサリングガイドラインを使用して作成する必要があります。3D assets to be used as launchers for your application should be authored using the Windows Mixed Reality authoring guidelines to ensure compatibility. このオーサリング仕様に合わなかった資産は、Windows Mixed Reality ホームではレンダリングされません。Assets that fail to meet this authoring specification will not be rendered in the Windows Mixed Reality home.

3D ランチャーの構成Configuring the 3D launcher

Visual Studio で新しいプロジェクトを作成すると、アプリの名前とロゴを表示する単純な既定のタイルが作成されます。When you create a new project in Visual Studio, it creates a simple default tile that displays your app's name and logo. この2D 表現をカスタム3D モデルに置き換えるには、アプリケーションのアプリケーションマニフェストを編集して、既定のタイル定義の一部として "MixedRealityModel" 要素を追加します。To replace this 2D representation with a custom 3D model edit the app manifest of your application to include the “MixedRealityModel” element as part of your default tile definition. 2D ランチャーに戻すには、マニフェストから MixedRealityModel 定義を削除するだけです。To revert to the 2D launcher just remove the MixedRealityModel definition from the manifest.

XMLXML

最初に、現在のプロジェクトでアプリケーションパッケージマニフェストを見つけます。First, locate the app package manifest in your current project. 既定では、マニフェストには package.appxmanifest という名前が付けられます。By default, the manifest will be named Package.appxmanifest. Visual Studio を使用している場合は、ソリューションビューアーでマニフェストを右クリックし、 [ソースの表示] を選択して編集用の xml を開きます。If you're using Visual Studio, then right-click the manifest in your solution viewer and select View source to open the xml for editing.

マニフェストの先頭に、uap5 スキーマを追加し、それを ignorable 名前空間として含めます。At the top of the manifest, add the uap5 schema and include it as an ignorable namespace:

<Package xmlns:mp="https://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="https://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="https://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="https://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         IgnorableNamespaces="uap uap2 uap5 mp"
         xmlns="https://schemas.microsoft.com/appx/manifest/foundation/windows10">

次に、アプリケーションの既定のタイルで "MixedRealityModel" を指定します。Next specify the "MixedRealityModel" in the default tile for your application:

<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 アセットを指すファイルパスを受け入れます。The MixedRealityModel elements accepts a file path pointing to a 3D asset stored in your app package. 現時点では、glb ファイル形式を使用して配信され、 Windows Mixed Reality 3d アセットオーサリング手順に対して作成された3d モデルのみがサポートされています。Currently only 3D models delivered using the .glb file format and authored against the Windows Mixed Reality 3D asset authoring instructions are supported. アセットはアプリパッケージに保存する必要があり、アニメーションは現在サポートされていません。Assets must be stored in the app package and animation is not currently supported. "Path" パラメーターが空のままの場合、ウィンドウには3D ランチャーではなく2D スレートが表示されます。If the “Path” parameter is left blank Windows will show the 2D slate instead of the 3D launcher. 注: glb 資産は、アプリをビルドして実行する前に、ビルド設定で "コンテンツ" としてマークする必要があります。Note: the .glb asset must be marked as "Content" in your build settings before building and running your app.

ソリューションエクスプローラーで glb を選択し、[プロパティ] セクションを使用して、ビルド設定で "コンテンツ" としてマークし](images/buildsetting-content-300px.png) ![Select the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings
ソリューションエクスプローラーで. glb を選択し、[プロパティ] セクションを使用して、ビルド設定で "コンテンツ" としてマークします。Select the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings

境界ボックスBounding box

境界ボックスを使用すると、必要に応じて、オブジェクトの周囲に追加のバッファー領域を追加できます。A bounding box can be used to optionally add an additional buffer region around the object. 境界ボックスは、中心点と範囲を使用して指定します。これは、境界ボックスの中心から各軸に沿った端までの距離を示します。The bounding box is specified using a center point and extents which indicate the distance from the center of the bounding box to its edges along each axis. 境界ボックスの単位は、1ユニット = 1 メーターにマップできます。Units for the bounding box can be mapped to 1 unit = 1 meter. 境界ボックスが指定されていない場合は、オブジェクトのメッシュに自動的に収まるようになります。If a bounding box is not provided then one will be automatically fitted to the mesh of the object. 指定された境界ボックスがモデルより小さい場合、メッシュに合わせてサイズが変更されます。If the provided bounding box is smaller than the model then it will be resized to fit the mesh.

境界ボックス属性のサポートには、MixedRealityModel 要素のプロパティとして Windows RS4 update が使用されます。Support for the bounding box attribute will come with the Windows RS4 update as a property on the MixedRealityModel element. 最初にアプリケーションマニフェストの最上部にある境界ボックスを定義するには、uap6 スキーマを追加し、それを無視できる名前空間として含めます。To define a bounding box first at the top of the app manifest add the uap6 schema and include it them as ignorable namespaces:

<Package xmlns:mp="https://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="https://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="https://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="https://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         xmlns:uap6="https://schemas.microsoft.com/appx/manifest/uap/windows10/6"
         IgnorableNamespaces="uap uap2 uap5 uap6 mp"
         xmlns="https://schemas.microsoft.com/appx/manifest/foundation/windows10">

次に、MixedRealityModel で、SpatialBoundingBox プロパティを設定して境界ボックスを定義します。Next, on the MixedRealityModel set the SpatialBoundingBox property to define the bounding box:

        <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 の使用Using Unity

Unity を使用する場合は、アプリケーションマニフェストを編集する前に、Visual Studio でプロジェクトをビルドして開く必要があります。When working with Unity the project must be built and opened in Visual Studio before the App Manifest can be edited.

注意

新しい Visual Studio ソリューションをビルドして Unity からデプロイするときに、マニフェストで3D ランチャーを再定義する必要があります。The 3D launcher must be redefined in the manifest when building and deploying a new Visual Studio solution from Unity.

注意

この機能は、2017秋の RS3 (イマーシブ) のヘッドセット用に、年 4 2018 月の更新プログラム (RS4) の一部として追加されました。This feature was added as part of the 2017 Fall Creators Update (RS3) for immersive (VR) headsets and as part of the April 2018 Update (RS4) for HoloLens. アプリケーションで Windows SDK のバージョンが対象になっていることを確認します。これは、HoloLens の 10.0.16299 on イマーシブ (VR) ヘッドセットと10.0.17125 以上である必要があります。Make sure your application is targeting a version of the Windows SDK greater than or equal to 10.0.16299 on immersive (VR) headsets and 10.0.17125 on HoloLens. 最新の Windows SDK については、こちらを参照してください。You can find the latest Windows SDK here.

重要

3D ディープリンク (secondaryTiles) は、2D UWP アプリでのみ機能します。3D deep links (secondaryTiles) only work with 2D UWP apps. ただし、Windows Mixed Reality ホームから排他的なアプリを起動するための3d アプリランチャーを作成できます。You can, however, create a 3D app launcher to launch an exclusive app from the Windows Mixed Reality home.

Windows の [開始] の2d セカンダリタイルと同じように、アプリからwindows mixed Reality ホームに3d モデルを追加して、2d アプリ内のコンテンツへのディープリンクとして使用できるようにすることで、windows Mixed reality 向けに2d アプリケーションを拡張できます。メニュー.Your 2D applications can be enhanced for Windows Mixed Reality by adding the ability to place 3D models from your app into the Windows Mixed Reality home as deep links to content within your 2D app, just like 2D secondary tiles on the Windows Start menu. たとえば、360°フォトビューアーアプリに直接リンクする360°の球体を作成したり、ユーザーが資産のコレクションから3D コンテンツを配置して、作成者に関する詳細ページを開いたりすることができます。For example, you can create 360° photospheres that link directly into a 360° photo viewer app, or let users place 3D content from a collection of assets that opens a details page about the author. 3D コンテンツを使用して2D アプリケーションの機能を拡張するには、次の2つの方法があります。These are just a couple ways to expand the functionality of your 2D application with 3D content.

3D "secondaryTile" の作成Creating a 3D “secondaryTile”

作成時に mixed reality モデルを定義することで、"secondaryTiles" を使用してアプリケーションの3D コンテンツを配置できます。You can place 3D content from your application using “secondaryTiles” by defining a mixed reality model at creation time. 混合現実モデルは、アプリケーションパッケージ内の3D アセットを参照し、必要に応じて境界ボックスを定義することによって作成されます。Mixed reality models are created by referencing a 3D asset in your app package and optionally defining a bounding box.

注意

排他ビュー内から "secondaryTiles" を作成することは現在サポートされていません。Creating “secondaryTiles” from within an exclusive view is not currently supported.

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();

境界ボックスBounding box

境界ボックスを使用すると、オブジェクトの周囲に追加のバッファー領域を追加できます。A bounding box can be used to add an additional buffer region around the object. 境界ボックスは、中心点と範囲を使用して指定します。これは、境界ボックスの中心から各軸に沿った端までの距離を示します。The bounding box is specified using a center point and extents which indicate the distance from the center of the bounding box to its edges along each axis. 境界ボックスの単位は、1ユニット = 1 メーターにマップできます。Units for the bounding box can be mapped to 1 unit = 1 meter. 境界ボックスが指定されていない場合は、オブジェクトのメッシュに自動的に収まるようになります。If a bounding box is not provided then one will be automatically fitted to the mesh of the object. 指定された境界ボックスがモデルより小さい場合、メッシュに合わせてサイズが変更されます。If the provided bounding box is smaller than the model then it will be resized to fit the mesh.

アクティベーションの動作Activation behavior

注意

この機能は、Windows RS4 update でサポートされる予定です。This feature will be supported as of the Windows RS4 update. この機能を使用する予定がある場合は Windows SDK、アプリケーションが10.0.17125 以上のバージョンを対象としていることを確認してください。Make sure your application is targeting a version of the Windows SDK greater than or equal to 10.0.17125 if you plan to use this feature

3D secondaryTile のアクティベーション動作を定義して、ユーザーがそれを選択したときの反応を制御できます。You can define the activation behavior for a 3D secondaryTile to control how it reacts when a user selects it. これを使用すると、純粋な情報または装飾のある混合現実ホームに3D オブジェクトを配置できます。This can be used to place 3D objects in the Mixed Reality home that are purely informative or decorative. 次のアクティブ化動作の種類がサポートされています。The following activation behavior types are supported:

  1. 既定: ユーザーが 3D secondaryTile を選択すると、アプリがアクティブ化されますDefault: When a user selects the 3D secondaryTile the app is activated
  2. None: ユーザーが 3D secondaryTile を選択しても何も起こりません。アプリはアクティブ化されません。None: When the users selects the 3D secondaryTile nothing happens and the app is not activated.

既存の "secondaryTile" の取得と更新Obtaining and updating an existing “secondaryTile”

開発者は、既存のセカンダリタイルの一覧を取得できます。これには、前に指定したプロパティが含まれます。Developers can get back a list of their existing secondary tiles, which includes the properties that they previously specified. また、値を変更し、UpdateAsync () を呼び出すことによって、プロパティを更新することもできます。They can also update the properties by changing the value and then calling 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 であることを確認していますChecking that the user is in Windows Mixed Reality

3D ディープリンク (secondaryTiles) は、ビューが Windows Mixed Reality ヘッドセットに表示されている場合にのみ作成できます。3D deep links (secondaryTiles) can only be created while the view is being displayed in a Windows Mixed Reality headset. Windows Mixed Reality ヘッドセットにビューが表示されない場合は、エントリポイントを非表示にするか、エラーメッセージを表示することで、これを適切に処理することをお勧めします。When your view isn't being presented in a Windows Mixed Reality headset we recommend gracefully handling this by either hiding the entry point or showing an error message. これを確認するには、 IsCurrentViewPresentedOnHolographic ()に対してクエリを実行します。You can check this by querying IsCurrentViewPresentedOnHolographic().

タイル通知Tile notifications

タイルの通知では、3D アセットを使用した更新の送信は現在サポートされていません。Tile notifications do not currently support sending an update with a 3D asset. これは、開発者が次のことを行うことができないことを意味します。This means that developers will not be able to do the following

  • プッシュ通知Push Notifications
  • 定期的なポーリングPeriodic Polling
  • スケジュールされた通知Scheduled Notifications

その他のタイルの特徴と属性、およびそれらを2D タイルに使用する方法の詳細については、 UWP アプリのドキュメントのタイルを参照してください。For more information on the other tiles features and attributes and how they are used for 2D tiles refer to the Tiles for UWP Apps documentation.

関連項目See also