Implementar inicializadores de aplicativos 3D (aplicativos UWP)Implement 3D app launchers (UWP apps)

Observação

Esse recurso foi adicionado como parte da RS3 (atualização para criadores de outono do 2017) para headsets de imersão e tem suporte do HoloLens com a atualização do Windows 10 de abril de 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. Verifique se seu aplicativo está direcionando para uma versão do SDK do Windows maior ou igual a 10.0.16299 em headsets de imersão e 10.0.17125 no 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. Você pode encontrar as SDK do Windows mais recentes aqui.You can find the latest Windows SDK here.

O Windows Mixed Reality Home é o ponto de partida onde os usuários vão antes de iniciar os aplicativos.The Windows Mixed Reality home is the starting point where users land before launching applications. Ao criar um aplicativo UWP para a realidade mista do Windows, por padrão, os aplicativos são iniciados como slates 2D com o logotipo do aplicativo.When creating a UWP application for Windows Mixed Reality, by default, apps are launched as 2D slates with their app's logo. Ao desenvolver experiências para a realidade mista do Windows, um iniciador 3D pode, opcionalmente, ser definido para substituir o inicializador 2D padrão para seu aplicativo.When developing experiences for Windows Mixed Reality, a 3D launcher can optionally be defined to override the default 2D launcher for your application. Em geral, os iniciadores 3D são recomendados para iniciar aplicativos de imersão que levam os usuários da casa do Windows Mixed Reality.In general, 3D launchers are recommended for launching immersive applications that take users out of the Windows Mixed Reality home. O inicializador 2D padrão é preferencial quando o aplicativo é ativado no local.The default 2D launcher is preferred when the app is activated in place. Você também pode criar um link de 3D Deep (secondaryTile) como um iniciador 3D para o conteúdo em um aplicativo UWP 2D.You can also create a 3D deep link (secondaryTile) as a 3D launcher to content within a 2D UWP app.

processo de criação do inicializador de aplicativo 3D3D app launcher creation process

Há três etapas para criar um iniciador de aplicativo 3D:There are three steps to creating a 3D app launcher:

  1. Design e conceitoDesigning and concepting
  2. Modelagem e exportaçãoModeling and exporting
  3. Integrando-o ao seu aplicativo (este artigo)Integrating it into your application (this article)

os ativos 3D a serem usados como iniciadores para seu aplicativo devem ser criados usando as diretrizes de criação do Windows Mixed Reality para garantir a compatibilidade.3D assets to be used as launchers for your application should be authored using the Windows Mixed Reality authoring guidelines to ensure compatibility. Os ativos que não atenderem a essa especificação de criação não serão renderizados na página inicial do Windows Mixed Reality.Assets that fail to meet this authoring specification won't be rendered in the Windows Mixed Reality home.

Configurando o iniciador 3DConfiguring the 3D launcher

Quando você cria um novo projeto no Visual Studio, ele cria um bloco padrão simples que exibe o nome e o logotipo do seu aplicativo.When you create a new project in Visual Studio, it creates a simple default tile that displays your app's name and logo. Para substituir essa representação 2D por um modelo 3D personalizado, edite o manifesto de aplicativo do seu aplicativo para incluir o elemento "MixedRealityModel" como parte de sua definição de bloco padrão.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. Para reverter para o inicializador 2D, basta remover a definição de MixedRealityModel do manifesto.To revert to the 2D launcher just remove the MixedRealityModel definition from the manifest.

XMLXML

Primeiro, localize o manifesto do pacote do aplicativo em seu projeto atual.First, locate the app package manifest in your current project. Por padrão, o manifesto será nomeado Package. appxmanifest.By default, the manifest will be named Package.appxmanifest. Se você estiver usando o Visual Studio, clique com o botão direito do mouse no manifesto no seu visualizador de solução e selecione Exibir origem para abrir o XML para edição.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.

Na parte superior do manifesto, adicione o esquema uap5 e inclua-o como um namespace ignorável: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">

Em seguida, especifique o "MixedRealityModel" no bloco padrão para seu aplicativo: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>

O elemento MixedRealityModel aceita um caminho de arquivo que aponta para um ativo 3D armazenado em seu pacote de aplicativo.The MixedRealityModel element accepts a file path pointing to a 3D asset stored in your app package. Atualmente, apenas modelos 3D entregues usando o formato de arquivo. glb e criados em relação às instruções de criação de ativos 3D da realidade do Windows Mixed têm suporte.Currently only 3D models delivered using the .glb file format and authored against the Windows Mixed Reality 3D asset authoring instructions are supported. Os ativos devem ser armazenados no pacote do aplicativo e a animação não tem suporte no momento.Assets must be stored in the app package and animation isn't currently supported. Se o parâmetro "Path" for deixado em branco, o Windows mostrará o Tablet 2D em vez do iniciador 3D.If the “Path” parameter is left blank Windows will show the 2D slate instead of the 3D launcher. Observação: o ativo. glb deve ser marcado como "conteúdo" em suas configurações de compilação antes de compilar e executar seu aplicativo.Note: the .glb asset must be marked as "Content" in your build settings before building and running your app.

Selecione o. glb no Gerenciador de soluções e use a seção Propriedades para marcá-lo como "conteúdo" nas configurações de compilaçãoSelect the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings
Selecione o. glb no Gerenciador de soluções e use a seção Propriedades para marcá-lo como "conteúdo" nas configurações de compilaçãoSelect the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings

Caixa delimitadoraBounding box

Uma caixa delimitadora pode ser usada para adicionar opcionalmente uma região extra do buffer ao objeto.A bounding box can be used to optionally add an extra buffer region around the object. A caixa delimitadora é especificada usando um ponto central e extensões, que indicam a distância do centro da caixa delimitadora às suas bordas ao longo de cada eixo.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. As unidades da caixa delimitadora podem ser mapeadas para 1 unidade = 1 medidor.Units for the bounding box can be mapped to 1 unit = 1 meter. Se uma caixa delimitadora não for fornecida, uma será ajustada automaticamente à malha do objeto.If a bounding box isn't provided, then one will be automatically fitted to the mesh of the object. Se a caixa delimitadora fornecida for menor que o modelo, ela será redimensionada para se ajustar à malha.If the provided bounding box is smaller than the model, then it will be resized to fit the mesh.

O suporte para o atributo da caixa delimitadora será fornecido com a atualização RS4 do Windows como uma propriedade no elemento MixedRealityModel.Support for the bounding box attribute will come with the Windows RS4 update as a property on the MixedRealityModel element. Para definir uma caixa delimitadora primeiro na parte superior do manifesto do aplicativo, adicione o esquema uap6 e inclua-o como namespaces ignoráveis: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">

Em seguida, no MixedRealityModel, defina a propriedade SpatialBoundingBox para definir a caixa delimitadora: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>

Usando o UnityUsing Unity

Ao trabalhar com o Unity, o projeto deve ser compilado e aberto no Visual Studio antes que o manifesto do aplicativo possa ser editado.When working with Unity the project must be built and opened in Visual Studio before the App Manifest can be edited.

Observação

O iniciador 3D deve ser redefinido no manifesto ao compilar e implantar uma nova solução do Visual Studio do Unity.The 3D launcher must be redefined in the manifest when building and deploying a new Visual Studio solution from Unity.

Observação

Esse recurso foi adicionado como parte da RS3 (atualização para criadores de outono) de 2017 para fones de ouvido (VR) e como parte da atualização de abril de 2018 (RS4) para o 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. Verifique se seu aplicativo está direcionando para uma versão do SDK do Windows maior ou igual a 10.0.16299 em headsets de imersão (VR) e 10.0.17125 no 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. Você pode encontrar as SDK do Windows mais recentes aqui.You can find the latest Windows SDK here.

Importante

os secondaryTiles (3D Deep links) funcionam apenas com aplicativos UWP 2D.3D deep links (secondaryTiles) only work with 2D UWP apps. No entanto, você pode criar um iniciador de aplicativo 3D para iniciar um aplicativo exclusivo na página inicial do Windows Mixed Reality.You can, however, create a 3D app launcher to launch an exclusive app from the Windows Mixed Reality home.

Seus aplicativos 2D podem ser aprimorados para a realidade mista do Windows, adicionando a capacidade de posicionar modelos 3D de seu aplicativo na casa do Windows Mixed Realm como links profundos para conteúdo em seu aplicativo 2D, assim como blocos 2D secundários no menu Iniciar do 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. Por exemplo, você pode criar fotografias de 360 ° que se vinculam diretamente a um aplicativo de visualizador de fotos 360 ° ou permitem que os usuários coloquem o conteúdo 3D de uma coleção de ativos que abre uma página de detalhes sobre o autor.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. Essas são apenas duas maneiras de expandir a funcionalidade do seu aplicativo 2D com conteúdo 3D.These are just a couple ways to expand the functionality of your 2D application with 3D content.

Criando um "secondaryTile" 3DCreating a 3D “secondaryTile”

Você pode posicionar o conteúdo 3D do seu aplicativo usando "secondaryTiles" definindo um modelo de realidade misturada no momento da criação.You can place 3D content from your application using “secondaryTiles” by defining a mixed reality model at creation time. Os modelos de realidade misturada são criados referenciando um ativo 3D em seu pacote de aplicativo e, opcionalmente, definindo uma caixa delimitadora.Mixed reality models are created by referencing a 3D asset in your app package and optionally defining a bounding box.

Observação

No momento, não há suporte para a criação de "secondaryTiles" de dentro de uma exibição exclusiva.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();

Caixa delimitadoraBounding box

Uma caixa delimitadora pode ser usada para adicionar uma região extra do buffer ao objeto.A bounding box can be used to add an extra buffer region around the object. A caixa delimitadora é especificada usando um ponto central e extensões, que indicam a distância do centro da caixa delimitadora às suas bordas ao longo de cada eixo.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. As unidades da caixa delimitadora podem ser mapeadas para 1 unidade = 1 medidor.Units for the bounding box can be mapped to 1 unit = 1 meter. Se uma caixa delimitadora não for fornecida, uma será ajustada automaticamente à malha do objeto.If a bounding box isn't provided, one will be automatically fitted to the mesh of the object. Se a caixa delimitadora fornecida for menor que o modelo, ela será redimensionada para se ajustar à malha.If the provided bounding box is smaller than the model, it will be resized to fit the mesh.

Comportamento de ativaçãoActivation behavior

Observação

Esse recurso terá suporte a partir da atualização RS4 do Windows.This feature will be supported as of the Windows RS4 update. Verifique se seu aplicativo está direcionando para uma versão do SDK do Windows maior ou igual a 10.0.17125 se você planeja usar esse recursoMake 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

Você pode definir o comportamento de ativação para um secondaryTile 3D para controlar como ele reage quando um usuário o seleciona.You can define the activation behavior for a 3D secondaryTile to control how it reacts when a user selects it. Isso pode ser usado para posicionar objetos 3D na casa misturada da realidade, que são puramente informativas ou decorativas.This can be used to place 3D objects in the Mixed Reality home that are purely informative or decorative. Há suporte para os seguintes tipos de comportamento de ativação:The following activation behavior types are supported:

  1. Padrão: quando um usuário seleciona o secondaryTile 3D, o aplicativo é ativadoDefault: When a user selects the 3D secondaryTile the app is activated
  2. Nenhum: quando o usuário seleciona o 3D secondaryTile, nada acontece e o aplicativo não é ativado.None: When the user selects the 3D secondaryTile nothing happens and the app isn't activated.

Obtendo e atualizando um "secondaryTile" existenteObtaining and updating an existing “secondaryTile”

Os desenvolvedores podem obter uma lista de seus blocos secundários existentes, que incluem as propriedades especificadas anteriormente.Developers can get back a list of their existing secondary tiles, which includes the properties that they previously specified. Eles também podem atualizar as propriedades alterando o valor e, em seguida, chamando 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();
}

Verificando se o usuário está no Windows Mixed RealityChecking that the user is in Windows Mixed Reality

os links de 3D Deep (secondaryTiles) só podem ser criados enquanto a exibição está sendo exibida em um headset de realidade mista do Windows.3D deep links (secondaryTiles) can only be created while the view is being displayed in a Windows Mixed Reality headset. Quando o modo de exibição não está sendo apresentado em um headset de realidade misturada do Windows, é recomendável lidar normalmente com isso ocultando o ponto de entrada ou mostrando uma mensagem de erro.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. Você pode verificar isso consultando IsCurrentViewPresentedOnHolographic ().You can check this by querying IsCurrentViewPresentedOnHolographic().

Notificações de blocoTile notifications

Notificações de bloco atualmente não dão suporte ao envio de uma atualização com um ativo 3D.Tile notifications don't currently support sending an update with a 3D asset. Isso significa que os desenvolvedores não podem fazer o seguinte:This means that developers can't do the following:

  • Notificações por PushPush Notifications
  • Sondagem periódicaPeriodic Polling
  • Notificações agendadasScheduled Notifications

Para obter mais informações sobre os outros recursos e atributos de blocos e como eles são usados para blocos 2D, consulte a documentação blocos para aplicativos 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.

Confira tambémSee also