Implementare utilità di avvio per app 3D (app UWP)Implement 3D app launchers (UWP apps)

Nota

Questa funzionalità è stata aggiunta come parte di 2017 Fall Creators Update (RS3) per gli auricolari immersivi ed è supportata da HoloLens con l'aggiornamento di Windows 10 aprile 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. Assicurarsi che l'applicazione sia destinata a una versione del Windows SDK maggiore o uguale a) 10.0.16299 su auricolari immersivi e 10.0.17125 su HoloLens.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. È possibile trovare la Windows SDK più recente qui.You can find the latest Windows SDK here.

La Home realtà mista di Windows è il punto di partenza in cui gli utenti atterrano prima di avviare le applicazioni.The Windows Mixed Reality home is the starting point where users land before launching applications. Quando si crea un'applicazione UWP per la realtà mista di Windows, per impostazione predefinita le app vengono avviate come lavagne 2D con il logo dell'app.When creating a UWP application for Windows Mixed Reality, by default, apps are launched as 2D slates with their app's logo. Quando si sviluppano esperienze per la realtà mista di Windows, è possibile definire facoltativamente un utilità di avvio 3D per eseguire l'override dell'utilità di avvio 2D predefinita per l'applicazione.When developing experiences for Windows Mixed Reality, a 3D launcher can optionally be defined to override the default 2D launcher for your application. In generale, i programmi di avvio 3D sono consigliati per l'avvio di applicazioni immersive che riportano gli utenti fuori dalla Home realtà mista di Windows.In general, 3D launchers are recommended for launching immersive applications that take users out of the Windows Mixed Reality home. Quando l'app viene attivata sul posto, è preferibile l'utilità di avvio 2D predefinita.The default 2D launcher is preferred when the app is activated in place. È anche possibile creare un collegamento Deep 3D (SecondaryTile) come avvio 3D al contenuto all'interno di un'app UWP 2D.You can also create a 3D deep link (secondaryTile) as a 3D launcher to content within a 2D UWP app.

processo di creazione dell'utilità di avvio delle app 3D3D app launcher creation process

Per la creazione di un avvio di app 3D sono disponibili tre passaggi:There are three steps to creating a 3D app launcher:

  1. Progettazione e concezioneDesigning and concepting
  2. Modellazione ed esportazioneModeling and exporting
  3. Integrazione nell'applicazione (questo articolo)Integrating it into your application (this article)

gli asset 3D da usare come avvii per l'applicazione devono essere creati usando le linee guida per la creazione di realtà miste di Windows per garantire la compatibilità.3D assets to be used as launchers for your application should be authored using the Windows Mixed Reality authoring guidelines to ensure compatibility. Non verrà eseguito il rendering degli asset che non soddisfano questa specifica di authoring nella Home page della realtà mista di Windows.Assets that fail to meet this authoring specification won't be rendered in the Windows Mixed Reality home.

Configurazione dell'utilità di avvio 3DConfiguring the 3D launcher

Quando crei un nuovo progetto in Visual Studio, viene creato un riquadro predefinito semplice che visualizza il nome e il logo dell'app.When you create a new project in Visual Studio, it creates a simple default tile that displays your app's name and logo. Per sostituire questa rappresentazione 2D con un modello 3D personalizzato, modificare il manifesto dell'applicazione per includere l'elemento "MixedRealityModel" come parte della definizione del riquadro predefinito.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. Per ripristinare l'utilità di avvio 2D, è sufficiente rimuovere la definizione MixedRealityModel dal manifesto.To revert to the 2D launcher just remove the MixedRealityModel definition from the manifest.

XMLXML

Per prima cosa, individuare il manifesto del pacchetto dell'applicazione nel progetto corrente.First, locate the app package manifest in your current project. Per impostazione predefinita, il manifesto verrà denominato Package. appxmanifest.By default, the manifest will be named Package.appxmanifest. Se si usa Visual Studio, fare clic con il pulsante destro del mouse sul manifesto nel Visualizzatore della soluzione e selezionare Visualizza origine per aprire il file XML per la modifica.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.

Nella parte superiore del manifesto aggiungere lo schema uap5 e includerlo come spazio dei nomi ignorabile:At the top of the manifest, add the uap5 schema and include it as an ignorable namespace:

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

Specificare quindi "MixedRealityModel" nel riquadro predefinito per l'applicazione: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>

L'elemento MixedRealityModel accetta un percorso di file che punta a un asset 3D archiviato nel pacchetto dell'app.The MixedRealityModel element accepts a file path pointing to a 3D asset stored in your app package. Attualmente sono supportati solo i modelli 3D distribuiti usando il formato di file. glb e creati in base alle istruzioni per la creazione di asset 3D con la realtà mista di Windows .Currently only 3D models delivered using the .glb file format and authored against the Windows Mixed Reality 3D asset authoring instructions are supported. Gli asset devono essere archiviati nel pacchetto dell'app e l'animazione non è attualmente supportata.Assets must be stored in the app package and animation isn't currently supported. Se il parametro "Path" viene lasciato vuoto, Windows visualizzerà lo Slate 2D anziché l'utilità di avvio 3D.If the “Path” parameter is left blank Windows will show the 2D slate instead of the 3D launcher. Nota: l'asset. GLB deve essere contrassegnato come "contenuto" nelle impostazioni di compilazione prima di compilare ed eseguire l'app.Note: the .glb asset must be marked as "Content" in your build settings before building and running your app.

Selezionare il GLB in Esplora soluzioni e usare la sezione proprietà per contrassegnarlo come "contenuto" nelle impostazioni di compilazioneSelect the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings
Selezionare il GLB in Esplora soluzioni e usare la sezione proprietà per contrassegnarlo come "contenuto" nelle impostazioni di compilazioneSelect the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings

Rettangolo di selezioneBounding box

Un rettangolo di delimitazione può essere usato per aggiungere facoltativamente un'area del buffer aggiuntiva intorno all'oggetto.A bounding box can be used to optionally add an extra buffer region around the object. Il rettangolo di delimitazione viene specificato utilizzando un punto centrale ed extent, che indicano la distanza tra il centro del rettangolo di delimitazione e i relativi bordi lungo ogni asse.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. È possibile eseguire il mapping delle unità per il rettangolo di delimitazione a 1 unità = 1 contatore.Units for the bounding box can be mapped to 1 unit = 1 meter. Se non viene fornito un rettangolo di delimitazione, ne verrà automaticamente inserito uno nella mesh dell'oggetto.If a bounding box isn't provided, then one will be automatically fitted to the mesh of the object. Se il rettangolo di delimitazione specificato è inferiore a quello del modello, verrà ridimensionato per adattarsi alla rete.If the provided bounding box is smaller than the model, then it will be resized to fit the mesh.

Il supporto per l'attributo del rettangolo delimitatore verrà con l'aggiornamento di Windows RS4 come proprietà nell'elemento MixedRealityModel.Support for the bounding box attribute will come with the Windows RS4 update as a property on the MixedRealityModel element. Per definire innanzitutto un rettangolo di delimitazione nella parte superiore del manifesto dell'applicazione, aggiungere lo schema uap6 e includerlo come spazi dei nomi ignorabili:To define a bounding box first at the top of the app manifest add the uap6 schema and include it as ignorable namespaces:

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

Quindi, in MixedRealityModel impostare la proprietà SpatialBoundingBox per definire il rettangolo di delimitazione: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>

Uso di UnityUsing Unity

Quando si lavora con Unity, il progetto deve essere compilato e aperto in Visual Studio prima di poter modificare il manifesto dell'applicazione.When working with Unity the project must be built and opened in Visual Studio before the App Manifest can be edited.

Nota

Quando si compila e si distribuisce una nuova soluzione di Visual Studio da Unity, è necessario ridefinire l'utilità di avvio 3D nel manifesto.The 3D launcher must be redefined in the manifest when building and deploying a new Visual Studio solution from Unity.

Nota

Questa funzionalità è stata aggiunta come parte di 2017 Fall Creators Update (RS3) per auricolari immersivi (VR) e come parte dell'aggiornamento del 2018 aprile (RS4) per HoloLens.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. Assicurarsi che l'applicazione sia destinata a una versione del Windows SDK maggiore o uguale a) 10.0.16299 sugli auricolari immersivi (VR) e 10.0.17125 in HoloLens.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. È possibile trovare la Windows SDK più recente qui.You can find the latest Windows SDK here.

Importante

i collegamenti profondi 3D (secondaryTiles) funzionano solo con le app UWP 2D.3D deep links (secondaryTiles) only work with 2D UWP apps. È tuttavia possibile creare un utilità di avvio delle app 3D per avviare un'app esclusiva dalla Home realtà mista di Windows.You can, however, create a 3D app launcher to launch an exclusive app from the Windows Mixed Reality home.

Le applicazioni 2D possono essere migliorate per la realtà mista di Windows aggiungendo la possibilità di inserire modelli 3D dall'app nella Home realtà mista di Windows come collegamenti profondi al contenuto all'interno dell'app 2D, proprio come i riquadri secondari 2D nel menu Start di Windows.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. Ad esempio, è possibile creare fotosfere 360 ° che si collegano direttamente a un'app del Visualizzatore foto di 360 ° o consentire agli utenti di inserire contenuto 3D da una raccolta di asset che apre una pagina di dettagli sull'autore.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. Si tratta solo di un paio di modi per espandere la funzionalità dell'applicazione 2D con contenuto 3D.These are just a couple ways to expand the functionality of your 2D application with 3D content.

Creazione di un "secondaryTile" 3DCreating a 3D “secondaryTile”

È possibile inserire contenuto 3D dall'applicazione usando "secondaryTiles" definendo un modello di realtà mista al momento della creazione.You can place 3D content from your application using “secondaryTiles” by defining a mixed reality model at creation time. I modelli di realtà mista vengono creati facendo riferimento a un asset 3D nel pacchetto dell'app e, facoltativamente, definendo un rettangolo di delimitazione.Mixed reality models are created by referencing a 3D asset in your app package and optionally defining a bounding box.

Nota

La creazione di "secondaryTiles" dall'interno di una vista esclusiva non è attualmente supportata.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();

Rettangolo di selezioneBounding box

È possibile utilizzare un rettangolo di delimitazione per aggiungere un'area del buffer aggiuntiva intorno all'oggetto.A bounding box can be used to add an extra buffer region around the object. Il rettangolo di delimitazione viene specificato utilizzando un punto centrale ed extent, che indicano la distanza tra il centro del rettangolo di delimitazione e i relativi bordi lungo ogni asse.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. È possibile eseguire il mapping delle unità per il rettangolo di delimitazione a 1 unità = 1 contatore.Units for the bounding box can be mapped to 1 unit = 1 meter. Se non viene specificato un rettangolo di delimitazione, ne verrà automaticamente inserito uno nella mesh dell'oggetto.If a bounding box isn't provided, one will be automatically fitted to the mesh of the object. Se il rettangolo di delimitazione specificato è inferiore a quello del modello, verrà ridimensionato per adattarsi alla rete.If the provided bounding box is smaller than the model, it will be resized to fit the mesh.

Comportamento di attivazioneActivation behavior

Nota

Questa funzionalità sarà supportata a partire dall'aggiornamento di Windows RS4.This feature will be supported as of the Windows RS4 update. Se si prevede di usare questa funzionalità, assicurarsi che l'applicazione sia destinata a una versione del Windows SDK maggiore o uguale a 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

È possibile definire il comportamento di attivazione di un secondaryTile 3D per controllare il modo in cui viene reagisce quando viene selezionato da un utente.You can define the activation behavior for a 3D secondaryTile to control how it reacts when a user selects it. Questo può essere usato per inserire gli oggetti 3D nella Home realtà mista che sono puramente informativi o decorativi.This can be used to place 3D objects in the Mixed Reality home that are purely informative or decorative. Sono supportati i tipi di comportamento di attivazione seguenti:The following activation behavior types are supported:

  1. Impostazione predefinita: quando un utente seleziona il secondaryTile 3D, l'app viene attivataDefault: When a user selects the 3D secondaryTile the app is activated
  2. None: quando l'utente seleziona il secondaryTile 3D, non viene eseguita alcuna operazione e l'app non viene attivata.None: When the user selects the 3D secondaryTile nothing happens and the app isn't activated.

Acquisizione e aggiornamento di un "secondaryTile" esistenteObtaining and updating an existing “secondaryTile”

Gli sviluppatori possono ottenere un elenco dei riquadri secondari esistenti, che include le proprietà specificate in precedenza.Developers can get back a list of their existing secondary tiles, which includes the properties that they previously specified. Possono anche aggiornare le proprietà modificando il valore e quindi chiamando 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();
}

Verifica per verificare se l'utente si trova in una realtà mista di WindowsChecking that the user is in Windows Mixed Reality

i collegamenti profondi 3D (secondaryTiles) possono essere creati solo quando la visualizzazione viene visualizzata in un auricolare di realtà mista di Windows.3D deep links (secondaryTiles) can only be created while the view is being displayed in a Windows Mixed Reality headset. Quando la visualizzazione non viene presentata in una serie di cuffie per la realtà mista di Windows, è consigliabile gestirla in modo appropriato nascondendo il punto di ingresso o mostrando un messaggio di errore.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. È possibile eseguire questa verifica eseguendo una query su IsCurrentViewPresentedOnHolographic ().You can check this by querying IsCurrentViewPresentedOnHolographic().

Notifiche del riquadroTile notifications

Le notifiche dei riquadri attualmente non supportano l'invio di un aggiornamento con un asset 3D.Tile notifications don't currently support sending an update with a 3D asset. Ciò significa che gli sviluppatori non possono eseguire le operazioni seguenti:This means that developers can't do the following:

  • Notifiche pushPush Notifications
  • Polling periodicoPeriodic Polling
  • Notifiche pianificateScheduled Notifications

Per altre informazioni sulle funzionalità e sugli attributi di altri riquadri e su come vengono usati per i riquadri 2D, vedere la documentazione relativa ai riquadri per le app UWP.For more information on the other tiles features and attributes and how they're used for 2D tiles, see the Tiles for UWP Apps documentation.

Vedere ancheSee also