A ideia básica
Os sistemas de rastreamento de cabeça de dentro para fora são uma nova tecnologia incrível. Em seus pontos fortes, eles são quase mágicos. Mas também têm as suas fraquezas.
Sistemas de rastreamento de cabeça de dentro para fora, como os do HoloLens, são bons em dizer onde a cabeça está em relação às características físicas próximas. Equivalentemente, eles são bons em dizer onde as características do mundo real são relativas à cabeça.
Mas eles não são tão bons em dizer onde a cabeça está em relação a onde a cabeça estava. Quando a cabeça se move do ponto A para o ponto B, o sistema de rastreamento geralmente estará ligeiramente 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. Este efeito é frequentemente e confusamente chamado de "o problema da escala".
Então, quando a cabeça viaja do ponto B de volta para o ponto A, estará novamente errado sobre a distância percorrida. Será impressionantemente perto de corrigir, mas visivelmente incorreto. Este efeito também é referido como "deriva".
Estes problemas são discutidos mais detalhadamente nesta FAQ.
A questão é que o World Locking Tools pode corrigir esses problemas. Neste último caso, de deriva, as World Locking Tools podem reconhecer que a cabeça está de volta perto do ponto A, a partir das características físicas em torno do ponto A, e corrigir as coordenadas da cabeça.
No primeiro caso, do problema de escala, as World Locking Tools podem receber informações do aplicativo para saber onde o ponto B está em relação ao ponto A e corrigir essa distância percorrida também.
Para entender melhor como as World Locking Tools resolvem esses problemas, algumas terminologias extras serão úteis.
Espaços esponjosos e bloqueados pelo mundo
Espaço esponjoso
No núcleo do World Locking Tools está um motor de otimização. Ele toma como entradas um gráfico de âncoras espaciais atualmente ativas no mundo, juntamente com as informações de rastreamento de cabeça atuais. Esta entrada é comumente referida, dentro desta e da documentação e código relacionados, como o estado Spongy. O estado esponjoso é assim chamado porque está em constante fluxo. As âncoras espaciais estão sempre em movimento umas em relação às outras, e dentro de seu espaço de coordenadas esponjosas nativas, à medida que os dados do sensor de entrada refinam seu estado.
Este espaço esponjoso é o único sistema de coordenadas anteriormente disponível no qual o desenvolvedor de aplicativos de realidade mista poderia trabalhar.
Espaço bloqueado no mundo
A partir do estado esponjoso, o motor World Locking Tools calcula um espaço estável, que alinha de forma ideal o espaço esponjoso com o mundo físico. Este espaço estável é referido como World locked space, e o seu estado completo como o estado congelado.
É importante perceber que tanto o espaço esponjoso quanto o espaço bloqueado pelo mundo são sistemas de coordenadas cartesianas rígidas e, na verdade, diferem entre si por apenas uma rotação e compensação. No entanto, a transformação de espaço esponjoso para espaço bloqueado pelo mundo muda 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 (isto é, mover) âncoras espaciais em relação umas às outras e a cabeça no espaço esponjoso, o espaço bloqueado pelo mundo é escolhido para minimizar tais movimentos. Essa diferença permite que objetos de cena colocados no espaço bloqueado do mundo pareçam fixos no mundo físico sem estarem presos a âncoras espaciais individuais. Cada quadro do motor calcula o espaço bloqueado pelo mundo em que as âncoras subjacentes são mais estáveis. Ou seja, o espaço bloqueado do mundo no qual os objetos virtuais permanecem perfeitamente alinhados com os recursos do mundo real.
Essa transformação é aplicada à cena de cada quadro, ajustando a transformação local de um pai da câmera no gráfico de cena. Uma vez que a câmera define o espaço esponjoso original, inserir essa transformação "mundo bloqueado de esponjoso" na hierarquia da câmera estabelece o espaço raiz da cena para ser o espaço bloqueado pelo mundo.
Persistência
O Estado Congelado pode, opcionalmente, ser persistido entre sessões. Há controles manuais para salvar o estado atual e para carregar a partir de um estado salvo. Além disso, os sinalizadores no Gerenciador de Ferramentas de Bloqueio Mundial 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 digitalização e a estabilização de um espaço real persistam ao longo de várias sessões.
Além disso, se o recurso Space Pin for usado para alinhar o espaço de modelagem ao espaço real, esse alinhamento poderá ser persistido. Nesse caso, após uma sessão de alinhamento inicial para configurar os Pins 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, consulte Recurso de persistência e pino de espaço.
Implicações do movimento da câmera
Uma coisa sutil, mas importante a notar aqui é que, aplicando a transformação de correção à câmera, o "quadro de referência estacionário" nativo da Unity foi convertido no quadro de referência bloqueado do 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 dinâmicos.
No entanto, a câmera que está sendo movida dentro do quadro estacionário de referência tem implicações. Especificamente, quaisquer subsistemas, que assumem 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.
Esse erro geralmente não é um problema, pois recursos como teletransporte já dependem da capacidade de colocar uma transformação entre a câmera e o espaço raiz.
Além disso, o MRTK já considera a necessidade de tais transformações, então para os usuários dos serviços MRTK isso "apenas funcionará".
Para usuários que precisam de acesso direto a sistemas de nível inferior que não conseguem tirar proveito do MRTK, amostras são fornecidas para adaptadores de construção. Alguns desses exemplos estão listados abaixo: