Buscar

Artigo - Um Framework para Desenvolvimento de Aplicações de Realidade Aumentada de Alto Nível para Web

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Um Framework para Desenvolvimento de Aplicações de Realidade Aumentada de 
Alto �ível para Web 
 
Maylson Lívio dos S. Gonçalves 
Waveit Technology 
maylson@waveit.com.br 
 
 
Manoel Ribeiro Filho 
Universidade Federal do Pará 
manoelrib@gmail.com 
 
Leonardo Santos de Aguiar 
Centro Universitário do Pará 
leodeag@gmail.com
 
Abstract — This article presents the architecture of a 
framework to develop high-end augmented reality web 
applications using Ogre3D rendering engine and the marker 
tracking library ARToolKitPlus. The framework uses the 
game engine concept for the development of augmented 
reality applications, which are compiled in native code and 
executed into the browser through Java Plugins, using Java 
�ative Interfaces to access the native code, having a 
considerable performance gain against the solutions 
currently used. 
Keywords: Web Augmented Reality, Ogre3D, ARToolKitPlus. 
 
Resumo — Este artigo apresenta a arquitetura de um 
framework para desenvolvimento de aplicações de realidade 
aumentada de alto nível para a internet, utilizando o motor 
de renderização Ogre3D e a biblioteca de rastreamento de 
marcador ARToolkitPlus. O framework utiliza-se do 
conceito de motor de jogos para o desenvolvimento das 
aplicações de realidade aumentada, que são compiladas em 
código nativo e executadas no browser via Java Plugins, 
utilizando Java �ative Interfaces para acessar o código 
nativo, tendo um considerável ganho de desempenho em 
relação às soluções atualmente utilizadas. 
Palavras-chave: Realidade Aumentada Web, Ogre3D, 
ARToolKitPlus. 
I. INTRODUÇÃO 
A Realidade Aumentada (RA) é definida como uma 
fusão entre o mundo real e objetos virtuais, criando um 
cenário no qual as informações contidas no mundo real são 
incrementadas com objetos virtuais gerados por 
computador [1], utilizando-se um software adequado, 
geralmente em conjunto com uma webcam e um marcador. 
Essa tecnologia tem sido bastante utilizada na internet 
nos últimos anos, como forma de promover produtos e/ou 
marcas, apresentando-as de forma inovadora em um site 
como parte uma campanha publicitária. Além de servir 
como instrumento de veiculação publicitária, a RA na web 
pode ainda ser utilizada em aplicativos de ensino à 
distância, em jogos eletrônicos, ferramentas colaborativas 
etc. 
Dessa forma, é importante desenvolver tecnologias que 
permitam a distribuição de aplicações de realidade 
aumentada de alto nível na internet, que estejam alinhadas 
com as tecnologias 3D disponíveis atualmente, de maneira 
a tirar máximo proveito das potencialidades dessa 
tecnologia. 
Atualmente, pode-se destacar a veiculação de 
aplicações de RA na web através do uso do FLARToolKit 
em conjunto com ActionScript 3.0, rodando no Adobe 
Flash Player [2]. 
Neste contexto, este trabalho tem como objetivo 
apresentar uma proposta para o desenvolvimento de 
aplicações de realidade aumentada de alto nível para a 
web, utilizando um framework multiplataforma projetado 
em cima de ferramentas comuns no desenvolvimento de 
jogos eletrônicos, como a engine de renderização gráfica 
Ogre3D [3] e a biblioteca de rastreamento de marcador 
ARToolKitPlus [4]. Para captura de vídeo foi utilizada a 
biblioteca OpenCV [5], a qual é bastante popular no 
desenvolvimento de aplicação de visão computacional. 
Todas as três bibliotecas utilizam C++ como linguagem de 
programação, provendo um grande ganho de desempenho 
em relação ao FLARToolKit e ActionScript 3.0. 
O framework proposto neste trabalho utiliza a 
tecnologia Java Plugin [6] para a publicação do aplicativo 
na web, usufruindo da tecnologia Java Native Interfaces 
(JNI) [7], a qual permite que a uma aplicação Java acesse 
código nativo de outra aplicação. A grande vantagem na 
utilização de Java Plugins decorre do fato de que o Java 
Runtime (ambiente de execução do Java) tem grande 
penetração nos computadores atuais [8]. 
Este artigo está dividido da seguinte forma: a seção II 
trata dos trabalhos relacionados. A seção III faz um breve 
resumo das ferramentas utilizadas no desenvolvimento do 
framework proposto. A seção IV mostra as definições da 
arquitetura proposta. A seção V exemplifica como o 
aplicativo desenvolvido é publicado na web. A seção VI 
mostra alguns estudos de caso e, por fim, são feitas as 
conclusões e perspectivas para trabalhos futuros. 
 
II. TRABALHOS RELACIONADOS 
Os trabalhos relacionados encontrados na literatura 
científica enquadram-se basicamente em dois campos 
distintos: “aplicações de RA de alto nível” e “aplicações 
de RA para web”. Para o primeiro item, pode-se citar o 
trabalho de [9], que apresenta o OGREAR, um framework 
de RA desenvolvido no GRVM (Grupo de Pesquisa em 
Realidade Virtual e Multimídia do CIn UFPE). É 
considerado por seus autores um framework genérico, 
podendo ser utilizado para desenvolver aplicações de RA 
tanto para desktop como para handheld. 
Como visto em [9], a biblioteca OGREAR é 
responsável por fazer uma interface entre a captura da 
imagem e o tratamento desses valores. Este framework 
permite calcular as características geométricas dos 
marcadores presentes no frame para utilizá-los no mundo 
virtual. A aquisição de imagens pode ser implementada 
usando qualquer biblioteca de acesso à câmera e o 
rastreamento de marcadores é independente de qualquer 
biblioteca de detecção. 
 Pode-se citar ainda o Studierstube [10], que tem o seu 
foco em aplicações multiplataforma, sendo composto de 
bibliotecas para renderização, gerenciamento de mídia 
(áudio, vídeo e câmera), distribuição em rede, além de 
realizar rastreamento de marcadores com um wrapper 
sobre o ARToolKitPlus. 
Para o segundo item, os trabalhos encontrados na 
literatura utilizam alguma arquitetura de sistema 
distribuído, de forma que a aplicação de RA roda em um 
servidor, de onde é distribuída aos clientes. Em [2] é 
apresentado um middleware para distribuição de RA na 
web, na qual o apresentador interage com o aplicativo que 
então envia as saídas para os clientes. Em [11] é 
apresentada uma ferramenta de distribuição de ambientes 
virtuais para apoio a projetos multidisciplinares de ensino, 
de modo que foram desenvolvidos dois protótipos: um na 
área biológica e outro na área de química. Para a 
distribuição foi utilizado o CORBA, utilizando arquitetura 
cliente/servidor. 
O framework apresentado neste trabalho difere dos 
outros por se concentrar em RA de alto nível com foco em 
distribuição fácil e acessível do aplicativo na internet, de 
forma descentralizada, onde cada usuário carrega, executa 
e interage com o aplicativo de RA no próprio browser. 
 
III. FERRAMENTAS 
A. Ogre3D 
O Ogre3D (Object-Oriented Graphics Rendering 
Engine) é uma engine de renderização 3D desenvolvida 
em C++, orientado a objetos, multiplataforma e open 
source, muito utilizado no desenvolvimento de jogos 
eletrônicos. Os recursos gráficos do Ogre3D incluem 
suporte a OpenGL, OpenGL ES e DirectX [3]. 
B. ARToolKitPlus 
ARToolKitPlus é uma versão estendida e orientada a 
objetos da popular biblioteca de rastreamento de marcador 
ARToolKit [4], no entanto, diferente desta, o 
ARToolKitPlus foca apenas nos algoritmos de 
rastreamento, sem prover qualquer meio de acessar a 
webcam ou efetuar qualquer renderização. 
C. OpenCV 
OpenCV (Open Source Computer Vision) é uma 
biblioteca para programação de visão computacional em 
tempo-real. A biblioteca tem mais de 500 algoritmos 
otimizados para essa função. Suas aplicações variam de 
arte interativa à navegação robótica. Seu grupo de usuários 
tem mais de 40 mil inscritos [5]. 
D. Java Plugins e Java )ative Interfaces 
A tecnologia Java Plug-in, incluída como parte do Java 
Runtime Environment Standard Edition, estabelece a 
conexão entre o browsere a plataforma Java. Essa 
conexão permite que Applets Java rodem no desktop, com 
ou sem o browser. [6] 
A tecnologia Java Native Interface é uma poderosa 
ferramenta da plataforma Java. Aplicações que usam JNI 
podem incorporar código nativo escrito em linguagens de 
programação como C e C++, bem como código escrito em 
Java. [7] 
. 
IV. ARQUITETURA DO SISTEMA 
A arquitetura do framework preza pela simplicidade e 
pela modularidade, sendo sua compreensão bastante 
simples. A Figura 1 mostra a arquitetura do framework em 
suas diversas camadas. 
No nível mais baixo, são encontradas suas bibliotecas 
base, responsáveis pela renderização, captura de vídeo e 
rastreamento de marcador. Logo acima, tem início a 
camada de abstração do framework, responsável por 
ocultar do usuário detalhes de acesso às bibliotecas do 
nível anterior. Neste nível o usuário não precisa fazer 
qualquer alteração, pois este deve trabalhar na camada 
mais acima, a camada de aplicação. É na camada de 
aplicação que o usuário pode desenvolver seu aplicativo, 
podendo carregar uma cena com modelos 3D, luzes, 
texturas etc. utilizando o módulo Scene Loader. 
 
 
 
Figura 1. Arquitetura do framework proposto. 
 
Cada módulo do framework tem uma função específica 
e bem definida que auxiliam o programador a desenvolver 
o aplicativo rapidamente. Juntos, estes módulos 
praticamente eliminam a preocupação com a parte de RA 
do aplicativo. 
Os módulos do framework são: 
A. Manager 
O Manager é uma das partes mais importantes do 
framework, embora deva ficar oculto ao usuário. Este 
módulo é responsável por gerenciar todo o ciclo de vida do 
aplicativo, desde sua inicialização até o controle do game 
loop. 
B. Game State Manager 
Este módulo faz a interface entre o Manager e a 
aplicação do usuário. Cada aplicação do usuário é um 
Game State, ficando o Game State Manager responsável 
pelo gerenciamento de todos os Game States. 
C. Scene Loader 
Este módulo é responsável por inicializar os recursos 
do Ogre3D, recebendo como parâmetro um arquivo XML 
contendo toda a descrição da cena, como posição dos 
modelos, escala, rotação, luz ambiente etc. 
D. Java Callbacks 
O módulo Java Callbacks é responsável pela 
implementação da interface de comunicação com o Java, 
expondo alguns métodos do Manager para que a aplicação 
possa ser inicializada, atualizada e encerrada através do 
Java. Além disso, esse módulo também implementa 
alguns métodos responsáveis por injetar input recebido do 
Java para o framework. 
 
Uma vez que a aplicação tenha sido desenvolvida, 
utiliza-se o Launcher, um simples Java Applet responsável 
por enviar os comandos de input para o framework e 
receber a renderização realizada por este a cada frame. 
 
V. DISTRIBUINDO O APLICATIVO NA WEB 
Disponibilizar o aplicativo na internet torna-se bastante 
simples. É necessário apenas colocar os pacotes JAR no 
servidor web, assinados digitalmente, definir alguns 
parâmetros no arquivo JNLP e colocar o pequeno código 
JavaScript no site, responsável por carregar o Applet Java. 
Todo esse processo é descrito a seguir. 
 
A. Pacotes JAR 
A tecnologia Java Plugin requer que todos os arquivos 
necessários à execução do aplicativo estejam compactados 
no formato JAR. Dessa forma, é necessário compactar 
toda a media da aplicação, bem como todos os binários 
necessários. 
Por exemplo, se uma determinada aplicação utiliza os 
arquivos “Modelos.zip” e “Texturas.zip” como fonte de 
media, basta colocá-los na mesma pasta, abrir o terminal e 
executar o comando: 
 
jar.exe cfv media.jar Modelos.zip Texturas.zip 
 
 Assim é gerado o arquivo “media.jar”, contendo toda a 
media necessária à correta execução do aplicativo. Da 
mesma forma, para gerar o arquivo JAR que conterá os 
binários do aplicativo, é necessário colocar na mesma 
pasta o binário do Launcher (Launcher.class) e a DLL 
gerada pelo framework (framework.dll). 
 
jar.exe cfv bin.jar framework.dll Launcher.class 
 
 Sendo gerado o arquivo “bin.jar”. O próximo passo é 
assinar os arquivos JAR. 
 
B. Assinatura digital dos arquivos JAR 
Por fazer uso da tecnologia JNI, o Launcher priva-se 
do ambiente seguro e gerenciado do Java e quebra, a 
princípio, a portabilidade do aplicativo, uma vez que o 
código nativo só poderá ser executado na plataforma para 
a qual foi compilado. Desse modo, como forma de impor 
uma maior segurança aos Applets, é necessário assinar 
digitalmente os arquivos JAR, de forma que o usuário será 
alertado sobre a execução do aplicativo e lhe será 
perguntado se deseja executá-lo no browser. 
É possível criar uma assinatura digital para os arquivos 
JAR utilizando ferramentas disponibilizadas pelo próprio 
Java, como o keytool e o jarsigner. 
 
C. Arquivo J)LP 
Aplicações desenvolvidas com o Java Plugin são 
inicializadas utilizando Java Network Launch Protocol 
(JNLP), o que implica na criação de um arquivo JNLP 
que contém instruções para o Java baixar os arquivos JAR 
requeridos e inicializar o aplicativo, além de passar outros 
parâmetros úteis ao Launcher, como as dimensões do 
Applet, por exemplo. 
 
D. Website 
Para publicar o aplicativo num website, é necessário 
colocar os arquivos JAR no servidor e carregar o Applet 
utilizando JavaScript, como o exemplo abaixo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<script 
 src="http://www.java.com/js/deployJava.js"> 
</script> 
<script> 
 var attributes = {code: 'Launcher.class', 
 width: 1024, 
 height: 480, 
 archive: 'bin.jar'}; 
 
 var params = {jnlp_href: aplicativo.jnlp', 
 separate_jvm: 'true'} ; 
 deployJava.runApplet(attributes, params, '1.6'); 
 
</script> 
VI. ESTUDOS DE CASO 
Como forma de avaliar as potencialidades deste 
framework, foram desenvolvidas algumas aplicações de 
RA e disponibilizadas na web. Os exemplos desenvolvidos 
incluem técnicas como skeleton animation, shaders e 
modelos 3D high-poly. 
Nos testes realizados, o aplicativo mostrou-se bastante 
robusto, rodando sem problemas no Windows XP, Vista e 
Seven, nos browsers Internet Explorer, Firefox, Opera, 
Safari e Chrome, em um computador Intel Pentium 4, com 
2 GB de RAM, placa de vídeo GeForce 8400. 
A Figura 2 mostra um aplicativo de RA que exibe uma 
cena com vários modelos, somando mais de 50 mil 
polígonos. Adicionalmente, é aplicado um shader 
responsável por gerar o efeito de Ambient Occlusion em 
tempo-real. Nesse aplicativo específico, o computador do 
usuário precisa ter uma placa de vídeo com suporte a 
Vertex Shaders. Caso não tenha, uma mensagem é exibida 
indicando que o computador não cumpre a configuração 
mínima requerida. 
 
 
 
Figura 2. Cena com mais de 50 mil polígonos utilizando shaders. 
 
 A Figura 3 mostra um exemplo de RA desenvolvido 
com o framework, que faz uso de Skeletal Animation e 
Hardware/Software Skinning. 
 
 
 
Figura 3. RA com Skeleton Animation e Hardware Skinning. 
 
VII. CONCLUSÕES 
Nos testes realizados o aplicativo mostrou-se bastante 
eficiente, atingindo valores na faixa de 60 FPS. Este 
trabalho permite que aplicações de alta qualidade sejam 
distribuídas na internet de maneira simples, utilizando toda 
a capacidade gráfica do Ogre3D, tal como acesso à GPU, 
Shaders, Skeletal Animations, scene graph, etc. 
Como trabalho futuro, pretende-se expandir o 
framework adicionando outras bibliotecas que realizem 
funções específicas, como renderização de vídeo in-game, 
simulação de física e reprodução de áudio 3D posicional. 
Além disso, o Launcher precisa ainda ser melhorado para 
que fique completamente independente da aplicação que 
está sendo desenvolvida, de formaque os atributos 
necessários sejam passados como parâmetros no arquivo 
JNLP, evitando ter de alterá-los via código. O framework 
precisa ser portado para outras plataformas como Linux e 
Mac, pois o uso de Java com JNI depende da plataforma-
alvo. É necessário ainda fazer uma comparação entre dois 
aplicativos de realidade aumentada semelhantes, sendo um 
desenvolvido com FLARToolKit e ActionScript 3.0 e 
outro desenvolvido com o framework proposto neste 
artigo. Um exemplo de aplicação está acessível em 
www.waveit.com.br/svr2011. 
 
REFERÊNCIAS 
[1] R. T. Azuma. “Recent advances in augmented reality,” IEEE 
Computer Graphics and Applications, 21:34–47, 2001. 
[2] M. D. Silva, E. S. Santos, W. V. Arantes, L. V. de O. Lima, A. 
Cardoso, E. Lamounier, “Uma proposta de um middleware para 
distribuição de realidade aumentada pela web como ferramenta de 
apoio para educação a distância,” VI Workshop de Realidade 
Virtual e Aumentada, 2009. 
[3] G. Junker, Pro Ogre 3D Programming, Apress, USA, 2006. 
[4] D. Wagner, D. Schmalstieg, “ARToolKitPlus for Pose Tracking on 
Mobile Devices,” Proceedings of XII Computer Vision Winter 
Workshop, 2007. 
[5] G. Bradski, A. Kaehler, Learning OpenCV: Computer Vision with 
the OpenCV Library, O’Reilly Media, USA, 2008. 
[6] Java Plugin Technology, Disponível em: 
http://www.oracle.com/technetwork/java/index-jsp-141438.html. 
Acesso em 11 de março de 2011. 
[7] G. Bradski, A. Kaehler, Java Native Interface: Programmer's 
Guide and Specification, Prentice Hall, USA, 1999. 
[8] Flash Player Penetration, Disponível em: 
http://www.adobe.com/products/player_census/flashplayer/. 
Acesso em 11 de março de 2011. 
[9] T. Farias, J. Lima, V. Teichrieb, J. Kelner. “Construção de 
Aplicações de Realidade Aumentada Utilizando Bibliotecas de 
Alto Nível,” Workshop de Aplicações de Realidade Virtual, 
Recife, pp. 1-4, 2006. 
[10] D. Schmalstieg, A. Fuhrmann, G. Hesina, Z. Szalavari, L. 
Encarnação, M. Gervautz, W. Purgathofer. “The Studierstube 
augmented reality project,” Teleoperators and Virtual 
Environments, vol. 11, issue 1, pp 32-45, 2002. 
[11] M. W. de S. Ribeiro. Arquitetura para distribuição de ambientes 
vituais multidisciplinares. PhD thesis, Universidade Federal de 
Uberlândia, 2006. 
[12] Deploying a Java Web Start Application, Disponível em: 
http://download.oracle.com/javase/tutorial/deployment/webstart/de
ploying.html. Acesso em 11 de março de 2011.

Outros materiais