Portabilidade dos aplicativos de VR para o Windows Mixed Reality

Windows 10 inclui suporte para headsets de imersão e holographic. Se você tiver criado conteúdo para outros dispositivos como o Oculus Rift ou o HTC Naopak, eles têm dependências em bibliotecas que existem acima da API de plataforma do sistema operacional. colocar aplicativos existentes do Win32 Unity vr no Windows Mixed Reality envolve o redirecionamento do uso de SDKs de vr específicos do fornecedor para as APIs vr entre fornecedores do Unity.

Requisitos de portabilidade

Em um alto nível, as etapas a seguir estão envolvidas na portabilidade de conteúdo existente:

  1. verifique se o computador está executando o Windows 10 Fall Creators Update (16299). Não é mais recomendável receber compilações prévias do anel do insider skip ahead, pois essas compilações não serão as mais estáveis para o desenvolvimento de realidade misturada.
  2. Atualize para a versão mais recente do seu mecanismo de gráficos ou jogos. os mecanismos de jogo precisarão dar suporte ao SDK Windows 10 versão 10.0.15063.0 (lançado em abril de 2017) ou superior.
  3. Atualize qualquer middleware, plug-ins ou componentes. Se seu aplicativo contiver qualquer componente, é uma boa ideia atualizar para a versão mais recente.
  4. Remova dependências em SDKs duplicados. dependendo de qual dispositivo o seu conteúdo foi direcionado, você precisará remover ou compilar condicionalmente esse SDK para que você possa direcionar as APIs de Windows em vez disso. Um exemplo desse cenário seria SteamVR.
  5. Trabalhe com problemas de compilação. Neste ponto, o exercício de portabilidade é específico para seu aplicativo, seu mecanismo e as dependências de componente que você tem.

Etapas de portabilidade comuns

1. Verifique se você tem o hardware de desenvolvimento correto

A página Guia de entusiastas VR lista o hardware de desenvolvimento recomendado.

2. atualizar para o vôo mais recente de Windows 10

a plataforma Windows Mixed Reality ainda está em desenvolvimento ativo. é recomendável ingressar no programa insider Windows para acessar o vôo "Windows insider Fast".

  1. instalar o Atualização do Windows 10 para Criadores
  2. junte -se ao programa insider Windows.
  3. Habilitar modo de desenvolvedor
  4. mude para o Windows Fast insider rapidamente por meio do Configurações > seção atualização & segurança

3. atualizar para a compilação mais recente de Visual Studio

4. escolha o adaptador correto

  • Em sistemas como notebooks com duas GPUs, direcione o adaptador correto. Isso se aplica aos aplicativos do Unity e do DirectX nativo, em que um ID3D11Device é criado, explícita ou implicitamente (Media Foundation), para sua funcionalidade.

Diretrizes de portabilidade do Unity

1. Revise as etapas comuns de portação listadas acima

Revise as etapas comuns listadas acima para garantir que seu ambiente de desenvolvimento está definido corretamente. Na etapa 3, se você estiver usando o Visual Studio selecione a carga de trabalho Desenvolvimento de Jogos com Unity. Você pode desmarcar o componente "Editor do Unity opcional", pois instalará uma versão mais recente do Unity na próxima etapa.

2. Atualizar para o build público mais recente do Unity com suporte Windows MR

  1. Baixe o build público recomendado mais recente do Unity com suporte à realidade misturada.
  2. Salve uma cópia do seu projeto antes de começar
  3. Revise a documentação disponível no Unity sobre como atualizar se o projeto foi criado em uma versão mais antiga do Unity.
  4. Siga as instruções no site do Unity para usar o atualizador automático de API
  5. Verifique e veja se há alterações adicionais que você precisa fazer para executar seu projeto e trabalhar com erros e avisos restantes.

Observação

Se você tiver um middleware do que depende, verifique se está usando a versão mais recente (mais detalhes na etapa 3 abaixo).

3. Atualizar seu middleware para as versões mais recentes

Com qualquer atualização do Unity, há uma boa chance de você precisar atualizar um ou mais pacotes de middleware dos qual seu jogo ou aplicativo depende. Além disso, estar atualizado com o middleware mais recente aumenta a probabilidade de sucesso em todo o restante do processo de portação.

4. Direcionar seu aplicativo para ser executado no Win32

De dentro de seu aplicativo unity:

  • Navegue até Arquivo -> Build Configurações
  • Selecione "PC, Mac, Linux Autônomo"
  • Definir a plataforma de destino como "Windows"
  • Definir arquitetura como "x86" Selecione "Alternar Plataforma"

Observação

Se o aplicativo tiver dependências de serviços específicos do dispositivo, como a complicação de match do Steam, você precisará desabilitá-los nesta etapa. Você pode se conectar aos serviços equivalentes que Windows fornece mais tarde.

5. Configurar o hardware Windows Mixed Reality dispositivo

  1. Revisar as etapas na instalação do headset imersivo
  2. Saiba mais sobre Como usar o simulador Windows Mixed Reality e navegar pelo Windows Mixed Reality página

6. Direcionar seu aplicativo para ser executado no Windows Mixed Reality

  1. Primeiro, você deve remover ou compilar condicionalmente qualquer outra biblioteca com suporte específico para um SDK de VR específico. Esses ativos frequentemente alteram configurações e propriedades em seu projeto de maneiras incompatíveis com outros SDKs de VR, como Windows Mixed Reality.
    • Por exemplo, se seu projeto referenciar o SDK do SteamVR, você precisará atualizar seu projeto para usar as APIs de VR comuns do Unity que suportam o Windows Mixed Reality e o SteamVR.
    • Etapas específicas para excluir condicionalmente outros SDKs de VR em breve.
  2. Em seu projeto do Unity, o SDK Windows 10 destino
  3. Para cada cena, configure a câmera

7. Usar o estágio para colocar o conteúdo no chão

Você pode criar experiências de Realidade Misturada em uma ampla variedade de escalas de experiência.

Se você estiver portando uma experiência de escala de sated, deverá garantir que o Unity esteja definido como o tipo de espaço de acompanhamento estacionário:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Este código acima define o sistema de coordenadas do mundo do Unity para acompanhar o quadro estacionário de referência. No modo de acompanhamento estacionário, o conteúdo colocado no editor logo na frente do local padrão da câmera (a frente é -Z) aparece na frente do usuário quando o aplicativo é lançado. Para reativar a origem do usuário, você pode chamar o XR do Unity. Método InputTracking.Recenter.

Se você estiver portando uma experiência em escala permanente ou uma experiência de escala de sala, colocará o conteúdo em relação ao chão. Você se preocupa com o piso do usuário usando o estágio espacial , que representa a origem definida no nível do piso do usuário e o limite de sala opcional, configurada durante a primeira operação. Para essas experiências, você deve garantir que o Unity seja definido como o tipo de espaço de acompanhamento RoomScale. Embora RoomScale seja o padrão, você vai querer defini-lo explicitamente e garantir que volte a ser verdadeiro, para capturar situações em que o usuário moveu o computador para fora da sala calibrada:

if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
    // RoomScale mode was set successfully.  App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
    // RoomScale mode was not set successfully.  App cannot make assumptions about where the floor plane is.
}

Depois que o aplicativo define com êxito o tipo de espaço de acompanhamento RoomScale, o conteúdo colocado no plano y=0 será exibido no chão. A origem em (0, 0, 0) será o local específico no chão em que o usuário ficou durante a instalação da sala, com -Z representando a direção para frente que ele estava enfrentando durante a instalação.

No código de script, você pode chamar o método TryGetGeometry em que você é o tipo UnityEngine.Experimental.XR.Boundary para obter um polígono de limite, especificando um tipo de limite de TrackedArea. Se o usuário definiu um limite (você obter de volta uma lista de vértices), é seguro fornecer uma experiência de escala de sala para o usuário, em que ele pode dar uma olhada na cena que você cria.

O sistema renderizará automaticamente o limite quando o usuário se aproximar dele. Seu aplicativo não precisa usar esse polígono para renderizar o limite em si.

Para obter mais informações, consulte a página Sistemas de coordenadas no Unity.

Exemplo de resultados:

Exemplo de resultados

O algoritmo é baseado em um blog de Daniel Smilkov: maior retângulo em um polígono

8. Trabalhar com seu modelo de entrada

Cada jogo ou aplicativo destinado a um HMD existente terá um conjunto de entradas que ele trata, tipos de entradas de que precisa para a experiência e APIs específicas que ele chama para obter essas entradas. Investimos na tentativa de torná-lo o mais simples e simples possível para aproveitar as entradas disponíveis no Windows Mixed Reality.

Leia o guia de portação de entrada do Unity na guia adjacente para obter detalhes sobre como o Windows Mixed Reality expõe a entrada e como isso é mapeado para o que seu aplicativo pode fazer hoje.

9. Teste e ajuste de desempenho

Windows Mixed Reality estará disponível em uma ampla classe de dispositivos, desde PCs de jogos de alto nível até PCs de mercado amplos. Dependendo de qual mercado você está direcionando, há uma diferença significativa nos orçamentos de computação e gráficos disponíveis para seu aplicativo. Durante este exercício de portação, você provavelmente está aproveitando um pc premium e teve orçamentos de computação e gráficos significativos disponíveis para seu aplicativo. Se você quiser disponibilizar seu aplicativo para um público-alvo mais amplo, teste e faça o perfil do aplicativo no hardware representativo que você deseja direcionar ao.

O Unity e o Visual Studio incluem os profilers de desempenho e as diretrizes de publicação da Microsoft e da Intel na criação de perfil e otimização de desempenho. Há uma ampla discussão sobre o desempenho disponível em Noções básicas sobre o desempenho para realidade misturada. Além disso, há detalhes específicos para o Unity em Desempenho Recomendações para Unity.

Diretrizes de portabilidade inreal

Importante

Se você estiver usando os controladores de reverberação do HP, consulte Este artigo para obter instruções adicionais de mapeamento de entrada.

Confira também