Postado por Nikolai Khabarov, especialista em arte embarcada DataArt, evangelista de tecnologia em casa inteligente, inventor.Este artigo é uma breve digressão sobre o básico do trabalho com realidade virtual e aumentada. Não defini a tarefa de revelar totalmente todos os recursos do SDK do Google VR e planejei fornecer uma base mínima para aqueles que estão interessados nessas tecnologias e gostariam de começar a trabalhar com eles.
Da história do 3D
Para ver uma imagem tridimensional, a primeira coisa que precisamos fazer é organizar a transferência de duas imagens diferentes para o olho esquerdo e direito. É claro que, quando olhamos para qualquer objeto na vida cotidiana, nossos olhos o veem em ângulos diferentes, porque estão a alguma distância um do outro. Na verdade, devido a isso, percebemos o espaço tridimensional ao redor.
A própria idéia da imagem 3D é bastante antiga, existem muitas tecnologias que permitem reproduzir imagens tridimensionais. Por exemplo, todos viram óculos de anáglifo com lentes de cores diferentes nas salas de cinema. A imagem é exibida na tela de dois ângulos e um espectro de cores dividido em duas partes. Nesse caso, cada ângulo é passado através de um dos filtros, devido ao qual a ilusão de volume aparece. A principal desvantagem desse método é uma perda perceptível na reprodução de cores.
No próximo estágio do desenvolvimento da tecnologia, os chamados óculos de obturador, também chamados de óculos de válvula de luz, apareceram - eles também são usados nos cinemas. O dispositivo desses óculos é diferente: cada lente possui uma tela pequena com resolução de um pixel; pode fechar completamente a imagem ou ignorá-la completamente. Os óculos alternam alternadamente entre as telas, permitindo ver a imagem com um ou outro olho. Ao mesmo tempo, para ver uma imagem tridimensional, precisamos sincronizar a troca de óculos com uma TV ou tela de cinema. Isso pode ser feito através do canal de rádio ou, como costuma acontecer, com a ajuda de um receptor infravermelho e um transmissor instalado nos óculos, localizado próximo à tela. Outra desvantagem desse método é a perda de brilho - na metade do tempo, não vemos nada com um olho. Além disso, o equipamento de reprodução requer uma alta taxa de quadros.
Um desenvolvimento interessante da idéia foi a tecnologia de polarização - com a ajuda de um filtro, podemos cortar apenas a parte necessária das ondas polarizadas em direções diferentes. Certamente todos estão familiarizados com filtros polarizadores para câmeras que podem se livrar do brilho. No caso de uma imagem 3D, uma tela é preparada de maneira especial, algumas linhas das quais começam a emitir luz polarizada verticalmente, outras - luz polarizada horizontalmente. Nos cinemas, a polarização circular também é usada quando a luz é torcida para a direita ou esquerda.
Simplicidade é a chave do sucesso
Os inventores do Google Cardboard tornaram tudo simples e engenhoso, decidindo usar um smartphone comum para transferir imagens tridimensionais. Antes disso, havia muitas opções de óculos equipados com várias telas, mas a resolução da matriz dessas telas era muito modesta. Além disso, esses óculos eram muito caros. E o Google Cardboard proposto é um pedaço de papelão comum com duas lentes, no qual resta colocar o telefone. Isso é suficiente para ver uma imagem tridimensional com seus próprios olhos.
Um desenvolvimento adicional do cartão foi o surgimento de
Sonhar acordado - o dispositivo não difere do antecessor pelo princípio de operação, mas, em comparação com ele, possui vantagens significativas. Em particular, o material do qual o Daydream é feito não é mais apenas papelão, é de qualidade muito superior. Outra vantagem indiscutível é o suporte de software do próprio Daydream.
A tela de qualquer telefone possui um conjunto de recursos, como lentes de papelão. O cartão clássico é marcado na forma de um código QR e, antes de colocar o telefone, você precisava ler esse código para inserir os parâmetros da lente no telefone. Combinando os parâmetros, o dispositivo pode calcular como exibir a imagem para que ela atinja você com o mínimo de distorção.
Ao usar o Daydream, basta colocar o dispositivo para que ele leia os parâmetros dos próprios óculos usando NFC. A etiqueta em si está oculta na contracapa.
O cartão também possui um pequeno painel de controle; Muitos fabricantes lançaram análogos do Cardboard e seus controles remotos, os mais diversos: inercial, gravitacional, apenas joysticks. O Daydream possui dois botões e um pequeno touchpad que permite mover objetos no espaço ou mover-se movendo o dedo. O cartão tinha apenas um botão, no caso dos próprios óculos, que simplesmente gravava a impressora e transmitia essas informações para a tela do telefone.
O papelão pode ser usado com qualquer telefone que se encaixe fisicamente na caixa e é muito barato. Para trabalhar com o Daydream no momento da escrita, apenas três telefones foram certificados: ZTE Axon 7, Google Pixel e Motorola Moto Z, eles planejam adicionar novos modelos a eles, mas para usar o Daydream, é necessário um sistema operacional com pelo menos o Android 7.0.
Interação com realidade virtual
A parte mais interessante começa quando não olhamos apenas para uma imagem tridimensional (o 3D também pode ser visto na TV), mas começamos a virar a cabeça.
Qualquer telefone moderno é equipado com sensores microeletromecânicos. São dispositivos microscópicos nos quais eletrônicos e pequenas peças mecânicas móveis são coletadas em um cristal, o que possibilita rastrear vários fatores externos. Provavelmente todo mundo sabe o que é um giroscópio - um dispositivo com o qual você pode descobrir o ângulo de rotação. No caso dos sensores MEMS, o giroscópio não fornece o ângulo de rotação em si, mas a velocidade angular. Dentro dela, existe um pequeno elemento que se move sob a influência da força de Coriolis (espero que você se lembre do que é, do curso da física). Isso permite que você conheça a velocidade angular e, já integrando-a, podemos determinar o ângulo de rotação. É verdade que esse método é ruim, pois, girando o telefone em direções diferentes, provavelmente não conseguiremos voltar ao mesmo ponto em que estávamos originalmente.
O segundo sensor interessante é o acelerômetro. Determina as forças que atuam no telefone, em particular a aceleração da gravidade. Em um estado calmo, mostrará a aceleração usual da gravidade em nosso planeta, que corresponde a aproximadamente 9,8 m / s². Mas, se começarmos a mover ou girar o telefone, aceleraremos. Como resultado, nesses momentos, o sensor não fornecerá as leituras necessárias. Somente quando paramos de nos mover é que o sistema se acalma e podemos reconhecer a força direcionada para a Terra. Como você pode ver, para determinar simplesmente a posição do telefone no espaço, nenhum dos dois sensores que mencionamos é adequado.
No entanto, dado que o giroscópio "foge" com o tempo e o acelerômetro "foge" apenas no momento da rotação, é possível calcular a posição do dispositivo usando vários métodos matemáticos, por exemplo, o filtro Kalman. Se você programou para o Android, provavelmente notou que no próprio SDK do Android, na lista de sensores, não há apenas um acelerômetro e um giroscópio, mas também o chamado TYPE_ORIENTATION. Este é apenas um desses métodos matemáticos que calculam a posição do telefone usando as informações de ambos os sensores. Eles mesmos, em regra, são montados em um microcircuito, muitas vezes um sensor de campo magnético, isto é, uma bússola, é adicionalmente colocado nele.
Quem está interessado em quadrocopters, provavelmente percebeu que a inscrição "barômetro" apareceu nos novos modelos. Obviamente, este dispositivo não se destina à análise climática. Esse sensor é usado para medir a pressão atmosférica, a fim de determinar a altura. Também funciona no telefone, e podemos calcular seu movimento ao longo do eixo vertical até o centímetro mais próximo. Naturalmente, as leituras precisam ser suavizadas usando um filtro.
Prática
O Google lançou o Google VR SDK para seus dispositivos Cardboard e Daydream. O último é um conjunto de componentes que nos ajudam a desenvolver aplicativos especificamente para exibir a realidade 3D, disponível no iOS e no Android. Esse SDK facilita a criação de aplicativos para realidade virtual e aumentada.
O SDK do Google VR cuida de todo o trabalho com sensores. Graças a isso, não precisamos calcular quaternions para entender como girar uma cena no OpenGL ao virar a cabeça. Basta colocar o View na atividade e o SDK fará tudo por conta própria.
Vamos dar uma olhada rápida em como podemos começar rapidamente com o Google VR SDK e como criar um aplicativo Android simples. Primeiro, você precisará do Android Studio pré-instalado.
Faça o download do SDK do
repositório oficial do
git . A documentação do SDK está disponível
aqui .
Agora basta abrir o diretório raiz do repositório usando o Android Studio. Lá você pode encontrar exemplos que podem ser compilados a partir da fonte e executados no seu dispositivo Android. O projeto possui configurações imediatamente para executar exemplos.

O Daydream também possui seu próprio pequeno controlador, com o qual o SDK também suporta. Ele possui um conjunto de funções de retorno de chamada e você pode usar esse controlador com segurança em seus projetos. Há um exemplo especial no SDK 'sdk-controllerclient'.
Para uma percepção mais realista, eu gostaria de sentir o som, e para que fique claro de onde vem, para onde é direcionado e em que ambiente é distribuído. Existe um GvrAudioEngine na biblioteca para isso, que se assemelha a uma Open Audio Library simplificada ou ao Direct3D Sound. Basta comunicar as coordenadas da fonte de som no espaço, e a própria biblioteca irá misturar o som conforme necessário. Você pode especificar vários materiais do ambiente, por exemplo, criar uma cena em que diferentes músicas sejam reproduzidas das colunas à direita e esquerda e especificar mais fontes de som.
O exemplo 'sdk-treasurehunt' é um jogo bastante simples implementado no OpenGL puro. Ele também usa o GvrAudioEngine para fornecer efeitos de som surround ao jogo.
Há um SDK do Google VR e um conjunto de visualizações maravilhoso, embora pequeno, que você pode incorporar em seus aplicativos. Em particular, o VrPanoramaView é um componente para exibir fotos panorâmicas em 360 graus e exibição estereográfica. Você pode simplesmente colocar a foto nos recursos do aplicativo e chamar VrPanoramaView.loadImageFromBitmap () em apenas uma linha para pegar essa imagem em particular e exibi-la. Como resultado, você obtém um componente pronto que o usuário pode ver em seu aplicativo - essa é uma Visualização normal, igual a todos os outros no Android.
Você pode exibir vários componentes ao mesmo tempo em uma tela, você pode exibir um em tela cheia e, ao mesmo tempo, para alternar entre óculos e exibição simples, basta clicar no botão que será desenhado pela biblioteca. Também é possível adicionar vídeo usando o componente VrVideoView. E se você se cansar de assistir em algum momento, poderá retroceder o vídeo.
Dois exemplos do SDK 'sdk-simplepanowidget' e 'sdk-simplevideowidget' mostram como é muito simples criar aplicativos com esses objetos internos.
Surge a pergunta: onde conseguir esses vídeos e fotos? Mas algumas empresas já começaram a produzir câmeras na forma de pequenas bugigangas com lentes de ambos os lados. Com a ajuda deles, você pode tirar fotos panorâmicas a 360 graus - elas podem conectá-las independentemente - mas o vídeo não funcionará. Para fazer isso, você precisará de um design bastante caro e de um software especial que possa colar as imagens resultantes e transformá-las em conteúdo adequado para exibição na realidade virtual.

A solução
Odyssey inclui 16 câmeras sincronizadas.
Aplicação
Onde as tecnologias descritas podem ser aplicadas? A primeira opção é obviamente um jogo. Como regra, o OpenGL é um jogo de tiro e outros jogos em que precisamos de uma sensação de profundidade. A Netflix lançou recentemente um serviço para exibir conteúdo 3D. Essa biblioteca também pode ajudá-lo a escrever algum tipo de solução de exibição de filme personalizada.
Você pode permitir que os clientes da loja que usam telefones vejam suas descrições adicionais ao lado dos preços.
Você pode aplicá-los nas vendas de imóveis. Encontrar o comprador e o vendedor geralmente é inconveniente. E com a ajuda desse vídeo, será muito mais fácil para o comprador avaliar com antecedência se ele deve assistir a esse ou aquele objeto.
Os museus são outro lugar ideal para aplicar a tecnologia. Nos museus modernos, dentro do salão, geralmente existem computadores através dos quais você pode acessar informações adicionais, ouvir alguma coisa. Mas esses computadores estão regularmente ocupados, e o telefone está sempre à mão de todos, e ele é capaz de adicionar elementos de realidade aumentada à exposição. A biblioteca funcionará com quase qualquer modelo de dispositivo e, se desejado, podemos transmitir mais informações aos visitantes do museu.
Aqui está um pequeno anúncio do Google que demonstra como é o Google Earth nos óculos de realidade virtual. Você pode assistir a esses vídeos em um monitor comum, mas as mesmas fotos em copos parecerão volumosas. O movimento no espaço é realizado usando o controle remoto Daydream, também para alguns telefones, é possível usar o barômetro e movimentar-se simplesmente girando a cabeça.
Outra idéia muito interessante de usar essas tecnologias é a impressão 3D.
Uma startup sugeriu que os usuários usassem realidade aumentada para criar modelos junto com outras ferramentas de modelagem. Usando um controlador convencional, você não pode obter modelos de alta precisão - o erro será muito grande. Mas podemos criar uma pequena lembrança com a ajuda de tais controladores e solicitá-la diretamente no aplicativo para imprimi-la em uma impressora 3D. Essa ideia é boa e será monetizada muito em breve, principalmente porque as impressoras desses produtos estão gradualmente ficando mais baratas.