Partilhar via


Bloqueio do mundo e âncoras espaciais em Unity

Imagem do 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, se posicionem em relação a outros hologramas é uma grande parte da criação de aplicativos de Realidade Mista. Este artigo irá guiá-lo através de nossa solução recomendada usando World Locking Tools, mas também abordaremos a configuração manual de âncoras espaciais em seus projetos Unity. Antes de entrarmos em qualquer código, é importante entender como Unity lida com o espaço de coordenadas e âncoras em seu próprio mecanismo.

Sistemas de coordenadas à 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 possam ser mapeadas de forma confiável. Nesse ambiente, você sempre pode encontrar uma transformação estável que define uma relação entre quaisquer dois objetos nesse mundo. Se você não movesse esses objetos, suas transformações relativas permaneceriam sempre as mesmas. Este tipo de sistema de coordenadas globais é fácil de acertar ao renderizar um mundo puramente virtual onde você conhece toda a geometria com antecedência. Hoje em dia, os aplicativos de RV em escala de sala 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 mista sem amarras como o HoloLens tem uma compreensão dinâmica do mundo orientada por sensores, ajustando continuamente seu conhecimento ao longo do tempo dos arredores do usuário enquanto 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ígidas ingênuas, esses hologramas acabariam flutuando 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, mais tarde, refinar esse entendimento, aprendendo que os locais estão, na verdade, 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 apareceria sempre a 0,1 metro de distância 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 estiver 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 globais. Nesse cenário, tarefas simples como layout tornam-se difíceis. A simulação física também pode ser problemática.

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 movimenta. WLT analisa as coordenadas da câmera e essas âncoras espaciais 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 fixa as coordenadas da cabeça.

Escolha a sua abordagem de bloqueio do mundo

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

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

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

  • Para 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 mundial

Para começar a usar as World Locking Tools, baixe a Mixed Reality Feature Tool. Para saber mais sobre as noções básicas, consulte a página principal de documentação das Ferramentas de Bloqueio Mundial para obter links para Visão geral, Guia de início rápido e outros tópicos úteis.

Configuração automatizada

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

Editor Unity com menu Mixed Reality Toolkit selecionado

Importante

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

Visualizadores

Durante o desenvolvimento inicial, 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 qualquer 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

As âncoras espaciais economizam hologramas no espaço do mundo real entre as sessões de aplicativos. Uma vez guardadas na loja de âncoras HoloLens, as âncoras espaciais podem ser encontradas e carregadas em diferentes sessões 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 suportam a 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 Unity

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

O World Locking Tools suporta persistência de âncora local apenas em dispositivos HoloLens. Para dispositivos Android, iOS e HoloLens, integre-se com as Â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 Âncoras Espaciais do Azure, consulte Ferramentas de Bloqueio Mundial (WLT) combinadas com Âncoras Espaciais do Azure (ASA).

Próximos passos

Partilhe um espaço de coordenadas bloqueado no mundo:

Saiba mais sobre mapeamento espacial:

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

Consulte também