Como Criar uma Aplicação de Realidade Aumentada

Realidade Aumentada (RA) é uma tecnologia inovadora que lhe permite apresentar uma visão melhorada do mundo real à sua volta. Um bom exemplo seria exibir as pontuações dos jogos embutidas junto com a ação do futebol ao vivo a partir do chão. A incorporação é feita por meio de um aplicativo de realidade aumentada, que produz uma imagem da câmera ao vivo e aumenta um objeto virtual sobre a imagem do mundo real e exibe na tela de visualização da câmera usando algoritmos de reconhecimento baseados em visão.

Neste blog, explicaremos o processo de desenvolvimento de um aplicativo de RA de amostra usando o Qualcomm Vuforia SDK, um dos melhores SDKs disponíveis para criar aplicativos de RA baseados em visão para dispositivos móveis e tablets. Atualmente, ele está disponível para Android, iOS e Unity. O SDK cuida das complexidades de nível mais baixo, que permitem aos desenvolvedores focar inteiramente no aplicativo.

Visão geral conceitual

Comecemos com uma visão geral dos conceitos-chave usados no espaço de AR. É importante compreendê-los antes de iniciar o desenvolvimento de uma aplicação AR.

  • Alvos – São objectos ou marcadores do mundo real (como códigos de barras ou símbolos). Os alvos são criados usando o Vuforia Target Manager. Uma vez criados, eles podem ser usados para rastrear um objeto e exibir o conteúdo sobre ele. Os alvos podem ser alvos de imagens, alvos cilíndricos, alvos definidos pelo usuário ou alvos de palavras, quadros de imagens 2D (marcadores de quadros), botões virtuais (que podem acionar um evento) ou alvos de nuvens.
  • Content – Por content queremos dizer um objeto 2D/3D ou vídeo que queremos aumentar em cima de um alvo. Por exemplo, exibindo uma imagem ou vídeo sobre o alvo.
  • Texturas – Uma textura é um objeto OpenGL formado por uma ou duas imagens com o mesmo formato de imagem. O sistema Vuforia AR converte conteúdo em textura e o sistema AR torna a textura a ser exibida na tela de visualização da câmera.
  • Java Native Interface – Em amostras do Vuforia Android, os eventos dos ciclos de vida são tratados em Java, mas os eventos de rastreamento e renderização são escritos em C++ nativo. JNI pode ser usado para se comunicar entre Java e C++, pois permite chamadas de método nativo de Java.
  • Oclusão – Significa rastrear um objeto virtual escondido por um objeto real. O tratamento da oclusão envolve estabelecer uma relação entre objetos virtuais e reais usando shaders transparentes e, portanto, exibindo gráficos como se eles estivessem dentro de um objeto do mundo real.
  • OpenGL ES – Vuforia usa OpenGL ES internamente para renderização de gráficos 2D e 3D usando uma unidade processadora gráfica. O OpenGL ES é projetado especificamente para smartphones e dispositivos embarcados.

Componentes do Vuforia

O diagrama acima mostra os componentes principais da aplicação Vuforia AR.

  • Câmera – Captura a moldura de pré-visualização e a passa para o Image Tracker.
  • Conversor de Imagem – O conversor de formato pixel converte o formato padrão da câmera para um formato adequado para renderização e rastreamento OpenGL ES.
  • Rastreador – O rastreador detecta e rastreia objetos do mundo real no frame de pré-visualização da câmera usando algoritmos de reconhecimento de imagem. Os resultados são armazenados no objeto de estado que é passado para o renderizador de fundo de vídeo.
  • Video Background Renderer – O renderizador renderiza a imagem da câmera armazenada no objeto de estado e a aumenta para a tela da câmera.
  • Device Databases – O banco de dados do dispositivo ou conjunto de dados contém alvos criados usando o Target Manager. Ele contém um arquivo de configuração XML e um arquivo binário .dat.
  • Cloud Databases – Pode ser criado usando o gerenciador de destinos e pode conter um banco de dados de até 1 milhão de destinos, que podem ser consultados em tempo de execução.

Beginning Development

TargetManager – O primeiro passo é criar destinos usando o Vuforia Target Manager para usar como banco de dados de dispositivos. Para isso, primeiro você precisa fazer o registro gratuito no portal do desenvolvedor Vuforia. Esta conta pode ser usada para baixar recursos do Vuforia e postar problemas nos fóruns do Vuforia. Após o login,

  • Abra o TargetManager no site do Vuforia como mostrado acima e abra a aba Device Databases.
  • Clique Create Database, Add Target. Uma nova caixa de diálogo de destino se abre.

  • Selecione a imagem que você deseja mostrar como destino do seu sistema local. Somente imagens JPG ou PNG (apenas RGB ou escala de cinza) com menos de 2MB de tamanho são suportadas. Um alvo de imagem ideal deve ser rico em detalhes e deve ter bom contraste e sem padrões repetitivos.
  • Selecione o tipo de alvo como imagem única. Insira um valor arbitrário como a largura e clique em create target. Após curto tempo de processamento, o alvo selecionado será criado.
  • Se a classificação do alvo for superior a três, então o alvo pode ser usado para rastreamento. Uma classificação mais alta indica que a imagem é facilmente rastreada pelo sistema AR.
  • Adicionar mais alvos da mesma forma. Selecione os alvos que você deseja baixar e clique em baixar os alvos selecionados.
  • O download conterá um arquivo <nome_da_base de dados>.xml e <nome_da_base de dados>.dat. O arquivo .xml contém a base de dados das imagens alvo enquanto que o arquivo .dat é um arquivo binário contém informações sobre a base de dados rastreável.
  • >

Instalação e download do código de amostra

  • Assumindo que você já está logado na sua conta Vuforia, vá em frente e faça o download do Vuforia SDK para Android e Samples para Android
  • Extraia a pasta do Vuforia SDK e coloque-a na mesma pasta onde você guardou a pasta do seu Android-SDK. Copie amostras dentro do directório de amostras vazio na pasta Vuforia SDK e importe VideoPlayBack sample.
  • No Eclipse, vá para Window-Preferences e navegue para Java-Build Path – Class Variables e crie uma nova variável.
  • Adicionar QCAR_SDK_ROOT no campo Nome e selecione a pasta Vuforia SDK clicando na opção de pasta.
  • Cheque no seu projeto Java Build Path, vuforia.jar é exportado em Order and Exports tab.
  • Abrir copyVuforiaFiles.xml e em <fileset> dar caminho para armeabi-v7a. Você pode verificar o caminho no diretório build da sua pasta Vuforia-SDK. No meu caso no Linux o caminho é : “/home/vineet/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a”
  • O passo anterior irá gerar o arquivo libVuforia.so no diretório libs do seu projeto quando você construir e executar o app.
  • O app demo já contém 2 marcadores e arquivos de vídeo que você pode usar para testar. Você pode imprimir os marcadores a partir de arquivos PDF na pasta de mídia do seu aplicativo.
  • Após executar o aplicativo, a tela de visualização da câmera será aberta. Ao apontar a câmera para o marcador, um vídeo aparecerá na tela sobreposta no marcador.

Developer Work Flow

Quando um usuário lança o aplicativo de amostra, ele começa a criar e carregar texturas chamando loadTextures(). Aqui os bitmaps da pasta assets são convertidos em Texturas requeridas pelo mecanismo Vuforia SDK para renderização de objetos 3D no AR view.

Simultâneamente o aplicativo irá iniciar o processo de configuração do mecanismo chamando initAR(). Aqui o aplicativo inicializará o mecanismo Vuforia SDK de forma assíncrona. Após a inicialização bem sucedida, o aplicativo inicia o carregamento assíncrono dos dados dos rastreadores. Ele irá carregar e ativar os conjuntos de dados do arquivo XML alvo criado usando TargetManager.

Após a configuração do mecanismo, o aplicativo chama initApplicationAR() onde irá criar e inicializar a visualização OpenGLES e anexar um renderizador a ele, que é necessário para exibir o vídeo no topo da tela da câmera se o imagetarget for encontrado. O renderizador anexado com OpenGL ES view solicita o carregamento de vídeos através do VideoPlaybackHelper e chama o método OpenGL DrawFrame() para rastrear quadros da câmera. Durante este processo as texturas OpenGL de objetos de texturas carregados no início e texturas para dados de vídeo também são criadas.

O aplicativo então chama startAR() para iniciar a câmera. Assim que a câmera inicia o renderizador começa a rastrear frames. Quando o imageTarget é encontrado, o aplicativo exibe o vídeo. O vídeo pode ser configurado para reproduzir automaticamente ou pode ser iniciado em tap.

Todos os recursos são descarregados pelo aplicativo chamando onDestroy() quando o usuário fecha o aplicativo.

Conclusion

Com este blog, agora vimos como podemos usar o Vuforia para rastrear ImageTarget e exibir o vídeo em cima dele. O Vuforia pode ser usado para muitas finalidades como detecção de texto, gerenciamento de oclusão, geração de alvos de tempo de execução a partir da nuvem. Para saber mais sobre o Vuforia verifique developer.vuforia.com.

Deixe uma resposta

O seu endereço de email não será publicado.