Concrete Logo
Hamburger button

ARCore – Realidade Aumentada no Android (Parte 1)

  • Blog
  • 27 de Fevereiro de 2018

Introdução à computação imersiva e conceitos iniciais do ARCore

De alguma forma você já deve ter ouvido falar sobre computação imersiva (Immersive Computing). Se não, pelo menos já deve ter visto algo relacionado e não sabe ainda. Se você já assistiu a Black Mirror, por exemplo, alguns episódios (como o USS Callister) exploram bem o assunto. De qualquer forma, as gigantes da tecnologia, como Google, Apple, Facebook, Amazon e Microsoft, além de empresas de Video Games e de SmartPhones estão olhando para isso como a nova onda do futuro para a computação e novas possibilidades de mercado. Até mesmo empresas que não são totalmente do segmento tecnológico, como a BMW no segmento automobilístico, estão olhando para este tema como uma nova oportunidade (veja aqui a notícia sobre).

Como as possibilidades são muitas e o interesse de grandes empresas é gigante, a Google está desenvolvendo SDKs e ferramentas para que desenvolvedores consigam criar projetos nessa área com mais facilidade, aproveitando todos os benefícios que o SO do Android traz. Isso significa mais acesso a hardwares e sensores do device, como câmera, giroscópio e localização, por exemplo.

Neste primeiro post, vou repassar alguns conceitos iniciais sobre computação imersiva e ARCore para que, mais para a frente, possamos ver um protótipo dessas APIs. Vamos lá?

AR + VR = Immersive Computing

Computação imersiva é o desenvolvimento de ambientes e simulações que misturam o mundo físico e real com o mundo virtual, o que cria uma sensação de “imersão”. Neste contexto, podemos considerar três níveis:

Não-imersivo (Non-Immersive): apenas uma parte dos sentidos do usuário é estimulada a interagir com o ambiente virtual. Aqui, o usuário consegue diferenciar por meio de percepções periféricas o mundo real do mundo virtual. Essas simulações são executadas, normalmente, por meio de equipamentos comuns como monitores de alta resolução e sensores. Um exemplo desse conceito são os jogos que usam Kinect.

Parcialmente imersivo (Semi-Immersive): mistura a sensação de mundo real e virtual para que um elemento do ambiente virtual seja colocado em ambientes reais. Nessa categoria são utilizadas técnicas mais aprimoradas, como o uso de computação gráfica de alto desempenho, câmeras e projeções. O exemplo mais comum desse conceito é o uso de realidade aumentada em jogos e apps.

Totalmente imersivo (Fully-Immersive): neste ambiente o usuário não consegue diferenciar ao certo o que faz parte do mundo real e o que é do mundo virtual. É comum o uso de equipamentos mais acoplados para que seja possível a sensação de estar dentro e fazer parte do mundo virtual, como óculos de imersão, sensores, luvas e controles de ação. O Oculus Rift, o HTC Vive e o Lenovo Mirage Solo são equipamentos que aplicam esse conceito, principalmente em jogos com realidade virtual.

Na série que começa hoje vamos focar em ambientes parcialmente imersivos e falar sobre como nós, desenvolvedores Android, podemos desenvolver produtos usando realidade aumentada com o SDK do ARCore, ferramenta lançada pela Google para nos ajudar nessa tarefa (link aqui para o anúncio da versão 1.0). Para desenvolvermos um bom produto de realidade aumentada precisamos conhecer alguns conceitos fundamentais do ARCore, que vão nos ajudar a fazer com que os objetos virtuais da realidade aumentada se pareçam o máximo possível com o ambiente real. Vamos a alguns deles:

Captura de movimentos (motion tracking)

Como o device Android pode se mover pelo mundo real, o ARCore usa um processo chamado concurrent odometry and mapping (COM) para entender este deslocamento. O ARCore também detecta as características visuais da imagem que é capturada pela câmera (chamadas pelo ARCore de feature points) e usa essas características para calcular a mudança de lugar. Esses pontos, combinados com o IMU (inertial measurement unit) do dispositivo, conseguem medir a posição e a orientação (pose, no ARCore) da câmera em relação ao mundo.

Com essas informações fornecidas pelo aparelho e pelo ARCore, os desenvolvedores podem posicionar e orientar os objetos renderizados na câmera para que eles pareçam fazer parte do mundo real.

Compreensão do ambiente (environmental understanding)

O ARCore procura por clusters de pontos que possam compor uma superfície (como mesas, cadeiras e chão) e disponibiliza essas superfícies como planos (planes). A ferramenta também consegue distinguir e definir os limites desses planos. Com essas informações, conseguimos colocar objetos sobre esses planos e, consequentemente, em superfícies no mundo real.

Como o ARCore usa esses pontos para detectar os planos no mundo real, às vezes uma mesa branca num lugar todo branco pode não ser detectada corretamente.

Estimativa de luz (light estimation)

O ARCore consegue detectar informações sobre a iluminação do ambiente e provê a intensidade média de uma determinada imagem na câmera. Essa informação nos permite iluminar mais ou menos um objeto renderizado para dar maior sensação de realismo a ele.

Captura de movimentos, compreensão do ambiente e estimativa de luz são os três principais conceitos que vamos usar para desenvolver produtos de realidade aumentada no Android. Se você quiser saber mais sobre esses e outros conceitos, veja este link.

Além desses conhecimentos precisamos de aparelhos Android compatíveis com o ARCore, uma vez que, infelizmente, nem todos eles são. A partir do release 1.0 do ARCore a Google já dá suporte a emuladores, então agora você também tem essa opção. Tem uma lista pública e constantemente atualizada de quais devices são compatíveis, que você pode acessar aqui.

Todos os modelos listados dão suporte para o ARCore, mas nem sempre vêm com o suporte habilitado. Para habilitar precisamos instalar este apk, que está na Google Play, ou instalar manualmente usando o adb e seguindo estas instruções. Depois de instalar o apk o suporte ao ARCore estará habilitado, e caso não seja reconhecido tente reiniciar o dispositivo.

Depois de habilitar o suporte ao ARCore podemos baixar diversos apps na Google Play. Faça um teste buscando por “ARCore” na loja e desfrute dos apps já desenvolvidos e publicados que usam realidade aumentada. Também é possível baixar alguns exemplos do Github do time do ARCore neste link aqui.

Em breve eu volto com mão na massa! Vamos mostrar direitinho como criar e desenvolver um projeto usando ARCore no Android. Fique atento! Se ficou alguma dúvida ou tem alguma observação, deixe seu comentário nos campos abaixo. Até logo!

É desenvolvedor Android e quer trabalhar em times multidisciplinares e ágeis de verdade? Clique aqui.