Ferramentas e visualizadores

As ferramentas e visualizadores no namespace Microsoft.MixedReality.WorldLocking.Tools são indicados para ajudar durante o desenvolvimento. Eles também podem ser um ponto de partida para interação direta avançada com o sistema WLT (World Locking Tools).

Embora eles não sejam indicados para o uso direto como estão em um aplicativo, o desenvolvedor de aplicativos pode optar por fazê-lo.

O WorldLocking.Core é indicado para funcionar como está em qualquer cenário de aplicativo apropriado. No entanto, as Ferramentas podem fazer pressuposições sobre o aplicativo. Essas pressuposições podem torná-las inadequadas em algumas situações.

Antes de incorporar qualquer uma das ferramentas diretamente em seu aplicativo de envio, crie uma versão dessa ferramenta personalizada de acordo com seus próprios requisitos e recursos.

Ferramentas

Ajustadores

Os ajustadores são componentes que lidam com os eventos de reajuste. Especificamente, eles criam os Pontos de Anexo. No caso de uma operação de reajuste, o AttachmentPoint atua como um retorno de chamada de notificação. O Ajustador lida com esse evento adequadamente.

Confira mais uma discussão conceitual sobre os AttachmentPoints.

A reação correta exata a um evento de reajuste varia de acordo com diferentes tipos de objetos e é muito específica do aplicativo. Por exemplo, se o Fragmento do objeto estiver inativo no momento, o objeto deverá ser exibido? Para alguns aplicativos, como o posicionamento adequado do objeto não pode ser determinado, ele deve ficar oculto. Para outros aplicativos, pode ser melhor exibir o objeto em uma pose temporariamente incorreta do que sofrer a confusão de seu desaparecimento. E mesmo para aplicativos que devem ocultar o objeto, há várias maneiras de executar a ocultação (por exemplo, desabilitar versus afastar).

Os componentes AdjusterFixed e AdjusterMoving lidam minimamente com dois cenários comuns.

Em geral, o componente AdjusterFixed pressupõe que seu destino não é móvel. Se o World Locking Tools enviar uma pose de ajuste devido a um evento de reajuste, ela é indicada para manter o objeto do AdjusterFixed estacionário no mundo.

Por outro lado, o componente AdjusterMoving pressupõe que seu destino é móvel por meio do espaço de coordenadas do Unity. Ele mantém o sistema World Locking Tools ciente da localização de seu destino, de modo que, no caso de uma operação de reajuste, o sistema possa fornecer a correção mais precisa para manter a posição do destino em relação ao mundo físico constante naquele momento.

Adaptadores

Os componentes do Adaptador são indicados apenas para fins de ilustração. Se você estiver usando um dos Adaptadores, provavelmente deve repensar a maneira como está tentando usar o World Locking Tools.

Especificamente, o MRTK já possui adaptadores integrados, portanto, o aplicativo não precisa de transformações adicionais do sistema de coordenadas.

Pode haver ocasiões, especialmente se não estiver usando o MRTK, quando a conversão de recursos nativos, que relatará em coordenadas do Espaço Esponjoso para o Espaço Congelado. Nesses casos, o desenvolvedor de aplicativos pode achar que um dos Adaptadores incluídos aqui é uma boa referência.

  • WorldAnchorAdapter – Um WorldAnchor ajustará a pose de um objeto no espaço Esponjoso para permanecer fixo no espaço físico. Isso é redundante no espaço com bloqueio de mundo fornecido pelo World Locking Tools e, portanto, o objeto apresentará um descompasso no Espaço Congelado. Esse adaptador permite que um WorldAnchor mantenha a pose de um objeto no Espaço Congelado. Isso é desnecessário, exceto para diagnóstico. Todos os objetos no espaço de coordenadas global do Unity recebem um bloqueio de mundo do World Locking Tools.

  • ToggleWorldAnchor – Semelhante ao WorldAnchorAdapter, mas pode ser alternado. Também é convertido automaticamente no comportamento normal do WorldAnchor, quando o WorldLockingManager está desabilitado. Útil somente para diagnóstico.

  • FrozenSpatialMapping – Um adaptador gerencia e renderiza corretamente os resultados de um SurfaceObserver. O sistema de Reconhecimento Espacial do MRTK fornece toda essa funcionalidade e muito mais, e não requer adaptadores para trabalhar com o World Locking Tools.

  • FrozenTapToAdd – A interface direta com o sistema de Entrada do Unity requer a conversão dos dados de coordenada de entrada, conforme mostrado aqui. Isso é desnecessário com o sistema de entrada do MRTK.

Visualizadores

Visualização do Grafo de Âncoras

O AnchorGraphVisual e seu prefab associado são o núcleo das visualizações fornecidas. As partes do componente são as seguinte:

  1. Eixos – As poses atuais para as origens do Espaço Esponjoso (verde) e do Espaço Congelado (azul) são mostradas como identificadores de eixo de 3 setas padrão.

  2. Âncoras Esponjosas – Estas são as âncoras subjacentes nativas criadas para alimentar a otimização do Frozen World Engine. Cada uma é representada por um anel, juntamente com uma marca de texto que a identifica. Além disso, mais informações são transmitidas por cor e tamanho.

    • Uma âncora rastreada ativa será verde.

    • Uma âncora rastreada sem relevância será vermelha.

    • Uma âncora sem suporte será amarela.

    • Quanto maior o anel, maior a relevância dessa âncora.

  3. Âncoras Congeladas – Estes são os pontos de referência correspondentes no Espaço Congelado. Na ausência de erro do rastreador, elas serão alinhadas exatamente com as Âncoras Esponjosas.

  4. Bordas Esponjosas Congeladas – Elas conectam as Âncoras Esponjosas às Âncoras Congeladas correspondentes. Como na ausência de erro do rastreador, isso seria coincidente, não ver essas bordas significa que tudo está funcionando perfeitamente. Em todo caso, essas bordas não devem ter mais do que alguns centímetros. Elas são vermelhas na extremidade congelada. A cor esmaece para azul na extremidade esponjosa.

  5. Bordas de Âncora – Estas linhas finas cinza-azuladas mostram as conexões entre as Âncoras Esponjosas no Grafo de Âncoras.

Grafo de âncora típico atravessando uma sala

Para habilitar a exibição do Grafo de Âncoras gerado pelo World Locking Tools, à medida que o usuário se move pelo ambiente físico, basta remover o prefab AnchorGraphVisual dos >Prefabs> do WorldLockingTools na cena. Normalmente, ele é adicionado como um irmão do WorldLockingContext, mas seu posicionamento exato na hierarquia não é importante. No entanto, ele não deve ser posicionado na hierarquia da câmera.

As âncoras espaciais que o WLT cria e usa internamente são criadas na posição da câmera. Como é desconcertante movimentar-se por um campo de visualizações de âncoras no nível dos olhos, o padrão do sistema é exibi-las um metro abaixo de sua posição real. Para conferir as visualizações de âncora nas posições de âncora reais, defina o parâmetro Vertical Displacement do componente Anchor Graph Visual como zero.

Saída adicional

Os Exemplos de Bloqueio de Mundo incluem o diagnóstico de texto. A maioria deles é relevante apenas para desenvolvedores do World Locking Tools, e não para os clientes de suas habilidades. No entanto, eles estão disponíveis para leitura e, conforme mostrado no script StatusToText, para exibição em tempo real.

Exibição de diagnóstico típica

Para análise post-mortem, a seção Diagnóstico do WorldLockingContext pode ser muito útil para relatar falhas no Mecanismo de Mundo Congelado. Confira Como relatar um bug para obter mais informações.