Configuração da câmera no Unity

Quando você usa um fone de ouvido de realidade misturada, ele se torna o centro do seu mundo holográfico. O componente Câmera do Unity manipulará automaticamente a renderização estereoscópica e seguirá o movimento e a rotação da cabeça. No entanto, para otimizar totalmente a qualidade visual e a estabilidade do holograma, defina as configurações de câmera descritas abaixo.

Headsets imersivos holoLens vs VR

As configurações padrão no componente Câmera do Unity são para aplicativos 3D tradicionais, que precisam de uma tela de fundo semelhante a um skybox, pois eles não têm um mundo real.

  • Ao executar em um headset imersivo, você está renderizando tudo o que o usuário vê e, portanto, você provavelmente desejará manter o skybox.
  • No entanto, ao executar em um headset holográfico como o HoloLens, o mundo real deve aparecer por trás de tudo o que a câmera renderiza. Defina a tela de fundo da câmera como transparente (no HoloLens, renderizações pretas como transparentes) em vez de uma textura skybox:
    1. Selecione a Câmera Principal no painel Hierarquia
    2. No painel Inspetor, localize o componente Câmera e altere a lista suspensa Limpar Sinalizadores do Skybox para Cor Sólida
    3. Selecione o seletor de cores da tela de fundo e altere os valores RGBA para (0, 0, 0, 0)
      1. Se você definir isso do código, poderá usar o do Unity Color.clear

O MRTK lidará com configurações de câmera específicas automaticamente, com base na configuração no perfil do sistema de câmeras.

Namespace:Microsoft.MixedReality.Toolkit.CameraSystem
Type:MixedRealityCameraSystem

Para verificar a opacidade da câmera, o sistema MixedRealityCamera tem uma IsOpaque propriedade .

CoreServices.CameraSystem.IsOpaque;

Instalação da câmera

Seja qual for o tipo de experiência que você está desenvolvendo, a Câmera Principal é sempre o componente de renderização estéreo primário anexado à tela montada na cabeça do dispositivo. Será mais fácil definir seu aplicativo se você imaginar a posição inicial do usuário como (X: 0, Y: 0, Z: 0). Como a Câmera Principal está acompanhando o movimento da cabeça do usuário, a posição inicial do usuário pode ser definida definindo a posição inicial da Câmera Principal.

A escolha central que você precisa fazer é se você está desenvolvendo para headsets imersivos holoLens ou VR. Depois de obter isso, pule para qualquer seção de configuração que se aplique.

Configuração da câmera do HoloLens

Para aplicativos do HoloLens, você precisa usar âncoras para todos os objetos que deseja bloquear no ambiente de cena. É recomendável usar espaço não associado para maximizar a estabilidade e criar âncoras em várias salas.

Siga este tutorial passo a passo para adicionar e configurar automaticamente Realidade Misturada Toolkit em seu projeto do Unity. Também é possível trabalhar diretamente com a classe MixedRealityPlayspace do MRTK para Unity e definir a Escala de Destino como Mundo:

Janela de configurações do MRTK

O MRTK deve lidar com a posição do playspace e da câmera automaticamente, mas é bom verificar duas vezes:

Playspace do MRTK

  1. No painel Hierarquia, expanda o GameObject MixedRealityPlayspace e localize o objeto filho câmera principal
  2. No painel Inspetor , localize o componente Transformar e altere a Posição para (X: 0, Y: 0, Z: 0)

Configuração da câmera VR

Windows Mixed Reality dá suporte a aplicativos em uma ampla variedade de escalas de experiência, desde aplicativos somente orientação e em escala sentado até aplicativos de escala de sala. No HoloLens, você pode ir mais longe e criar aplicativos de escala mundial que permitem que os usuários andem além de 5 metros, explorando um andar inteiro de um edifício e além.

Sua primeira etapa na criação de uma experiência de realidade misturada no Unity é determinar qual escala de experiência seu aplicativo terá como destino:

Experiências em escala de sala ou em pé

Observação

Se você estiver criando para o HL2, recomendamos criar uma experiência no nível dos olhos ou considerar o uso do Reconhecimento de Cena para raciocinar sobre o chão da cena.

Use a classe MixedRealityPlayspace do MRTK para Unity e defina a Escala de Destino como Sala ou Em Pé:

Janela de configurações do MRTK

O MRTK deve lidar com a posição do playspace e da câmera automaticamente, mas é bom verificar duas vezes:

Playspace do MRTK

  1. No painel Hierarquia, expanda o GameObject MixedRealityPlayspace e localize o objeto filho câmera principal
  2. No painel Inspetor , localize o componente Transformar e altere a Posição para (X: 0, Y: 0, Z: 0)

Experiências sentadas

Use a classe MixedRealityPlayspace do MRTK para Unity e defina a Escala de Destino como Sentada:

Janela de configurações do MRTK

O MRTK deve lidar com a posição do playspace e da câmera automaticamente, mas é bom verificar novamente:

Playspace do MRTK

  1. No painel Hierarquia, expanda o GameObject MixedRealityPlayspace e localize o objeto filho Câmera Principal
  2. No painel Inspetor , localize o componente Transformar e altere a Posição para (X: 0, Y: 0, Z: 0)

Configurando o plano de fundo da câmera

Se você estiver usando o MRTK, a tela de fundo da câmera será configurada e gerenciada automaticamente. Para projetos do SDK XR ou do WSA Herdado, recomendamos definir a tela de fundo da câmera como preto sólido no HoloLens e manter o skybox para VR.

Usando várias câmeras

Quando há vários componentes câmera na cena, o Unity sabe qual câmera usar para renderização estereoscópica com base em qual GameObject tem a marca MainCamera. No XR herdado, ele também usa essa marca para sincronizar o acompanhamento da cabeça. No SDK do XR, o acompanhamento da cabeça é controlado por um script TrackedPoseDriver anexado à câmera.

Compartilhando buffers de profundidade

Compartilhar o buffer de profundidade do aplicativo com o Windows cada quadro dará ao seu aplicativo um dos dois aumentos na estabilidade do holograma, com base no tipo de headset para o qual você está renderizando:

  • Os headsets imersivos de VR podem cuidar da reprojeção posicional quando um buffer de profundidade é fornecido, ajustando seus hologramas para avaliação incorreta na posição e na orientação.
  • Os headsets do HoloLens têm alguns métodos diferentes. O HoloLens 1 selecionará automaticamente um ponto de foco quando um buffer de profundidade for fornecido, otimizando a estabilidade do holograma ao longo do plano que cruza mais conteúdo. HoloLens 2 estabilizará o conteúdo usando o LSR de Profundidade (consulte Comentários).

A caixa de diálogo de configuração do MRTK tentará definir configurações de buffer de profundidade para o SDK XR e o WSA herdado, mas é bom verificar essas guias e verificar as configurações no Unity.

Usando planos de recorte

Renderizar conteúdo muito próximo do usuário pode ser desconfortável na realidade misturada. Você pode ajustar os planos de recorte próximos e distantes no componente Câmera.

  1. Selecione a Câmera Principal no painel Hierarquia
  2. No painel Inspetor , localize o componente CâmeraPlanos de Recorte e altere a caixa de texto Próximo de 0,3 para 0,85. O conteúdo renderizado ainda mais próximo pode levar ao desconforto do usuário e deve ser evitado de acordo com as diretrizes de distância de renderização.

Recentemente a câmera

Se você estiver criando uma experiência em escala de assentos, poderá criar a origem mundial do Unity na posição de cabeçalho atual do usuário chamando o XR. Método InputTracking.Recenter no XR herdado ou no método XRInputSubsystem.TryRecenter no SDK do XR.

Portabilidade

Esse recurso normalmente é reservado para experiências de VR:

O MRTK fornece um sistema de teletransporte interno que funciona automaticamente entre mãos e controladores articulados.

Modos de reprojeção

Tanto o HoloLens quanto os headsets imersivos reprojetarão cada quadro que seu aplicativo renderiza para ajustar qualquer erro de avaliação da posição real da cabeça do usuário quando os fótons forem emitidos.

Por padrão:

  • Os headsets imersivos de VR cuidarão da reprojeção posicional se o aplicativo fornecer um buffer de profundidade para um determinado quadro. Os headsets imersivos também ajustarão seus hologramas para avaliação incorreta na posição e na orientação. Se um buffer de profundidade não for fornecido, o sistema corrigirá apenas os erros de preterimentos na orientação.
  • Headsets holográficos como HoloLens 2 cuidarão da reprojeção posicional, quer o aplicativo forneça seu buffer de profundidade ou não. A reprojeção posicional é possível sem buffers de profundidade no HoloLens, pois a renderização geralmente é esparsa com uma tela de fundo estável fornecida pelo mundo real.

No momento, o MRTK não tem auxiliares para o modo de reprojeção. Consulte uma das outras guias para obter mais informações.

Próximo ponto de verificação de desenvolvimento

Se você estiver acompanhando a jornada de desenvolvimento do Unity que estabelecemos, está no meio da exploração dos principais blocos de construção do MRTK. Deste ponto, você pode prosseguir para o próximo bloco de construção:

Ou vá diretamente para as funcionalidades e APIs da plataforma de Realidade Misturada:

Você sempre pode voltar para os pontos de verificação de desenvolvimento do Unity a qualquer momento.

Confira também