Bloqueio mundial e âncoras espaciais no Unity

Imagem de herói de ferramentas de bloqueio mundial

Fazer com que seus hologramas permaneçam no lugar, se movam com você ou, em alguns casos, se posicionem em relação a outros hologramas é uma grande parte da criação de aplicativos de Realidade Misturada. Este artigo mostrará nossa solução recomendada usando as Ferramentas de Bloqueio Mundial, mas também abordaremos a configuração manual de âncoras espaciais em seus projetos do Unity. Antes de entrarmos em qualquer código, é importante entender como o Unity lida com o espaço de coordenadas e âncoras em seu próprio mecanismo.

Sistemas de coordenadas em escala mundial

Hoje, ao escrever jogos, aplicativos de visualização de dados ou aplicativos de realidade virtual, a abordagem típica é estabelecer um sistema de coordenadas mundial absoluto para o qual todas as outras coordenadas possam mapear de forma confiável. Nesse ambiente, você sempre pode encontrar uma transformação estável que define uma relação entre dois objetos nesse mundo. Se você não movesse esses objetos, suas transformações relativas permaneceriam sempre as mesmas. Esse tipo de sistema de coordenadas global é fácil de acertar ao renderizar um mundo puramente virtual onde você conhece toda a geometria com antecedência. Os aplicativos de RV em escala de sala hoje normalmente estabelecem esse tipo de sistema de coordenadas absoluto em escala de sala com sua origem no chão.

Por outro lado, um dispositivo de realidade misturada sem restrições, como o HoloLens, tem uma compreensão dinâmica do mundo orientada por sensores, ajustando continuamente seu conhecimento ao longo do tempo sobre os arredores do usuário à medida que ele caminha muitos metros por um andar inteiro de um edifício. Em uma experiência em escala mundial, se você colocasse todos os seus hologramas em um sistema de coordenadas rígido ingênuo, esses hologramas acabariam se desviando ao longo do tempo, com base no mundo ou em relação uns aos outros.

Por exemplo, o fone de ouvido pode atualmente acreditar que dois locais no mundo estão a 4 metros de distância e, posteriormente, refinar esse entendimento, aprendendo que os locais estão de fato a 3,9 metros de distância. Se esses hologramas tivessem sido inicialmente colocados a 4 metros de distância em um único sistema de coordenadas rígidas, um deles sempre apareceria a 0,1 metros do mundo real.

Você pode colocar manualmente âncoras espaciais no Unity para manter a posição de um holograma no mundo físico quando o usuário é móvel. No entanto, isso sacrifica a autoconsistência dentro do mundo virtual. Diferentes âncoras estão constantemente se movendo em relação umas às outras e também estão se movendo através do espaço de coordenadas global. Nesse cenário, tarefas simples como layout tornam-se difíceis. A simulação de física também pode ser problemática.

O World Locking Tools (WLT) oferece o melhor dos dois mundos, estabilizando um único sistema de coordenadas rígidas usando um suprimento interno de âncoras espaciais espalhadas por toda a cena virtual à medida que o usuário se move. O WLT analisa as coordenadas da câmera e essas âncoras espaciais a cada quadro. Em vez de alterar as coordenadas de tudo no mundo para compensar as correções nas coordenadas da cabeça do usuário, o WLT apenas corrige as coordenadas da cabeça.

Escolha sua abordagem de bloqueio mundial

Se possível, use as Ferramentas de Bloqueio Mundial para posicionamento do holograma.

As ferramentas de bloqueio mundial fornecem um sistema de coordenadas estável que minimiza as inconsistências visíveis entre os marcadores do mundo virtual e real. As Ferramentas de Bloqueio Mundial bloqueiam toda a cena com um conjunto compartilhado de âncoras, em vez de bloquear cada grupo de objetos com a própria âncora individual do grupo.

O World Locking Tools lida automaticamente com a criação e o gerenciamento internos de âncoras espaciais. Você não precisa interagir com ARAnchorManager ou WorldAnchor para manter seus hologramas bloqueados pelo mundo.

  • Para o Unity 2019/2020 usando o OpenXR ou o plug-in do Windows XR, use ARAnchorManager.
  • Para versões mais antigas do Unity ou projetos WSA, use o WorldAnchor.

Configurar o bloqueio mundial

Para começar a usar as Ferramentas de Bloqueio Mundial, baixe a Ferramenta de Recursos de Realidade Misturada. Para saber mais sobre as noções básicas, consulte a página principal da documentação do World Locking Tools para obter links para Visão geral, Início rápido e outros tópicos úteis.

Configuração automática

Quando o projeto estiver pronto, execute o utilitário de configuração de cena de Realidade > Misturada Ferramentas de Bloqueio Mundial:

Editor do Unity com o menu Realidade Misturada Toolkit selecionado

Importante

O utilitário Configurar cena pode ser reexecutado a qualquer momento. Por exemplo, ele deverá ser reexecutado se o destino de RA tiver sido alterado de Herdado para SDK do XR. Se a cena já estiver configurada corretamente, a execução do utilitário não terá efeito.

Visualizadores

Durante o desenvolvimento inicial, a adição de visualizadores pode ser útil para garantir que o WLT esteja configurado e funcionando corretamente. Eles podem ser removidos para desempenho de produção ou, se por algum motivo não forem mais necessários, usando o utilitário Remover visualizadores. Mais detalhes sobre os visualizadores podem ser encontrados na documentação de Ferramentas.

Bloqueio mundial persistente

As âncoras espaciais salvam hologramas no espaço do mundo real entre as sessões do aplicativo. Depois de salvas no repositório de âncoras do HoloLens, as âncoras espaciais podem ser encontradas e carregadas em sessões diferentes e são um fallback ideal quando não há conectividade com a Internet.

Importante

As âncoras locais são armazenadas no dispositivo, enquanto as Âncoras Espaciais do Azure são armazenadas na nuvem. Você pode ter âncoras locais e do Azure no mesmo projeto sem conflito. Para obter mais informações sobre como integrar os serviços de nuvem do Azure para armazenar suas âncoras, consulte Âncoras Espaciais do Azure.

Por padrão, as Ferramentas de Bloqueio Mundial restauram o sistema de coordenadas do Unity em relação ao mundo físico em sessões em dispositivos que dão suporte à persistência de âncoras espaciais locais. Para que um holograma apareça no mesmo local no mundo físico depois de sair e executar novamente o aplicativo, o aplicativo só precisa restaurar a mesma pose para o holograma.

Componente de contexto de bloqueio mundial no inspetor do Unity

Se o aplicativo precisar de um controle mais preciso, você poderá desabilitar o Salvamento Automático e o Carregamento Automático no inspetor e gerenciar a persistência de um script. Para obter mais informações, consulte Persistir sistemas de coordenadas espaciais.

As Ferramentas de Bloqueio Mundial dão suporte à persistência de âncora local somente em dispositivos HoloLens. Para dispositivos Android, iOS e HoloLens, integre-se às Âncoras Espaciais do Azure para dar suporte à persistência e ao compartilhamento de espaços de coordenadas entre sessões e dispositivos. Para obter mais informações e exemplos usando as Ferramentas de Bloqueio Mundial com as Âncoras Espaciais do Azure, consulte WLT (Ferramentas de Bloqueio Mundial) combinadas com as Âncoras Espaciais do Azure (ASA).

Próximas etapas

Compartilhar um espaço de coordenadas bloqueado pelo mundo:

Saiba mais sobre mapeamento espacial:

Volte para os pontos de verificação de desenvolvimento do Unity:

Confira também