Compartilhar via


A ideia básica

Os sistemas de rastreamento de cabeça reversos são uma nova tecnologia incrível. Quanto aos pontos fortes, são quase mágicos. Mas também têm pontos fracos.

Os sistemas de rastreamento de cabeça reversos, como os da HoloLens, são bons para informar onde a cabeça está em relação aos recursos físicos próximos. De forma equivalente, eles são bons para informar onde os recursos do mundo real são em relação à cabeça.

Mas eles não são tão bons em informar onde a cabeça está em relação ao local em que a cabeça estava. Quando a cabeça se move do ponto A para o ponto B, o sistema de rastreamento geralmente estará um pouco errado sobre a distância que a cabeça percorreu. Isso significa que o sistema de rastreamento estará incorreto sobre a distância entre os pontos A e B. Muitas vezes, esse efeito é chamado incorretamente de "o problema de dimensionamento".

Então, quando a cabeça viajar do ponto B de volta ao ponto A, ela estará novamente errada sobre a distância percorrida. Ela estará impressionantemente próxima do correto, mas visivelmente incorreta. Esse efeito também é conhecido como "descompasso".

Veja mais informações sobre esses problemas nestas perguntas frequentes.

A questão é que o World Locking Tools pode corrigir esses problemas. No último caso (do descompasso), o World Locking Tools pode reconhecer que a cabeça voltou a ficar próxima do ponto A, nos recursos físicos ao redor do ponto A, e corrigir as coordenadas da cabeça.

No primeiro caso (do problema de escala), o World Locking Tools pode receber a entrada do aplicativo para saber onde o ponto B está em relação ao ponto A e corrigir também essa distância percorrida.

Para entender melhor como o World Locking Tools resolve esses problemas, algumas terminologias adicionais serão úteis.

Espaços esponjosos e com bloqueio de mundo

Espaço esponjoso

Há um mecanismo de otimização no núcleo do World Locking Tools. Ele recebe como entradas um grafo de âncoras espaciais atualmente ativas no mundo, juntamente com as informações atuais do rastreamento de cabeça. Essa entrada é conhecida normalmente como o estado Esponjoso neste artigo e na documentação e nos código relacionados. O estado esponjoso é chamado assim porque está constantemente em fluxo. As âncoras espaciais estão sempre em movimento uma em relação à outra e dentro do espaço de coordenadas esponjoso nativo, à medida que os dados do sensor de entrada refinam o estado delas.

Esse espaço esponjoso é o único sistema de coordenadas disponível anteriormente, no qual o desenvolvedor de aplicativos de realidade misturada poderia trabalhar.

Espaço com bloqueio de mundo

No estado esponjoso, o mecanismo do World Locking Tools calcula um espaço estável, que alinha de maneira ideal o espaço esponjoso com o mundo físico. Esse espaço estável é conhecido como Espaço com bloqueio de mundo e o estado completo como o estado congelado.

É importante perceber que o espaço esponjoso e o espaço com bloqueio de mundo são sistemas de coordenadas cartesianas rígidos e, na verdade, são diferentes um do outro apenas por uma rotação e deslocamento. No entanto, a transformação do espaço esponjoso em espaço com bloqueio de mundo altera a cada quadro, à medida que novos dados do sensor são processados.

A diferença entre os dois espaços é que, enquanto os dados do sensor de entrada são livres para refinar (ou seja, mover) as âncoras espaciais em relação umas às outras e à cabeça no espaço esponjoso, o espaço com bloqueio de mundo é escolhido para minimizar esses movimentos. Essa diferença permite que os objetos de cena posicionados no espaço com bloqueio de mundo pareçam fixos no mundo físico, sem serem anexados a âncoras espaciais individuais. A cada quadro, o mecanismo calcula o espaço com bloqueio de mundo em que as âncoras subjacentes são mais estáveis. Ou seja, o espaço com bloqueio de mundo em que os objetos virtuais permanecem alinhados de maneira ideal com os recursos do mundo real.

Essa transformação é aplicada à cena a cada quadro, ajustando a transformação local de um pai da câmera no grafo de cena. Como a câmera define o espaço esponjoso original, inserir essa transformação de "espaço esponjoso em espaço com bloqueio de mundo" na hierarquia da câmera estabelece o espaço raiz da cena como um espaço com bloqueio de mundo.

Persistência

Como opção, o Estado Congelado pode persistir nas sessões. Existem controles manuais para salvar o estado atual e para carregar em um estado salvo. Além disso, os sinalizadores do World Locking Tools Manager habilitam ou desabilitam o salvamento periódico automático do Estado Congelado e o carregamento automático do último estado salvo na inicialização.

O uso desses recursos permite que a varredura e a estabilização de um espaço real persistam em várias sessões.

Além disso, se o recurso de Marcador de Espaço for usado para alinhar o espaço de modelagem ao espaço real, esse alinhamento poderá persistir. Nesse caso, após uma sessão de alinhamento inicial para configurar os Marcadores de Espaço para alinhar a cena modelada a um espaço físico, as sessões subsequentes podem carregar automaticamente a cena modelada no espaço físico com recursos virtuais e reais alinhados.

Para obter mais informações, confira Persistência e recurso Marcador de Espaço.

Implicações de movimentação da câmera

Uma coisa sutil, mas importante a ser observada aqui é que, ao aplicar a transformação de correção à câmera, o "quadro de referência estacionário" nativo do Unity foi convertido no quadro de referência com bloqueio de mundo ideal. Como nenhum objeto na cena foi movido, essa correção não interferirá na simulação física ou em outros cálculos do Dynamics.

No entanto, a câmera que está sendo movida dentro do quadro de referência estacionário tem implicações. Especificamente, os subsistemas, que pressupõem que a transformação da cabeça é a única transformação entre o quadro de referência estacionário e o espaço da câmera, estarão incorretos.

Em geral, esse erro não é um problema, pois recursos como teletransporte já contam com a capacidade de posicionar uma transformação entre a câmera e o espaço raiz.

Além disso, o MRTK já leva em consideração a necessidade dessas transformações. Portanto, para os usuários de serviços do MRTK, isso "simplesmente funciona".

Para usuários que precisam de acesso direto a sistemas de nível inferior que não podem tirar proveito do MRTK, são fornecidas amostras para criar adaptadores. Veja alguns desses exemplos listados abaixo:

Confira também