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 em HoloLens 2 (não há suporte para o 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 piso)
- Construir malha de navegação para jogos de estilo de plataforma
- Fornecer geometria amigável do mecanismo de física como quadriciclos
- Acelere 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 com o pipeline do XR Herdado e o pipeline do SDK do XR (openXR (começando do MRTK 2.7) e do Plug-in do Windows XR. Em ambos os casos, o WindowsSceneUnderstandingObserver
é 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 o Plug-in do Windows XR.
Visão geral do Observador
Quando solicitado, o WindowsSceneUnderstandingObserver
retornará SpatialAwarenessSceneObject 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 um 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.
- Verifique se a plataforma está definida como UWP nas configurações de build.
- Adquira o pacote reconhecimento de cena por meio Realidade Misturada Ferramenta de Recursos.
Usando o Reconhecimento de Cena
A maneira mais rápida de começar a entender a cena é marcar a cena de exemplo.
Cena de exemplo de reconhecimento de cena
No Unity, use o Explorer do Project para abrir o arquivo de cena e Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity
pressione 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 Demonstrações - SpatialAwareness antes de importar o exemplo Experimental - SceneUnderstanding devido a um problema de dependência. Consulte este problema do GitHub para obter mais informações.
A cena demonstra o seguinte:
- Visualização de objetos de cena observados com na 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 - Salvando 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 configurando o serviço de observador abaixo e defina a propriedade como true no editor.
Observação
A cena de exemplo é baseada no pipeline do XR Herdado. Se você estiver usando o pipeline do SDK do XR, deverá modificar os perfis adequadamente. O perfil fornecido do Sistema de Reconhecimento Espacial de Reconhecimento de Cena (DemoSceneUnderstandingSystemProfile
) e os perfis do Observador 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 que 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 ela, caso contrário, o Reconhecimento de Cena poderá não funcionar corretamente.
Configurando o serviço de observador
Selecione o objeto de jogo 'MixedRealityToolkit' e marcar o inspetor.
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
em runtime
As 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 Prefabs de Instanciação demonstrará a criação de objetos desse tamanho para se ajustarem a todos os SpatialAwarenessSceneObject, coletados perfeitamente sob um objeto pai.
Notas de aplicativo criadas
Crie e implante no HoloLens da maneira padrão. Após a execução, vários botões devem aparecer para reproduzir com os recursos.
Observe que 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 não solicitar quads, nenhuma textura de máscara de oclusão estará presente. Da mesma forma, nenhuma malha mundial aparecerá se o observador não estiver configurado para solicitar malhas. O DemoSceneUnderstandingController
script cuida de algumas dessas dependências, mas não de 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.