Compartilhar via


Configuração da câmera no Unity

Quando você usa um headset de realidade misturada, ele se torna o centro do seu mundo holográfico. O componente Unity Camera lidará automaticamente com 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, você deve definir as configurações da câmera descritas abaixo.

Headsets imersivos HoloLens vs VR

As configurações padrão no componente Unity Camera são para aplicativos 3D tradicionais, que precisam de um plano de fundo semelhante a um skybox, pois 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, 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 o plano de fundo da câmera como transparente (no HoloLens, o preto é renderizado como transparente) 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 o menu suspenso Limpar sinalizadores de Skybox para Cor sólida
    3. Selecione o seletor de cores de fundo e altere os valores RGBA para (0, 0, 0, 0)
      1. Se estiver configurando isso a partir do código, você poderá usar o Color.clear

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

Namespace: Microsoft.MixedReality.Toolkit.CameraSystem
Tipo: 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 principal componente de renderização estéreo conectado à tela montada na cabeça do seu dispositivo. Será mais fácil criar o layout do 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á rastreando 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 do HoloLens ou VR. Depois de fazer isso, pule para a seção de configuração aplicável.

Configuração da câmera do HoloLens

Para aplicativos HoloLens, você precisa usar âncoras para todos os objetos que deseja bloquear no ambiente de cena. Recomendamos o uso de espaço ilimitado para maximizar a estabilidade e criar âncoras em várias salas.

Siga este tutorial passo a passo para adicionar e configurar automaticamente o 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 World:

Janela de configurações do MRTK

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

Espaço de jogo do MRTK

  1. No painel Hierarquia, expanda o GameObject do MixedRealityPlayspace e localize o objeto filho Main Camera
  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 escala sentada até aplicativos de escala de sala. No HoloLens, você pode ir além e criar aplicativos em escala mundial que permitem que os usuários caminhem além de 5 metros, explorando um andar inteiro de um prédio 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 HL2, recomendamos criar uma experiência no nível dos olhos ou considere usar o Reconhecimento de cena para raciocinar sobre o piso da cena.

Use a classe MixedRealityPlayspace do MRTK para Unity e defina a Escala de Destino como Room ou Standing:

Janela de configurações do MRTK

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

Espaço de jogo do MRTK

  1. No painel Hierarquia, expanda o GameObject do MixedRealityPlayspace e localize o objeto filho Main Camera
  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 Seated:

Janela de configurações do MRTK

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

Espaço de jogo do MRTK

  1. No painel Hierarquia, expanda o GameObject do MixedRealityPlayspace e localize o objeto filho Main Camera
  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, o plano de fundo da câmera será configurado e gerenciado automaticamente. Para projetos XR SDK ou 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 de 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 rastreamento de cabeça. No XR SDK, 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 a cada quadro dará ao aplicativo um dos dois aumentos na estabilidade do holograma, com base no tipo de fone de ouvido 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 previsã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 a maior parte do conteúdo. O 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 as configurações de buffer de profundidade para o SDK do XR e o WSA herdado, mas é bom verificar essas guias e verificar as configurações no Unity.

Usar planos de corte

Renderizar o conteúdo muito próximo do usuário pode ser desconfortável na realidade misturada. Você pode ajustar os planos de clipe 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âmera Planos de corte e altere a caixa de texto Próximo de 0,3 para 0,85. O conteúdo renderizado ainda mais próximo pode causar desconforto ao usuário e deve ser evitado de acordo com as diretrizes de distância de renderização.

Recentralização da câmera

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

Portabilidade

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

O MRTK fornece um sistema de teletransporte na caixa 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 previsão incorreta da posição real da cabeça do usuário quando os fótons são 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 previsão incorreta na posição e na orientação. Se um buffer de profundidade não for fornecido, o sistema corrigirá apenas previsões incorretas na orientação.
  • Headsets holográficos como o HoloLens 2 cuidarão da reprojeção posicional, independentemente de o aplicativo fornecer 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 um plano de fundo estável fornecido pelo mundo real.

Atualmente, 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 seguindo a jornada de desenvolvimento do Unity que apresentamos, estará explorando os 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