Escolha seu idioma

Escolha seu idioma

O site foi traduzido para Portuguese, Brazil com a ajuda de humanos e IA

Despedimento

Um olhar técnico sobre Mapeamento de Mundos Virtuais para Espaços Reais

8 minutos de leitura
Profile picture for user Rene Bokhorst

Escrito por
Rene Bokhorst
Technical Director

A Technical Look into Mapping Virtual Worlds for Real Spaces

Em fevereiro de 2017, junto com o World Wildlife Fund, ArtScience Museum e Google Zoo, a MediaMonks lançou uma experiência de realidade mista em larga escala "Into The Wild"

Todos apoiados pelo esforço de ajudar as pessoas em Cingapura a experimentar os efeitos devastadores do desmatamento e aprender mais sobre algumas das espécies mais ameaçadas do mundo e seus habitats.

Foi o primeiro smartphone Lenovo Phab 2 Pro habilitado para o Tango e guiou os visitantes através de aventuras digitais personalizadas, que começaram com a realidade aumentada (AR) no andar térreo do espaço de exposição, antes da transição para a realidade virtual completa (VR).

O final da experiência volta para AR, onde os usuários vão até o quarto andar para uma experiência que inclui o plantio de uma árvore virtual.

Transformando mais de 1.000 metros quadrados do Museu ArtScience de Cingapura em uma floresta tropical virtual e interativa, tornando-a a maior experiência de AR do mundo, e a segunda experiência de museu de AR desenvolvida usando o Google Tango.

E não foi fácil. De uma perspectiva técnica, enfrentamos o enorme desafio de como mapear com precisão e suavidade uma floresta tropical virtual em um espaço físico e dinâmico do museu, assegurando que as paredes fossem alinhadas com árvores, corredores com os caminhos da floresta, e que trabalhássemos em torno das exposições e encenações existentes no museu.

Com isso, podemos completar o alinhamento. E como o Tango informa as coordenadas do dispositivo de volta em coordenadas ecef, podemos facilmente calcular as coordenadas unitárias correspondentes. Efetivamente, atualizamos a câmera da Unidade com cada atualização do Tango que recebemos utilizando esta transformação.

Além disso, para cada árvore virtual plantada, uma árvore real foi plantada em Rimbang Baling, uma das últimas florestas tropicais imaculadas de Sumatra, onde vive o tigre Sumatran, ameaçado de extinção. 5000 novas árvores foram prometidas no primeiro mês do projeto.

Espero que, compartilhando isto, possamos inspirar a imaginação dos desenvolvedores atuais e aspirantes a construírem experiências AR/VR ainda mais excitantes que mapeiem para o mundo real. Vá em frente e conquiste!

Este artigo foi publicado originalmente no TechWorld em 18 de julho de 2017.

Então, como fizemos?

Para começar, se você está aumentando o mundo real com objetos virtuais, é importante que o dispositivo que renderiza sua visão (como um smartphone, monitor, CAVE ou dispositivo montado na cabeça) esteja exatamente ciente de onde ele está no mundo real.

Para isso, um dispositivo precisa saber sua posição e orientação em um espaço tridimensional.

No caso do Tango, onde o aumento acontece em uma alimentação de câmera, a posição e orientação do dispositivo de renderização precisa estar em coordenadas do mundo real. Somente se a posição e a orientação de um dispositivo Tango for relatada com precisão, e com rapidez suficiente, é possível uma realidade aumentada adequada.

O fato de o Google Tango fazer isso para você é muito legal porque permite aos desenvolvedores aumentar as localizações do mundo real dentro de seu próprio mundo virtual que é diferente do AR tipo Snapchat que, por exemplo, aumenta as orelhas de coelhinho na sua cabeça.

Com os aumentos do mundo real, você pode potencialmente criar experiências de RA compartilhadas que giram em torno de pontos de referência e envolvam marcos.

Neste caso, isso nos permitiu transformar o Museu ArtScience em uma exuberante floresta tropical virtual e da perspectiva do usuário, explorar a floresta tropical torna-se tão natural quanto explorar o próprio museu porque cada corredor ou obstáculo no mundo virtual corresponde a um corredor ou obstáculo no mundo real.

Into The Wild 1

Na natureza

Into The Wild 2

Na natureza

Into The Wild 3

Na natureza

Into The Wild 4

Na natureza

Into The Wild 5

Na natureza

Into The Wild 6

Na natureza

Coordenadas do Google Tango

Utilizamos o Unity3D para criar nosso mundo virtual. Para começar, asseguramos a nossos desenvolvedores da Unity que eles não teriam que se preocupar com o alinhamento e eram livres para projetar o mundo virtual usando qualquer posição ou orientação que gostassem, desde que fosse verdadeiro à escala.

Os desenvolvedores familiarizados com Sistemas de Informação Geográfica (SIG) sabem que existem muitos sistemas de coordenadas por aí chamados "datums". Historicamente, muitos institutos desenvolveram seus próprios, mas desde a introdução do GPS, os EUA desenvolveram o WGS84 que é o mais utilizado para dispositivos comerciais.

O grande diferencial deste sistema de coordenadas é que ele é cartesiano, calcula em metros, e usa o centro da terra como seu ponto de origem. Isto é importante porque, em um ambiente devidamente mapeado, o Google Tango pode lhe dar sua posição exata e orientação sobre o globo e lhe dá isto no WGS84.

O Google Tango chama estas coordenadas de coordenadas ecef, portanto, nós também o chamaremos ecef.

Determinando a Abordagem Correta

O próximo passo é assegurar que nosso mundo da Unidade se sobreponha ao mundo real para que possamos alcançar uma realidade aumentada. Duas abordagens para resolver isto nos vêm à mente.

  1. Transformar (mover+rotar) o mundo da Unidade para sentar-se em cima das coordenadas do ecef do museu.
  2. Transformar (move+rotate) as coordenadas do dispositivo ecef Tango em coordenadas do mundo da Unidade.

As abordagens são 80% iguais, pois em ambos os casos é preciso calcular a transformação do virtual (Unidade) para o real (ecef). A diferença, entretanto, está em se você transporta o mundo virtual para o real (aproximação um), ou se você transporta a câmera real para o mundo virtual (aproximação dois).

Para determinar qual é a melhor abordagem, tivemos que ver como estas coordenadas se parecem em um caso de uso real. Aqui estão alguns exemplos de como as coordenadas da Unidade se parecem:

Objeto A: [10.000, 63.250, -11.990]

Objeto B: [-92.231, 33.253, -62.123]

Em contraste, abaixo estão dois exemplos de como as coordenadas ecef parecem:

Hilversum MediaMonks HQ 2º andar perto do elevador: [3899095,5399920414; 353426,87901774078; 5018270.6428830456]

ArtScienceMuseum de Cingapura em frente à loja de caixa: [-1527424,0031555446; 6190898,8392925877; 142221,77658961274]

Obviamente, as coordenadas ecef são em número bastante grande. De fato, é claro que os pontos flutuantes de precisão única (ou flutuadores) vão ter muitos problemas com eles.

Sem entrar muito em detalhes sobre flutuadores, é importante notar que executar aritmética com números em torno de 10-6 com números em torno de 106 significa que você perde significativamente a precisão.

Além disso, também não há como contornar o fato de que muita programação 3D é feita em torno de 10-3 a 103 (pense em transformação, modelo, visão ou matrizes de projeção).

Para entender isto melhor, eu recomendo assistir a este vídeo, pois ele demonstra este ponto perfeitamente. Ele mostra um jato de caça decolando em torno da origem [0; 0; 0] com uma câmera seguindo-o e, à medida que sua própria posição se torna cada vez maior (assim como a posição da câmera), os cálculos do ponto flutuante se tornam cada vez menos precisos.

Imagine então qual seria o erro se as coordenadas de sua câmera fossem como as coordenadas ecef mostradas acima? Você estaria combinando valores de rotação em escala fina com valores de posição muito grandes. O erro no resultado será enorme.

AR isn't quite as fun if the augmentation isn't done accurately.

AR não é tão divertido se o aumento não for feito com precisão.

Acrescente-se a isto o fato de que a Unidade é dificilmente codificada para trabalhar com flutuadores (em vez de pontos flutuantes de dupla precisão, ou duplas), e o fato é que não podemos nos dar ao luxo de cometer grandes erros no AR. Portanto, é claro que uma abordagem é impraticável. Isto porque a câmera precisa ficar relativamente perto da origem para evitar erros de precisão.

Portanto, procedemos com a abordagem dois que é transformar as coordenadas do dispositivo ecef Tango em coordenadas mundiais da Unidade.

Encontrar a Transformação

As transformações entre sistemas de coordenadas em gráficos 3D geralmente implicam em encontrar valores de tradução (posicional), orientação e escalonamento.

Cada um destes três conceitos atua no espaço 3D, portanto, eles devem descrever seu posicionamento, rotação e escala para cada um dos três eixos (x, y e z). Isto nos dá nove valores a serem encontrados.

As nove incógnitas são uma dica de quantas equações você precisa para encontrar estas nove incógnitas. Isto é importante ao determinar quantas coordenadas do mundo real são necessárias para ancorar nosso mundo virtual.

Nossa idéia inicial era criar uma transformação que lidasse com os três conceitos (tradução, rotação e escala). Entretanto, devido a dificuldades e ao fato de termos sido capazes de projetar nosso mundo virtual fiel à escala, decidimos abandonar a contabilidade da escala e nos concentrar apenas na tradução e na rotação.

Isto significava que, efetivamente, agora só precisamos encontrar seis incógnitas.

Calcular a Matriz de Transformação

Neste ponto, para resolver este desafio, estamos nos preparando para encontrar uma matriz de transformação que apenas contabilize a localização e a rotação. Felizmente, este problema já foi resolvido um milhão de vezes por estudantes de Ciências da Computação.

Se você simplesmente pesquisar no Google, encontrará inúmeros exemplos de como transportar um corpo rígido de um sistema de coordenadas para outro. Este é um exemplo que o levará até lá em 90 por cento do caminho.

Encontrar uma matriz de transformação gira em torno da minimização da soma dos erros dos quadrados entre dois conjuntos de pontos de dados. O método a seguir é adaptado para este problema, pois trata da rotação e tradução separadamente.

Conceitualmente, abordamos isto escolhendo um ponto no mundo real, e dizemos que esse ponto corresponde a outro ponto no mundo virtual.

Basicamente, os mundos estão ancorados um no outro nesse ponto. Entretanto, como você pode imaginar, a escolha de um único ponto como âncora ainda permite que os mundos girem em torno da âncora, caso em que serão desalinhados na maior parte do tempo.

Portanto, para colocar o mundo virtual em cima do mundo real perfeitamente, você precisa de pelo menos algumas âncoras. Dependendo do número de incógnitas que você estiver tentando encontrar, você precisa de uma quantidade igual ou maior de equações.

As equações podem ser derivadas de pares conhecidos (neste caso, ecef e coordenadas de Unidade). Neste caso, um total de 3 pares (ou âncoras) é suficiente para nos permitir encontrar uma matriz de transformação 3D completa.

A idéia é que você escolha N quantidade de pontos (pelo menos três) no mundo real e encontre suas coordenadas ecef. Então, você vai para o mundo virtual e coloca um ponto em suas localizações virtuais correspondentes (portanto, N no total). Para o projeto do museu, utilizamos 10 pontos de referência fáceis de encontrar na base de cada pilar dentro do museu.

Into The Wild Coordinates 2

Acima, duas coordenadas ecef que medimos no mundo real e abaixo, suas contrapartidas no mundo virtual.

Para isso, utilizamos uma biblioteca de terceiros chamada Math.Net que nos permite fazer álgebra linear com duplas. Você só tem que executar este código uma única vez no início do programa.

O resultado é que agora temos 10 coordenadas ecef e 10 coordenadas Unity space em forma de círculo, resultando em 10 pares de coordenadas. O próximo passo então é aplicar os passos discutidos neste artigo e encontrar uma matriz de transformação que nos permita transformar um ponto do espaço ecef para o espaço Unity.

Tivemos alguns problemas ao implementar isto. Por exemplo, a Unidade é um sistema de coordenadas à esquerda, enquanto o ecef é destro. E o artigo que referimos acima também usou ordenação de linha principal, enquanto a biblioteca usou ordenação de coluna principal.

Isto torna diferente o pedido de preenchimento, transposição e multiplicação de matrizes. Acabamos superando todos estes problemas através de um raciocínio cuidadoso, e não tentando dar muitos passos ao mesmo tempo.

Aplique a Transformação

Seguindo o passo anterior, temos uma matriz de transformação que poderíamos chamar de ecefTunity, (ou unitTecef, dependendo de como você calculou a matriz). Assim, transformar um ponto no espaço ecef em espaço unitário torna-se tão trivial quanto:

Into The Wild Coordinates 3

Conteúdos Relacionados

Faça nosso coração digital bater mais rápido

Receba nossa newsletter com inspiração sobre as últimas tendências, projetos e muito mais.

Obrigado por se inscrever!

Continue exploring

Os monges precisam das informações de contato que você nos fornece para entrar em contato com você sobre nossos produtos e serviços. Você pode cancelar sua inscrição nestas comunicações a qualquer momento. Para obter informações sobre como cancelar sua inscrição, bem como nossas práticas de privacidade e compromisso com a proteção de sua privacidade, favor rever nossa Política de Privacidade.

Escolha seu idioma

Escolha seu idioma

O site foi traduzido para Portuguese, Brazil com a ajuda de humanos e IA

Despedimento