Bloqueio mundial e âncoras espaciais no Unity

Imagem de herói das ferramentas de bloqueio do mundo

Fazer com que seus hologramas permaneçam no lugar, se movam com você ou, em alguns casos, posicionem-se em relação a outros hologramas é uma grande parte da criação de aplicativos Realidade Misturada. Este artigo levará você pela nossa solução recomendada usando o World Locking Tools, 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 as âncoras em seu próprio mecanismo.

Sistemas de coordenadas de 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 do mundo absoluto para o qual todas as outras coordenadas podem ser mapeadas 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 sempre permaneceriam as mesmas. Esse tipo de sistema de coordenadas global é fácil de acertar ao renderizar um mundo puramente virtual em que você conhece toda a geometria com antecedência. Os aplicativos VR em escala de sala hoje normalmente estabelecem esse tipo de sistema de coordenadas de escala de sala absoluta com sua origem no chão.

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

Por exemplo, o fone de ouvido pode acreditar atualmente que dois locais no mundo têm 4 metros de distância e, em seguida, 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 for móvel. No entanto, isso sacrifica a auto-consistência dentro do mundo virtual. Âncoras diferentes estão constantemente se movendo em relação umas às outras e também estão se movendo pelo espaço de coordenadas global. Nesse cenário, tarefas simples como layout se tornam difíceis. A simulação física também pode ser problemática.

O WLT (World Locking Tools) obtém o melhor dos dois mundos, estabilizando um único sistema de coordenadas rígidas usando um fornecimento interno de âncoras espaciais espalhadas pela 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 do cabeçalho.

Escolha sua abordagem de bloqueio do mundo

Se possível, use o World Locking Tools para posicionamento de holograma.

O World Locking Tools fornece um sistema de coordenadas estável que minimiza as inconsistências visíveis entre marcadores virtuais e do mundo real. O World Locking Tools bloqueia a cena inteira com um pool compartilhado de âncoras, em vez de bloquear cada grupo de objetos com a âncora individual do grupo.

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

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

Configurar o bloqueio do mundo

Para começar a usar o World Locking Tools, baixe o Realidade Misturada Feature Tool. Para saber mais sobre as noções básicas, consulte a página de documentação main 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 para ser executado, execute o utilitário configurar cena do Realidade Misturada > World Locking Tools:

Editor do Unity com o menu kit de ferramentas Realidade Misturada 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 de mundo persistente

Âncoras espaciais salvam hologramas no espaço real entre sessões de 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 conflitos. 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, o World Locking Tools restaura 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 lugar 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 fino, você poderá desabilitar Salvamento Automático e Carregamento Automático no inspetor e gerenciar a persistência de um script. Para obter mais informações, consulte Persistir sistemas de coordenadas espaciais.

O World Locking Tools dá 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 o World Locking Tools com âncoras espaciais do Azure, consulte WLT (World Locking Tools) combinado com ASA (Âncoras Espaciais do Azure).

Próximas etapas

Compartilhe um espaço de coordenadas bloqueado pelo mundo:

Saiba mais sobre o mapeamento espacial:

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

Confira também