Reconhecimento de cena

O reconhecimento de cena fornece aos desenvolvedores de Realidade Misturada uma representação de ambiente estruturada e de alto nível, projetada para tornar intuitivo o desenvolvimento de aplicativos ecologicamente corretos. A compreensão de cena faz isso combinando o poder dos runtimes de realidade misturada existentes, como o mapeamento espacial altamente preciso, mas menos estruturado e novos runtimes controlados por IA. Ao combinar essas tecnologias, o Reconhecimento de cena gera representações de ambientes 3D semelhantes àqueles que você pode ter usado em estruturas como Unity ou ARKit/ARCore. O ponto de entrada reconhecimento de cena começa com um Observador de Cena, que é chamado pelo seu aplicativo para calcular uma nova cena. Hoje, a tecnologia pode gerar três categorias de objeto distintas, mas relacionadas:

  • Malhas de ambiente impermeáveis simplificadas que inferem a estrutura da sala planar sem desordem
  • Regiões de plano para posicionamento que chamamos de Quads
  • Um instantâneo da malha de mapeamento espacial que se alinha com os dados Quads/Watertight que apresentamos

Malha de mapeamento espacial, superfícies planares rotuladas, malha impermeável

Este documento destina-se a fornecer uma visão geral do cenário e esclarecer a relação que o Reconhecimento de cena e o mapeamento espacial compartilham. Se você quiser ver o Reconhecimento de Cena em ação, marcar nossa demonstração de vídeo Designing Holograms – Spatial Awareness abaixo:

Este vídeo foi obtido do aplicativo HoloLens 2 "Designing Holograms". Baixe-o e aproveite a experiência completa aqui.

Desenvolvendo com o Reconhecimento de Cena

Este artigo serve apenas para apresentar o runtime e os conceitos de Reconhecimento de Cena. Se você estiver procurando documentação sobre como desenvolver com o Reconhecimento de Cena, talvez esteja interessado nos seguintes artigos:

Visão geral do SDK de Reconhecimento de Cena

Você pode baixar o aplicativo de Exemplo de Reconhecimento de Cena no site do GitHub de exemplo:

Exemplo de reconhecimento de cena

Se você não tiver um dispositivo e quiser acessar cenas de exemplo para experimentar o Reconhecimento de Cena, há cenas na pasta de ativos de exemplo:

Cenas de exemplo de reconhecimento de cena

.

Se você estiver procurando detalhes específicos sobre o desenvolvimento com o Reconhecimento de Cena, consulte a documentação de visão geral do SDK de Reconhecimento de Cena .

Amostra

Suporte a dispositivos

Recurso HoloLens (1ª geração) HoloLens 2 Headsets imersivos
Reconhecimento de cena ✔️

Cenários de uso comuns

Ilustrações de cenários comuns de uso de mapeamento espacial: Posicionamento, Oclusão, Física e Navegação
Cenários comuns de uso de mapeamento espacial: posicionamento, oclusão, física e navegação.


Muitos dos principais cenários para aplicativos com reconhecimento ambiental podem ser abordados pelo mapeamento espacial e pelo reconhecimento de cena. Esses cenários principais incluem posicionamento, oclusão, física e assim por diante. Uma diferença central entre a compreensão da cena e o mapeamento espacial é uma compensação da precisão máxima e da latência para estrutura e simplicidade. Se o aplicativo exigir a menor latência possível e os triângulos de malha que somente você desejará acessar, use o Mapeamento Espacial diretamente. Se você estiver fazendo processamento de nível superior, considere alternar para o modelo de compreensão de cena, pois ele deve fornecer um superconjunto de funcionalidades. Você sempre terá acesso aos dados de mapeamento espacial mais completos e precisos possíveis porque o Reconhecimento de cena fornece uma instantâneo da malha de mapeamento espacial como parte de sua representação.

As seções a seguir revisitam os principais cenários de mapeamento espacial no contexto do novo SDK de reconhecimento de cena.

Posicionamento

A compreensão de cena fornece novos constructos projetados para simplificar cenários de posicionamento. Uma cena pode calcular primitivos chamados SceneQuads, que descrevem superfícies planas nas quais os hologramas podem ser colocados. SceneQuads foram projetados em torno do posicionamento e descrevem uma superfície 2D e fornecem uma API para posicionamento nessa superfície. Anteriormente, ao usar a malha de triângulo para fazer o posicionamento, era preciso examinar todas as áreas do quadrante e fazer preenchimento/pós-processamento de orifícios para identificar bons locais para posicionamento de objetos. Isso nem sempre é necessário com Quads, pois o runtime de reconhecimento de cena infere quais áreas quad não foram verificadas e invalidam áreas que não fazem parte da superfície.

SceneQuads com inferência desabilitada, capturando áreas de posicionamento para regiões verificadas.
Imagem nº 1 – SceneQuads com inferência desabilitada, capturando áreas de posicionamento para regiões verificadas.

Quads com inferência habilitada, o posicionamento não está mais limitado a áreas verificadas.
Imagem nº 2 – Quads com inferência habilitada, o posicionamento não está mais limitado a áreas verificadas.


Se seu aplicativo pretende colocar hologramas 2D ou 3D em estruturas rígidas do seu ambiente, a simplicidade e a conveniência de SceneQuads para posicionamento são preferíveis para calcular essas informações da malha de mapeamento espacial . Para obter mais informações sobre este tópico, consulte a Referência do SDK de reconhecimento de cena

Nota Para o código de posicionamento herdado que depende da malha de mapeamento espacial, a malha de mapeamento espacial pode ser computada junto com SceneQuads definindo a configuração EnableWorldMesh. Se a API de reconhecimento de cena não atender aos requisitos de latência do aplicativo, recomendamos que você continue a usar a API de mapeamento espacial.

Oclusão

A oclusão de mapeamento espacial continua sendo a maneira menos latente de capturar o estado em tempo real do ambiente. Embora isso possa ser útil para fornecer oclusão em cenas altamente dinâmicas, talvez você queira considerar a compreensão da cena para oclusão por vários motivos. Se você usar a malha de mapeamento espacial gerada pelo Reconhecimento de Cena, poderá solicitar dados do mapeamento espacial que não seriam armazenados no cache local e não estão disponíveis nas APIs de percepção. O uso do Mapeamento Espacial para oclusão junto com malhas impermeáveis fornecerá um valor extra, especificamente a conclusão da estrutura de sala não verificada.

Se seus requisitos puderem tolerar a maior latência do reconhecimento de cena, os desenvolvedores de aplicativos deverão considerar o uso da malha impermeável reconhecimento de cena e a malha de mapeamento espacial em uníssono com representações planares. Isso forneceria um cenário "o melhor dos dois mundos", onde a oclusão impermeável simplificada é casada com geometria nãoplanar mais fina, fornecendo os mapas de oclusão mais realistas possíveis.

Física

A compreensão de cena gera malhas impermeáveis que decompõem o espaço com semântica, especificamente para resolver muitas limitações à física impostas por malhas de mapeamento espacial. Estruturas impermeáveis garantem que as conversões de raios físicos sempre sejam atingidas, e a decomposição semântica permite uma geração mais simples de malhas de navegação para navegação interna. Conforme descrito na seção sobre oclusão, criar uma cena com EnableSceneObjectMeshes e EnableWorldMesh produzirá a malha mais fisicamente completa possível. A propriedade impermeável da malha do ambiente impede que os testes de clique não atinjam superfícies. Os dados de malha garantirão que a física interaja com todos os objetos na cena e não apenas com a estrutura da sala.

Malhas planares decompostas por classe semântica são constructos ideais para navegação e planejamento de caminho, facilitando muitos dos problemas descritos na visão geral da navegação de mapeamento espacial . Os objetos SceneMesh computados na cena são compostos por tipo de superfície, garantindo que a geração de malha de navegação seja limitada a superfícies que podem ser percedidas. Devido à simplicidade das estruturas de piso, a geração dinâmica de malha de navegação em mecanismos 3d, como o Unity, é alcançável dependendo dos requisitos em tempo real.

A geração de malhas de navegação precisas atualmente ainda requer pós-processamento, ou seja, os aplicativos ainda devem projetar ocluders no chão para garantir que a navegação não passe por desordem/tabelas e assim por diante. A maneira mais precisa de fazer isso é projetar os dados de malha do mundo, que serão fornecidos se a cena for computada com o sinalizador EnableWorldMesh.

Visualização

Embora a visualização de mapeamento espacial possa ser usada para comentários em tempo real do ambiente, há muitos cenários em que a simplicidade de objetos planar e impermeáveis fornece mais desempenho ou qualidade visual. A projeção de sombra e as técnicas de aterramento descritas usando o mapeamento espacial podem ser mais agradáveis se projetadas nas superfícies planares fornecidas pelo Quads ou pela malha impermeável planar. Isso é especialmente verdadeiro para ambientes/cenários em que a pré-verificação completa não é ideal porque a cena inferirá e ambientes completos e suposições planares minimizarão os artefatos.

Além disso, o número total de superfícies retornadas pelo Mapeamento Espacial é limitado pelo cache espacial interno, enquanto a versão do Reconhecimento de cena da malha de Mapeamento Espacial pode acessar dados de mapeamento espacial que não estão armazenados em cache. Por isso, a compreensão de cena é mais adequada para capturar representações de malha para espaços maiores (por exemplo, maiores que uma única sala) para visualização ou processamento de malha adicional. A malha mundial retornada com EnableWorldMesh terá um nível consistente de detalhes por toda parte, o que pode produzir uma visualização mais agradável se renderizada como wireframe.

Consulte Também