Bloqueios mundiais e âncoras espaciais no Unity

Imagem do herói das ferramentas de bloqueio mundial

Fazer com que seus hologramas permaneçam em vigor, mover-se para você ou, em alguns casos, posicioná-los em relação a outros hologramas é uma grande parte da criação de aplicativos de realidade misturada. Este artigo o guiará pela solução recomendada usando as ferramentas de bloqueio mundial, mas também abordaremos a configuração manual das âncoras espaciais em seus projetos do Unity. Antes de passarmos por 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 em dia, 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 que todas as outras coordenadas possam Mapear de forma confiável de volta para o. 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 moveu esses objetos, suas transformações relativas sempre permanecerão as mesmas. Esse tipo de sistema de coordenadas global é fácil de ser adequado ao renderizar um mundo puramente virtual em que você conhece toda a geometria com antecedência. Atualmente, os aplicativos VR em escala de sala normalmente estabelecem esse tipo de sistema de coordenadas de escala de sala absoluto com sua origem no chão.

por outro lado, um dispositivo de realidade misturada sem compartilhamento de internet, como o HoloLens, tem uma compreensão dinâmica orientada por sensor do mundo, ajustando continuamente seu conhecimento ao longo do tempo do ambiente do usuário à medida que eles orientam muitos medidores em todo um andar de um edifício. Em uma experiência de escala mundial, se você colocou todos os seus hologramas em um sistema de coordenadas rígidos ingênuas, esses hologramas acabarão se esgotando ao longo do tempo, seja com base no mundo ou em relação uns aos outros.

Por exemplo, o headset pode acreditar, no momento, que dois locais do mundo tenham 4 metros de distância e depois refinam essa compreensão, aprendendo que os locais estão na verdade 3,9 metros de distância. Se esses hologramas tiverem sido inicialmente colocados quatro metros de distância em um único sistema de coordenadas rígidos, um deles sempre pareceria de 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, mas isso sacrifica a autoconsistência no mundo virtual. Âncoras diferentes estão constantemente mudando em relação umas às outras e também estão passando pelo espaço de coordenadas global. Nesse cenário, tarefas simples, como layout, tornam-se difíceis e problemas de simulação de física.

As ferramentas de bloqueio mundial oferecem o melhor dos dois mundos, estabilizando um único sistema de coordenadas rígidos usando um fornecimento interno de âncoras espaciais espalhados por toda a cena virtual à medida que o usuário se movimenta. As ferramentas analisam as coordenadas da câmera e as âncoras espaciais a cada quadro. Em vez de alterar as coordenadas de tudo no mundo para compensar as correções nas coordenadas do cabeçalho do usuário, as ferramentas simplesmente corrigem as coordenadas da cabeça.

Escolhendo sua abordagem de bloqueio mundial

  • Recomendamos que você use ferramentas de bloqueio mundial para todas as suas necessidades de posicionamento de holograma.
    • As ferramentas de bloqueio Mundial fornecem um sistema de coordenadas estável que minimiza as inconsistências visíveis entre marcadores virtuais e do mundo real. Em outras palavras, o mundo de ti 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.
    • As ferramentas de bloqueio mundial manipulam automaticamente toda a criação e o gerenciamento de âncoras espaciais internamente. Você não precisa interagir com ARAnchorManager ou WorldAnchor para manter seus hologramas protegidos pelo mundo.
  • para o Unity 2019/2020 usando OpenXR ou o plug-in Windows XR, você precisa usar ARAnchorManager
  • Para versões mais antigas do Unity ou projetos de WSA, você precisa usar o WorldAnchor

Configurando o bloqueio mundial

Recomendamos instalar as ferramentas de bloqueio mundial usando a nova ferramenta de funcionalidade de realidade misturada. Depois de baixar a ferramenta de recurso de realidade misturada do link abaixo, selecione a versão mais recente do WLT Core na seção de ferramentas de bloqueio mundial :

Janela de seleção de recursos da ferramenta de recurso de realidade misturada com ferramentas de bloqueio mundial selecionadas

Configuração automatizada

Quando seu projeto estiver pronto, execute o utilitário configurar cena de realidade misturada > World Lock Tools:

editor Unity com realidade misturada Toolkit menu selecionado

Importante

O utilitário configurar cena pode ser executado novamente a qualquer momento. Por exemplo, ele deve ser executado novamente se o destino AR tiver sido alterado de herdado para o SDK do XR. Se a cena já estiver configurada corretamente, a execução do utilitário não terá nenhum 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 o 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 mundial persistente

Âncoras espaciais salvam hologramas em espaço real entre as sessões do aplicativo. depois de salvo no repositório de ancoragem do HoloLens, eles podem ser encontrados e carregados em diferentes sessões e são um fallback ideal quando não há conectividade com a internet.

Importante

Elas são armazenadas no dispositivo, enquanto as Âncoras Espaciais do Azure são armazenadas na nuvem. Se você pretende usar os serviços de nuvem do Azure para armazenar suas âncoras, temos um documento que pode orientar você na integração das Âncoras Espaciais do Azure. Você pode ter âncoras locais e do Azure no mesmo projeto sem conflitos.

Por padrão, as Ferramentas de Bloqueio Mundial restaurarão o sistema de coordenadas do Unity em relação ao mundo físico em sessões em dispositivos que suportam 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 holograma só precisa ter a mesma pose novamente.

Componente de contexto de bloqueio mundial no inspetor do Unity

Se o aplicativo precisar de um controle mais fino, o Auto-Save e o Carregamento Automático poderão ser desabilitados no inspetor e a persistência gerenciada de um script, conforme descrito na seção persistência da documentação.

Atualmente, a persistência de âncora local só tem suporte na HoloLens de dispositivos. No entanto, no Android e no iOS, bem como no HoloLens, a persistência de espaços de coordenadas entre sessões, bem como o compartilhamento de espaços de coordenadas entre dispositivos, tem suporte por meio de uma integração com âncoras espaciais do Azure. Há uma grande quantidade de informações adicionais e exemplos de uso das Ferramentas de Bloqueio Mundial em tandem com as Âncoras Espaciais do Azure.

Compartilhando espaços de coordenadas

Se você quiser compartilhar um espaço de coordenadas do mundo bloqueado, Confira nossa documentação abrangente de experiência compartilhada.

Próximo ponto de verificação de desenvolvimento

Se você estiver seguindo a jornada do ponto de verificação de desenvolvimento do Unity que apresentamos, você está no meio da exploração dos principais blocos de construção da realidade misturada. Deste ponto, você pode prosseguir para o próximo bloco de construção:

Ou vá diretamente para as funcionalidades e APIs da plataforma de Realidade Misturada:

Você sempre pode voltar para os pontos de verificação de desenvolvimento do Unity a qualquer momento.

Consulte Também