Configurações recomendadas do Unity

O Unity fornece um conjunto de opções padrão que geralmente são o caso médio para todas as plataformas. No entanto, o Unity oferece alguns comportamentos específicos à realidade misturada que podem ser alternados por meio das configurações do projeto.

Configuração de ambiente com desempenho

Configurações de baixa qualidade

É importante modificar as configurações de Qualidade do Unity para Muito Baixa para que seu aplicativo seja executado e tenha um bom desempenho na taxa de quadros apropriada, especialmente para o desenvolvimento do HoloLens. Para desenvolvimento em headsets imersivos, dependendo das especificações da área de trabalho que alimenta a experiência vr, ainda é possível obter taxa de quadros sem os parâmetros de menor qualidade.

No Unity 2019 LTS+, você pode definir o nível de qualidade do projeto acessando Editar>Qualidade dasConfigurações> do Projeto e definindo o Padrão clicando na seta para baixo para o nível **Muito baixa qualidade.

Configurações de iluminação

Semelhante às configurações de cena de Qualidade, é importante definir as configurações ideais de Iluminação para seu aplicativo Realidade Misturada. No Unity, a configuração Iluminação que geralmente terá o maior impacto de desempenho em sua cena é Iluminação Global em Tempo Real. Você pode desativar a Iluminação Globalacessando>Configurações de Iluminaçãode Renderização de Janelas>>Iluminação Global em Tempo Real.

Há outra configuração de iluminação, Iluminação Global Assada. Essa configuração pode fornecer resultados de desempenho e visualmente impressionantes em headsets imersivos, mas não é aplicável ao desenvolvimento do HoloLens. A Iluminação Global Assada só é calculada para GameObjects estáticos, que não são encontrados em cenas do HoloLens devido à natureza de um ambiente desconhecido e em mudança.

Leia Iluminação Global do Unity para obter mais informações.

Observação

A Iluminação Global em tempo real é definida por cena e, portanto, os desenvolvedores devem salvar essa propriedade para cada cena do Unity em seu projeto.

Caminho de renderização de instanciação de passagem única

Em aplicativos Realidade Misturada, a cena é renderizada duas vezes: uma para cada olho. Em comparação com o desenvolvimento 3D tradicional, isso efetivamente dobra a quantidade de trabalho que precisa ser computada. É importante selecionar o caminho de renderização mais eficiente no Unity para economizar no tempo de CPU e GPU. A renderização em instâncias de passagem única otimiza o pipeline de renderização do Unity para aplicativos de realidade misturada; recomendamos que você habilite essa configuração por padrão para cada projeto.

Como habilitar esse recurso no seu projeto do Unity

  1. Abra as Configurações do OpenXR (acesse Editar>Configurações do Projeto>Gerenciamento de Plug-ins do XR>OpenXR).
  2. Selecione Instância de Passagem Única no menu suspenso Modo de Renderização.

Leia os artigos a seguir do Unity para obter mais detalhes com essa abordagem de renderização.

Observação

Um problema comum na renderização com uma instância de passagem única ocorre se os desenvolvedores já têm sombreadores personalizados existentes não escritos para a criação de instância. Depois de habilitar esse recurso, os desenvolvedores poderão perceber que alguns GameObjects são renderizados apenas em um olho. Isso ocorre porque os sombreadores personalizados associados não têm as propriedades apropriadas para a criação de instância.

Confira Renderização de estéreo de passagem única para o HoloLens do Unity para saber como resolver esse problema

Habilitar o compartilhamento de buffer de profundidade

Para obter uma melhor estabilidade de holograma com base na percepção do usuário, é recomendável habilitar a propriedade Compartilhamento de Buffer de Profundidade no Unity. Ao ativar isso, o Unity compartilhará o mapa de profundidade produzido pelo aplicativo com a plataforma Windows Mixed Reality. Em seguida, a plataforma pode otimizar melhor a estabilidade do holograma especificamente para sua cena para qualquer quadro que esteja sendo renderizado pelo aplicativo.

Como habilitar esse recurso no seu projeto do Unity

  1. Abra as Configurações do OpenXR (acesse Editar>Configurações do Projeto>Gerenciamento de Plug-ins do XR>OpenXR).
  2. Selecione Profundidade de 16 Bits no menu suspenso Modo de Envio de Profundidade .

A configuração de buffer de profundidade de 16 bits é especialmente recomendada para o desenvolvimento do HoloLens. Selecionar 16 bits em comparação com 24 bits reduzirá significativamente os requisitos de largura de banda, pois menos dados precisarão ser movidos/processados. Dito isso, a otimização vem com determinado custo. Certifique-se de entender as implicações mencionadas nas caixas Importantes abaixo.

Para que a plataforma Windows Mixed Reality otimize a estabilidade do holograma, ela depende do buffer de profundidade para ser preciso e corresponder a todos os hologramas renderizados na tela. Portanto, com o compartilhamento de buffer de profundidade ativado, é importante ao renderizar a cor para também renderizar a profundidade. No Unity, a maioria dos materiais Opacos ou TransparentCutout renderizará a profundidade por padrão, mas objetos transparentes e de texto não renderizarão profundidade, embora isso dependa de sombreadores e outros fatores.

Se estiver usando o sombreador Standard do Realidade Misturada Toolkit, para renderizar a profundidade para objetos transparentes:

  1. Selecione o material transparente que está usando o sombreador Padrão do MRTK e abra a janela do editor inspetor
  2. Selecione o botão Corrigir Agora no aviso de compartilhamento de buffer de profundidade. Isso também pode ser executado manualmente definindo o Modo de Renderização como Personalizado; em seguida, defina Modo como Transparente e, por fim, defina Gravação de Profundidade como Ativado

Importante

Os desenvolvedores devem ter cuidado com o Z-fighting ao alterar esses valores junto com as configurações do plano próximo/distante da câmera. O Z-Fighting ocorre quando dois gameobjects tentam renderizar para o mesmo pixel e devido a limitações na fidelidade do buffer de profundidade (ou seja, profundidade z), o Unity não pode discernir qual objeto está na frente do outro. Os desenvolvedores observarão uma cintilação entre dois objetos de jogo enquanto lutam pelo mesmo valor de profundidade z. Isso pode ser resolvido alternando para o formato de profundidade de 24 bits, pois haverá um intervalo maior de valores para cada objeto calcular para sua profundidade z da câmera.

No entanto, é recomendável, especialmente para o desenvolvimento do HoloLens, modificar os planos próximos e distantes da câmera para um intervalo menor e manter o formato de profundidade de 16 bits. A profundidade z é mapeada não linearmente para o intervalo de valores ao longo dos planos de câmera próximos e distantes. Isso pode ser modificado selecionando a Câmera Principal em sua cena e, em Inspetor, altere os valores quase & plano de recorte distante para reduzir o intervalo (ou seja, de 1000m para 100m ou outro valor x etc.)

Importante

O Unity não cria um buffer de estêncil ao usar o formato de profundidade de 16 bits. Assim, alguns efeitos de interface do usuário do Unity e outros efeitos necessários para estêncil não funcionarão, a menos que o formato de profundidade de 24 bits seja selecionado, o que criará um buffer de estêncil de 8 bits.

Compilação para IL2CPP

O Unity preteriu o suporte para o back-end de script do .NET e, portanto, recomenda que os desenvolvedores utilizem IL2CPP para suas compilações do visual studio UWP. Embora isso traga várias vantagens, a criação da solução do Visual Studio do Unity para IL2CPP pode ser mais lenta do que o método .NET antigo. Portanto, é altamente recomendável seguir as práticas recomendadas para criar IL2CPP para economizar no tempo de iteração de desenvolvimento.

  1. Aproveite a construção incremental criando seu projeto para o mesmo diretório todas as vezes, reutilizando os arquivos pré-criados lá
  2. Desabilitar verificações de software antimalware para o projeto & pastas de build
    • Abra a proteção contra ameaças & vírus no aplicativo de configurações de Windows 10
    • Selecione Gerenciar Configurações em Configurações de proteção contra ameaças & vírus
    • Selecione Adicionar ou remover exclusões na seção Exclusões
    • Selecione Adicionar uma exclusão e selecione a pasta que contém o código do projeto do Unity e as saídas de build
  3. Usar um SSD para compilação

Leia Otimizando tempos de build para IL2CPP para obter mais informações.

Observação

Além disso, pode ser benéfico configurar um Servidor de Cache, especialmente para projetos do Unity com uma grande quantidade de ativos (excluindo arquivos de script) ou que estejam constantemente alterando cenas/ativos. Ao abrir um projeto, o Unity armazena os ativos qualificados em um formato de cache interno no computador do desenvolvedor. Os itens precisam ser importados novamente e, assim, processados novamente quando modificados. Esse processo pode ser feito uma vez e salvo em um Servidor de Cache e, consequentemente, compartilhado com outros desenvolvedores para economizar tempo, em vez de todos os desenvolvedores processarem a nova importação de novas alterações localmente.

Propriedades de publicação

Tela inicial holográfica

O HoloLens tem uma CPU e GPU de classe móvel, o que significa que os aplicativos podem levar um pouco mais de tempo para serem carregados. Enquanto o aplicativo estiver carregando, os usuários verão apenas preto e, portanto, eles podem se perguntar o que está acontecendo. Para tranquilizá-los durante o carregamento, você pode adicionar uma tela inicial holográfica.

Para alternar a tela inicial holográfica:

  1. Acessea páginaEditar>Player de Configurações> do Projeto
  2. Selecione a guia Windows Store e abra a seção Imagem inicial
  3. Aplique sua imagem na propriedade Imagem inicial holográfica do Windows Holographic>.
    • Alternar a opção Mostrar Tela Inicial do Unity habilitará ou desabilitará a tela inicial da marca do Unity. Se você não tiver uma licença do Unity Pro, a tela inicial da marca Unity sempre será exibida.
    • Se uma Imagem Inicial Holográfica for aplicada, ela sempre será exibida se a caixa de seleção Mostrar Tela Inicial do Unity estiver habilitada ou desabilitada. Especificar uma imagem inicial holográfica personalizada só está disponível para desenvolvedores com uma licença do Unity Pro.
Mostrar Tela Inicial do Unity Imagem inicial holográfica Comportamento
Ativado Nenhum Mostre a tela inicial padrão do Unity por 5 segundos ou até que o aplicativo seja carregado, o que for mais longo.
Ativado Personalizado Mostrar tela inicial personalizada por 5 segundos ou até que o aplicativo seja carregado, o que for mais longo.
Desativado Nenhum Mostre preto transparente (nada) até que o aplicativo seja carregado.
Desativado Personalizado Mostrar tela inicial personalizada por 5 segundos ou até que o aplicativo seja carregado, o que for mais longo.

Leia a documentação da Tela Inicial do Unity para obter mais informações.

Controle de perda

Um headset de realidade misturada depende de ver o ambiente ao seu redor para construir sistemas de coordenadas com bloqueio de mundo, que permitem que os hologramas permaneçam em posição. Quando o fone de ouvido não consegue se localizar no mundo, diz-se que o fone de ouvido perdeu o rastreamento. Nesses casos, a funcionalidade dependente de sistemas de coordenadas com bloqueio de mundo, como estágios espaciais, âncoras espaciais e mapeamento espacial, não funciona.

Se ocorrer uma perda de acompanhamento, o comportamento padrão do Unity será parar de renderizar hologramas, pausar o loop do jogo e exibir uma notificação de rastreamento perdida que siga confortavelmente o foco dos usuários. Notificações personalizadas também podem ser fornecidas na forma de uma imagem de perda de rastreamento. Para aplicativos que dependem do acompanhamento de toda a experiência, é suficiente permitir que o Unity lide totalmente com isso até que o rastreamento seja recuperado. Os desenvolvedores podem fornecer uma imagem personalizada a ser mostrada durante a perda de rastreamento.

Para personalizar a imagem perdida de rastreamento:

  1. Acessea páginaEditar>Player de Configurações> do Projeto
  2. Selecione na guia Windows Store e abra a seção Imagem inicial
  3. Aplique sua imagem na propriedade Imagem de Perda de Rastreamento Holográfico > do Windows .

Recusar pausa automática

Alguns aplicativos podem não exigir acompanhamento (por exemplo, aplicativos somente orientação , como visualizadores de vídeo de 360 graus) ou podem precisar continuar processando ininterruptamente enquanto o rastreamento é perdido. Você pode recusar a perda padrão do comportamento de rastreamento, mas é responsável por ocultar/desabilitar qualquer objeto, que não seria renderizado corretamente em um cenário de perda de rastreamento. Na maioria dos casos, o único conteúdo que é recomendado para ser renderizado nesse caso é o conteúdo bloqueado pelo corpo, centralizado em torno da câmera main.

Para recusar o comportamento de pausa automática:

  1. Vá paraa páginaEditar>Player de Configurações> do Projeto
  2. Selecione a guia Windows Store e abra a seção Imagem inicial
  3. Modifique a caixa de seleção Pausar Perda do Windows Holographic > On Tracking e Mostrar Imagem .

Acompanhamento de eventos de perda

Para definir o comportamento personalizado quando o rastreamento é perdido, manipule os eventos de perda de rastreamento global.

Funcionalidades

Para que um aplicativo aproveite determinadas funcionalidades, ele deve declarar os recursos apropriados em seu manifesto. As declarações de manifesto podem ser feitas no Unity para que sejam incluídas em todas as exportações futuras do projeto.

Os recursos podem ser habilitados para um aplicativo Realidade Misturada:

  1. Acessea páginaEditar>Player de Configurações> do Projeto
  2. Selecione a guia Windows Store, abra a seção Configurações de Publicação e procure a lista Funcionalidades

Os recursos aplicáveis para habilitar as APIs comumente usadas para aplicativos Holográficos são:

Funcionalidade APIs que exigem funcionalidade
SpatialPerception SurfaceObserver
Webcam PhotoCapture e VideoCapture
PicturesLibrary / VideosLibrary PhotoCapture ou VideoCapture, respectivamente (ao armazenar o conteúdo capturado)
Microfone VideoCapture (ao capturar áudio), DictationRecognizer, GrammarRecognizer e KeywordRecognizer
InternetClient DictationRecognizer (e para usar o Criador de Perfil do Unity)

Confira também