Bloqueio mundial e âncoras espaciais no Unity

World locking tools hero image

Fazer com que seus hologramas permaneçam no local, 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ê por meio de 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 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 de 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 os 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 em escala de sala absoluta com sua origem no chão.

Em contraste, um dispositivo de realidade misturada sem amarras, como 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 seus hologramas em um sistema de coordenadas rígido ingênuo, esses hologramas acabariam à deriva 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 estejam a 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 âncoras espaciais manualmente 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 de 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 da cabeça.

Escolha sua abordagem de bloqueio do mundo

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

As Ferramentas de Bloqueio do Mundo fornecem um sistema de coordenadas estável que minimiza as inconsistências visíveis entre marcadores virtuais e do mundo real. As Ferramentas de Bloqueio do Mundo bloqueiam a cena inteira com um pool compartilhado de âncoras, em vez de bloquear cada grupo de objetos com a própria â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 o OpenXR ou o plug-in 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 as Ferramentas de Bloqueio do Mundo, baixe a Ferramenta de Recurso Realidade Misturada. Para saber mais sobre as noções básicas, consulte a página principal da documentação das Ferramentas de Bloqueio do Mundo 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 de cena de configuração do Realidade Misturada > World Locking Tools:

Unity editor with Mixed Reality Toolkit menu selected

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 antecipado, adicionar 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 persistente do mundo

Âncoras espaciais salvam hologramas no espaço real entre sessões de aplicativo. Depois de salvas no repositório de âncoras 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, 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 lugar no mundo físico depois de sair e executar novamente o aplicativo, o aplicativo só precisa restaurar a mesma pose para o holograma.

World locking context component in Unity inspector

Se o aplicativo precisar de um controle mais fino, 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 Manter sistemas de coordenadas espaciais.

O World Locking Tools dá suporte à persistência de âncora local apenas 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 as AsA (Âncoras Espaciais do Azure).

Próximas etapas

Compartilhar 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