Compreensão da cena

A compreensão de cenários fornece aos programadores Mixed Reality uma representação estruturada e de alto nível de ambiente concebida para tornar intuitivo o desenvolvimento de aplicações com conhecimento ambiental. A compreensão da cena faz isto ao combinar o poder dos runtimes de realidade mista existentes, como o mapeamento espacial altamente preciso, mas menos estruturado, e os novos runtimes orientados para IA. Ao combinar estas tecnologias, a Compreensão do cenário gera representações de ambientes 3D semelhantes aos que pode ter utilizado em arquiteturas como o Unity ou o ARKit/ARCore. O ponto de entrada Compreender a cena começa com um Observador de Cena, que é chamado pela sua aplicação para calcular uma nova cena. Atualmente, a tecnologia pode gerar 3 categorias de objetos distintas mas relacionadas:

  • Malhas de ambiente estanque simplificadas que inferem a estrutura da sala planar sem desordem
  • Regiões de plano para colocação a que chamamos Quads
  • Um instantâneo da malha de mapeamento espacial que se alinha com os dados Quads/Estanques que apresentamos

Malha de mapeamento espacial, superfícies planar etiquetadas, malha estanque

Este documento destina-se a fornecer uma descrição geral do cenário e a clarificar a relação que a Compreensão da cena e a partilha de mapeamento espacial. Se quiser ver o Scene Understanding em ação, consulte a nossa demonstração de vídeo Designing Holograms - Spatial Awareness abaixo:

Este vídeo foi retirado da aplicação "Designing Holograms" HoloLens 2. Transfira e desfrute da experiência completa aqui.

Desenvolver com o Scene Understanding

Este artigo serve apenas para introduzir o runtime e os conceitos do Scene Understanding. Se estiver à procura de documentação sobre como desenvolver com o Scene Understanding, poderá estar interessado nos seguintes artigos:

Descrição geral do SDK do Scene Understanding

Pode transferir a aplicação Exemplo do Scene Understanding a partir do site do GitHub de exemplo:

Exemplo de Compreensão de Cenários

Se não tiver um dispositivo e quiser aceder a cenas de exemplo para experimentar a Compreensão do Cenário, existem cenas na pasta de recursos de exemplo:

Cenas de Exemplo de Compreensão de Cenas

SDK

Se estiver à procura de detalhes específicos sobre o desenvolvimento com o Scene Understanding, veja a documentação de descrição geral do SDK Do Scene Understanding .

Sample

Suporte de dispositivos

Funcionalidade HoloLens (1.ª geração) HoloLens 2 Auscultadores envolventes
Compreensão da cena ✔️

Cenários comuns de utilização

Ilustrações de cenários comuns de utilização de mapeamento espacial: Colocação, Oclusão, Física e Navegação
Cenários comuns de utilização do mapeamento espacial: colocação, oclusão, física e navegação.


Muitos dos principais cenários para aplicações conscientes do ambiente podem ser abordados pelo mapeamento espacial e pela compreensão da cena. Estes cenários principais incluem colocação, oclusão, física, etc. Uma diferença fundamental entre a compreensão da cena e o mapeamento espacial é uma troca de precisão máxima e latência para estrutura e simplicidade. Se a sua aplicação necessitar da latência mais baixa possível e dos triângulos de malha a que apenas pretende aceder, utilize o Mapeamento Espacial diretamente. Se estiver a fazer um processamento de nível superior, poderá considerar mudar para o modelo Deteção de Cenários, uma vez que deve fornecer-lhe um superconjunto de funcionalidades. Terá sempre acesso aos dados de mapeamento espacial mais completos e precisos possíveis, uma vez que a Compreensão da cena fornece um instantâneo da malha de mapeamento espacial como parte da sua representação.

As secções seguintes revisitam os principais cenários de mapeamento espacial no contexto do novo SDK de compreensão de cenários.

Posicionamento

A compreensão de cenários fornece novas construções concebidas para simplificar cenários de colocação. Uma cena pode calcular primitivos chamados SceneQuads, que descrevem superfícies planas nas quais os hologramas podem ser colocados. Os SceneQuads foram concebidos em torno da colocação e descrevem uma superfície 2D e fornecem uma API para colocação nessa superfície. Anteriormente, ao utilizar a malha triângulo para fazer o posicionamento, era preciso analisar todas as áreas do quad e fazer o preenchimento/pós-processamento de buracos para identificar boas localizações para colocação de objetos. Isto nem sempre é necessário com Quads, pois a compreensão do tempo de execução da Cena infere que áreas quad não foram analisadas e invalida áreas que não fazem parte da superfície.

SceneQuads com inferência desativada, capturando áreas de colocação para regiões analisadas.
Imagem n.º 1 - SceneQuads com inferência desativada, capturando áreas de colocação para regiões analisadas.

Quads com inferência ativada, o posicionamento já não está limitado a áreas analisadas.
Imagem n.º 2 - Quads com inferência ativada, o posicionamento já não está limitado a áreas analisadas.


Se a sua aplicação pretender colocar hologramas 2D ou 3D em estruturas rígidas do seu ambiente, a simplicidade e conveniência do SceneQuads para colocação é preferível à computação destas informações a partir da malha de mapeamento espacial . Para obter mais informações sobre este tópico, veja a referência do SDK de compreensão de cenários

Nota Para o código de colocação legado que depende da malha de mapeamento espacial, a malha de mapeamento espacial pode ser calculada juntamente com SceneQuads ao definir a definição EnableWorldMesh. Se a API de compreensão de cenários não satisfizer os requisitos de latência da sua aplicação, recomendamos que continue a utilizar a API de mapeamento espacial.

Oclusão

A oclusão de mapeamento espacial continua a ser a forma menos latente de capturar o estado em tempo real do ambiente. Embora isto possa ser útil para fornecer oclusão em cenas altamente dinâmicas, pode considerar a Compreensão da cena para oclusão por vários motivos. Se utilizar a malha de mapeamento espacial gerada pelo Scene Understanding, pode pedir dados do mapeamento espacial que não seriam armazenados na cache local e não estão disponíveis a partir das APIs de perceção. A utilização do Mapeamento Espacial para oclusão juntamente com malhas estanques proporcionará um valor extra, especificamente a conclusão de uma estrutura de sala não estranha.

Se os seus requisitos puderem tolerar o aumento da latência da compreensão do Cenário, os programadores de aplicações devem considerar a utilização da malha estanque Cena e a malha de mapeamento espacial em uníssono com representações planar. Isto proporcionaria um cenário "o melhor de ambos os mundos" em que a oclusão estanque simplificada é casada com geometria nãoplanar mais fina, fornecendo os mapas de oclusão mais realistas possíveis.

Física

A compreensão da cena gera malhas estanques que decompõem o espaço com semântica, especificamente para abordar muitas limitações à física que as malhas de mapeamento espacial impõem. As estruturas estanques garantem que os raios físicos são sempre atingidos, e a decomposição semântica permite uma geração mais simples de malhas de navegação para navegação interior. Conforme descrito na secção sobre oclusão, a criação de uma cena com EnableSceneObjectMeshes e EnableWorldMesh produzirá a malha mais completa fisicamente possível. A propriedade estanque da malha do ambiente impede que os testes de êxito não atinjam as superfícies. Os dados de malha garantirão que a física está a interagir com todos os objetos na cena e não apenas com a estrutura da sala.

As malhas planares decompostas por classe semântica são construções ideais para o planeamento de navegação e caminho, facilitando muitos dos problemas descritos na descrição geral da navegação de mapeamento espacial . Os objetos SceneMesh calculados na cena são compostos por tipo de superfície, garantindo que a geração de malha de navegação está limitada a superfícies que podem ser andadas. Devido à simplicidade das estruturas de piso, a geração dinâmica de malha de navegação em motores 3D, como o Unity, é alcançável consoante os requisitos em tempo real.

A geração de malhas de navegação precisas ainda requer pós-processamento, ou seja, as aplicações ainda têm de projetar oclusões no chão para garantir que a navegação não passa por correio secundário/tabelas e assim sucessivamente. A forma mais precisa de o fazer é projetar os dados de malha mundial, que são fornecidos se a cena for calculada com o sinalizador EnableWorldMesh.

Visualização

Embora a visualização de mapeamento espacial possa ser utilizada para feedback em tempo real do ambiente, existem muitos cenários em que a simplicidade dos objetos planar e estanques proporciona mais desempenho ou qualidade visual. As técnicas de projeção sombra e de terra descritas com o mapeamento espacial podem ser mais agradáveis se forem projetadas nas superfícies planar fornecidas por Quads ou pela malha estanque planar. Isto é especialmente verdade para ambientes/cenários em que a pré-análise completa não é ideal porque a cena irá inferir, e ambientes completos e pressupostos planar minimizarão os artefactos.

Além disso, o número total de superfícies devolvidas pelo Mapeamento Espacial é limitado pela cache espacial interna, enquanto a versão do Scene Understanding da malha de Mapeamento Espacial pode aceder a dados de mapeamento espacial que não estão em cache. Por este motivo, a compreensão da cena é mais adequada para capturar representações de malha para espaços maiores (por exemplo, maiores do que uma única sala) para visualização ou processamento de malha adicional. A malha mundial devolvida com EnableWorldMesh terá um nível consistente de detalhes ao longo de todo, o que pode produzir uma visualização mais agradável se for composta como wireframe.

Consulte também