Observador de compreensão de cena — MRTK2

O Reconhecimento de Cena retorna uma representação semântica de entidades de cena, bem como suas formas geométricas no HoloLens 2 (não há suporte para HoloLens 1ª Geração).

Alguns casos de uso esperados dessa tecnologia são:

  • Coloque objetos na superfície mais próxima de um determinado tipo (por exemplo, parede e chão)
  • Construir malha de navegação para jogos de estilo de plataforma
  • Fornecer geometria amigável do mecanismo de física como quadriciclos
  • Acelerar o desenvolvimento evitando a necessidade de escrever algoritmos semelhantes

O Reconhecimento de Cena é introduzido como um recurso experimental no MRTK 2.6. Ele é integrado ao MRTK como um observador espacial chamado WindowsSceneUnderstandingObserver. O Reconhecimento de Cena funciona tanto com o pipeline do XR Herdado quanto com o pipeline do SDK do XR (openXR (a partir do MRTK 2.7) e Windows Plug-in XR). Em ambos os casos, o WindowsSceneUnderstandingObserver valor é usado.

Observação

O uso do Reconhecimento de Cena na Comunicação Remota só tem suporte no MRTK 2.7.3 e superior. Há suporte apenas para projetos que usam OpenXR. Não há suporte para projetos que usam o pipeline XR Herdado ou Windows Plug-in XR.

Visão geral do Observador

Quando solicitado, retornará WindowsSceneUnderstandingObserverSpatialAwarenessSceneObject com atributos úteis para o aplicativo entender seus arredores. A frequência de observação, o tipo de objeto retornado (por exemplo, parede, piso) e outros comportamentos de observador dependem da configuração do observador por meio do perfil. Por exemplo, se a máscara de oclusão for desejada, o observador deverá ser configurado para gerar quads. A cena observada pode ser salva como arquivo serializado que pode ser carregado posteriormente para recriar a cena no modo de reprodução do editor.

Instalação

Importante

O Reconhecimento de Cena só tem suporte no HoloLens 2 e no Unity 2019.4 e superior.

  1. Verifique se a plataforma está definida como UWP nas configurações de build.
  2. Adquira o pacote de Reconhecimento de Cena por meio Realidade Misturada Ferramenta de Recurso.

Usando o Reconhecimento de Cena

A maneira mais rápida de começar a entender a cena é conferir a cena de exemplo.

Cena de exemplo de Reconhecimento de Cena

No Unity, use o gerenciador de Project para abrir o arquivo Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity de cena e pressionar play!

Importante

Aplica-se apenas ao MRTK 2.6.0 – ao usar a Ferramenta de Recurso Realidade Misturada ou importar via UPM, importe o exemplo Demos – SpatialAwareness antes de importar o exemplo Experimental - SceneUnderstanding devido a um problema de dependência. Consulte este GitHub problema para obter mais informações.

A cena demonstra o seguinte:

  • Visualização de objetos de cena observados com a interface do usuário do aplicativo para configurar o observador
  • Script de exemplo DemoSceneUnderstandingController que mostra como alterar as configurações do observador e escutar eventos relevantes
  • Salvar dados de cena no dispositivo para desenvolvimento offline
  • Carregar dados de cena salvos anteriormente (arquivos.bytes) para dar suporte ao fluxo de trabalho de desenvolvimento no editor

Importante

Por padrão, a ShouldLoadFromFile propriedade do observador é definida como false. Para ver a visualização de uma sala de exemplo serializada, consulte a seção de serviço de observador de configuração abaixo e defina a propriedade como true no editor.

Observação

A cena de exemplo é baseada no pipeline de XR Herdado. Se você estiver usando o pipeline do SDK do XR, deverá modificar os perfis de acordo. O perfil do Sistema de Reconhecimento Espacial de Compreensão de Cena fornecido (DemoSceneUnderstandingSystemProfile) e os perfis observadores de reconhecimento de cena (DefaultSceneUnderstandingObserverProfile e DemoSceneUnderstandingObserverProfile) funcionam para ambos os pipelines.

Observação

A cena de exemplo registra um There is no active AsyncCoroutineRunner when an action is posted. aviso em determinada circunstância devido à ordem de execução de inicialização/thread. Se você puder confirmar se o AsyncCoroutineRunner componente está anexado ao GameObject "Controlador de Demonstração" e o componente/GameObject permanecer habilitado/ativo na cena (o caso padrão), o aviso poderá ser ignorado com segurança. No entanto, ao criar uma nova cena com o Reconhecimento de Cena, crie um GameObject vazio na raiz e anexe o AsyncCoroutineRunner script a ele, caso contrário, o Reconhecimento de Cena pode não funcionar corretamente.

Configurando o serviço de observador

Selecione o objeto de jogo 'MixedRealityToolkit' e verifique o inspetor.

scene understanding location in hierarchy

MRTK location in inspector

Essas opções permitirão que um configure o WindowsSceneUnderstandingObserver.

Script de exemplo

O script de exemplo DemoSceneUnderstandingController.cs demonstra os principais conceitos em trabalhar com o serviço de Reconhecimento de Cena.

  • Assinando eventos de Reconhecimento de Cena
  • Manipulando eventos de Reconhecimento de Cena
  • Configurando o WindowsSceneUnderstandingObserver runtime

Os alternâncias no painel na cena alteram o comportamento do observador de compreensão de cena chamando funções públicas desse script de exemplo.

Ativar Pré-fabricados instanciados, demonstrará a criação de objetos desse tamanho para se ajustarem a todos os SpatialAwarenessSceneObject, coletados ordenadamente sob um objeto pai.

demo controller options

Notas de aplicativo criadas

Compilar e implantar em HoloLens da maneira padrão. Após a execução, vários botões devem aparecer para reproduzir com os recursos.

Observação, há algumas quedas de poço em fazer consultas ao observador. A configuração incorreta de uma solicitação de busca resulta na carga do evento que não contém os dados esperados. Por exemplo, se um não solicitar quads, nenhuma textura de máscara de oclusão estará presente. Da mesma forma, nenhuma malha do mundo será exibida se o observador não estiver configurado para solicitar malhas. O DemoSceneUnderstandingController script cuida de algumas dessas dependências, mas não todas.

Os arquivos de cena salvos podem ser acessados por meio do portal do dispositivo em User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes. Esses arquivos de cena podem ser usados no editor especificando-os no perfil de observador encontrado no inspetor.

Device Portal location of bytes file

Serialized scene bytes in observer

Consulte Também