Implementar lançadores de aplicativos 3D (aplicações UWP)

Nota

Esta funcionalidade foi adicionada como parte da Atualização de Criadores de outono de 2017 (RS3) para auscultadores imersivos e é suportada por HoloLens com a Atualização de abril de 2018 Windows 10. Certifique-se de que a sua aplicação está a direcionar uma versão do Windows SDK maior ou igual a 10.0.16299 em Auscultadores imersivos e 10.0.17125 em HoloLens. Pode encontrar aqui os últimos Windows SDK.

A casa Windows Mixed Reality é o ponto de partida onde os utilizadores aterram antes de lançarem aplicações. Ao criar uma aplicação UWP para Windows Mixed Reality, por padrão, as aplicações são lançadas como ardósias 2D com o logótipo da sua aplicação. Ao desenvolver experiências para Windows Mixed Reality, um lançador 3D pode ser configurado opcionalmente para substituir o lançador 2D padrão para a sua aplicação. Em geral, os lançadores 3D são recomendados para o lançamento de aplicações imersivas que tiram os utilizadores da Windows Mixed Reality casa. O lançador 2D padrão é preferido quando a aplicação é ativada no local. Também pode criar uma ligação profunda 3D (secondaryTile) como um lançador 3D para conteúdos dentro de uma aplicação 2D UWP.

Processo de criação de lançador de aplicativos 3D

Existem três passos para criar um lançador de aplicações 3D:

  1. Desenho e conceito
  2. Modelação e exportação
  3. Integrando-o na sua aplicação (este artigo)

Os ativos 3D a utilizar como lançadores para a sua aplicação devem ser da autoria usando as diretrizes de autoria Windows Mixed Reality para garantir a compatibilidade. Os ativos que não cumpram esta especificação de autoria não serão renderizados na casa Windows Mixed Reality.

Configurar o lançador 3D

Quando cria um novo projeto em Visual Studio, cria um simples azulejo padrão que exibe o nome e o logotipo da sua aplicação. Para substituir esta representação 2D por um modelo 3D personalizado edite o manifesto da aplicação da sua aplicação para incluir o elemento "MixedRealityModel" como parte da definição de azulejo padrão. Para reverter para o lançador 2D basta remover a definição MixedRealityModel do manifesto.

XML

Em primeiro lugar, localize o manifesto do pacote de aplicações no seu projeto atual. Por padrão, o manifesto será nomeado Package.appxmanifest. Se estiver a utilizar Visual Studio, clique com razão no manifesto no seu visualizador de solução e selecione Ver fonte para abrir o xml para edição.

No topo do manifesto, adicione o esquema uap5 e inclua-o como um espaço de nome ignorável:

<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 azulejo padrão para a sua aplicação:

<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 ficheiro que aponta para um ativo 3D armazenado no seu pacote de aplicações. Atualmente apenas são suportados modelos 3D utilizando o formato de ficheiro .glb e da autoria contra as instruções de autoria de ativos 3D Windows Mixed Reality. Os ativos devem ser armazenados no pacote de aplicações e a animação não é suportada atualmente. Se o parâmetro "Caminho" for deixado em branco Windows mostrará a ardósia 2D em vez do lançador 3D. Nota: o ativo .glb deve ser marcado como "Conteúdo" nas definições de construção antes de construir e executar a sua aplicação.

Select the .glb in your solution explorer and use the properties section to mark it as
Selecione o .glb no seu explorador de solução e use a secção de propriedades para assinalá-la como "Conteúdo" nas definições de construção

Caixa de delimitação

Uma caixa de delimitação pode ser usada opcionalmente para adicionar uma região tampão extra em torno do objeto. A caixa de delimitação é especificada utilizando um ponto central e extensões, que indicam a distância do centro da caixa de delimitação até às suas bordas ao longo de cada eixo. As unidades para a caixa de delimitação podem ser mapeadas para 1 unidade = 1 metro. Se não for fornecida uma caixa de delimitação, uma será automaticamente montada na malha do objeto. Se a caixa de delimitação fornecida for menor do que o modelo, então será redimensionada para caber na malha.

O suporte para o atributo caixa de delimitação virá com a atualização RS4 Windows como uma propriedade no elemento MixedRealityModel. Para definir uma caixa de delimitação primeiro no topo do manifesto da aplicação adicione o esquema uap6 e inclua-o como espaços de nome ignoráveis:

<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 definir a propriedade SpatialBoundingBox para definir a caixa de delimitação:

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

Utilização da Unidade

Ao trabalhar com a Unidade, o projeto deve ser construído e aberto em Visual Studio antes de o Manifesto da App poder ser editado.

Nota

O lançador 3D deve ser redefinido no manifesto ao construir e implantar uma nova solução Visual Studio da Unidade.

Nota

Esta funcionalidade foi adicionada como parte da Atualização de Criadores de outono de 2017 (RS3) para auscultadores imersivos (VR) e como parte da Atualização de abril de 2018 (RS4) para HoloLens. Certifique-se de que a sua aplicação está a direcionar uma versão do Windows SDK maior ou igual a 10.0.16299 em auscultadores imersivos (VR) e 10.0.17125 em HoloLens. Pode encontrar aqui os últimos Windows SDK.

Importante

Links 3D deep links (secondaryTiles) só funcionam com aplicações UWP 2D. No entanto, pode criar um lançador de aplicações 3D para lançar uma aplicação exclusiva a partir da Windows Mixed Reality casa.

As suas aplicações 2D podem ser melhoradas para Windows Mixed Reality adicionando a capacidade de colocar modelos 3D da sua app na Windows Mixed Reality casa como ligações profundas aos conteúdos dentro da sua aplicação 2D, tal como os azulejos secundários 2D no Windows menu Iniciar. Por exemplo, pode criar fotosferas de 360° que se ligam diretamente a uma aplicação de visualização de fotos de 360°, ou deixar que os utilizadores coloquem conteúdo 3D a partir de uma coleção de ativos que abre uma página de detalhes sobre o autor. Estas são apenas algumas formas de expandir a funcionalidade da sua aplicação 2D com conteúdo 3D.

Criar um "SecondaryTile" 3D

Pode colocar o conteúdo 3D da sua aplicação utilizando "SecondaryTiles" definindo um modelo de realidade mista no momento da criação. Os modelos de realidade mista são criados através da referência a um ativo 3D no seu pacote de aplicações e definindo opcionalmente uma caixa de delimitação.

Nota

A criação de "SecondaryTiles" a partir de uma visão exclusiva não é suportada atualmente.

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 de delimitação

Uma caixa de delimitação pode ser usada para adicionar uma região tampão extra em torno do objeto. A caixa de delimitação é especificada utilizando um ponto central e extensões, que indicam a distância do centro da caixa de delimitação até às suas bordas ao longo de cada eixo. As unidades para a caixa de delimitação podem ser mapeadas para 1 unidade = 1 metro. Se não for fornecida uma caixa de delimitação, uma será automaticamente montada na malha do objeto. Se a caixa de delimitação fornecida for menor do que o modelo, será redimensionada para caber na malha.

Comportamento de ativação

Nota

Esta funcionalidade será suportada a partir da Windows atualização RS4. Certifique-se de que a sua aplicação está a direcionar uma versão do Windows SDK maior ou igual a 10.0.17125 se pretender utilizar esta funcionalidade

Pode definir o comportamento de ativação de um secundário 3D Para controlar como reage quando um utilizador o seleciona. Isto pode ser usado para colocar objetos 3D na casa Mixed Reality que são puramente informativos ou decorativos. São suportados os seguintes tipos de comportamento de ativação:

  1. Predefinição: Quando um utilizador seleciona o secundário 3DA a aplicação é ativada
  2. Nenhum: Quando o utilizador seleciona o secundário 3DE nada acontece e a aplicação não é ativada.

Obtenção e atualização de um "secundário" existente

Os desenvolvedores podem obter de volta uma lista dos seus azulejos secundários existentes, que inclui as propriedades que eles previamente especificaram. Também podem atualizar as propriedades alterando o valor e, em seguida, chamando 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 utilizador está em Windows Mixed Reality

As ligações profundas 3D (secondaryTiles) só podem ser criadas enquanto a vista estiver a ser exibida num auricular Windows Mixed Reality. Quando a sua visão não estiver a ser apresentada num auricular Windows Mixed Reality, recomendamos que manusee isto graciosamente, ocultando o ponto de entrada ou mostrando uma mensagem de erro. Pode verificar isto consultando isCurrentViewPresentedOnHolographic().

Notificações de azulejos

As notificações de azulejos não suportam atualmente o envio de uma atualização com um ativo 3D. Isto significa que os desenvolvedores não podem fazer o seguinte:

  • Notificações Push
  • Sondagem Periódica
  • Notificações agendadas

Para obter mais informações sobre as funcionalidades e atributos de outros azulejos e como são usados para azulejos 2D, consulte a documentação de Tiles para aplicações UWP.

Ver também