Jogos Educacionais com Realidade Aumentada: Desafios de

Transcrição

Jogos Educacionais com Realidade Aumentada: Desafios de
Jogos Educacionais com Realidade Aumentada: Desafios de
Integração e Possibilidades na Construção de Objetos de
Aprendizagem
Dennis José da Silva e Ismar Frango Silveira
Faculdade de Computação e Informática – Universidade Presbiteriana Mackenzie
Rua da Consolação, 930 – 01302 907 – São Paulo – SP – Brasil
Abstract. Currently, there is a tendency in digital games development with unconventional interface (no joystick, no
keyboard and no mouse), which can be perceived through many popular devices whose interfaces are based in player
movements. On the other hand, augment reality technologies are increasingly being used in a lot of areas as an alternative
way of interaction instead of traditional ones. The possibility of convergence of both tendencies opens unprecedent doors
to more attractive interfaces, allowing more playful and perhaps effective learning objects, as never experienced before.
Nonetheless, there are a still wide range of technical and cultural challenges to be defied. Thus, the present paper dwells
on dealing with technical integration issues, presenting an architectural solution for integrate the ARToolkit API with
XNA game engine, producing a simple but functional learning object for kindergarten students as a proof of concept.
Keywords: Games, Augmented Reality, Learning Objects.
PACS: 89.20.Ff
INTRODUÇÃO
A indústria de jogos eletrônicos está se dedicando cada vez mais ao desenvolvimento de dispositivos com
interações não convencionais. Tal tendência pode ser notada por meio de investimentos de grandes empresas e nos
produtos gerados por esses investimentos como Sony Playstation Move [1] e Microsoft Kinect [2]. Em todos esses
dispositivos o jogador não fica restrito ao pressionar de botões, mas também joga movimentando o seu corpo. Um
produto de bastante destaque na atualidade é o Microsoft Kinect, que, diferentemente de seus concorrentes, permite
que o jogador não necessite de nenhum controle, apenas o sensor que captura movimento de seu corpo.
Por outro lado, a Realidade Aumentada (RA) é uma tecnologia com foco na interação que vem sendo usada por
diversas áreas inclusive Fotometria [3], Psicologia [4], Educação [5], Arquitetura [6], entre outras. Com a Realidade
Aumentada é possível interagir com objetos virtuais no mundo real: por meio de uma câmera o usuário consegue
visualizar sua interação com objetos tridimensionais gerados por computador. Esta interação é garantida
frequentemente através de marcadores fiduciários, que é o termo utilizado para designar qualquer objeto no campo
de visão de um sistema de imagem para utilização como um ponto de referência. Em sistemas de RA, este marcador
é substituído por outro elemento na imagem produzida. Mesmo com uma significativa evolução de tecnologias de
suporte a sistemas de RA markerless, ou seja, sem o uso de marcadores fiduciários, o seu uso ainda é um padrão na
área.
A convergência de ambas as tecnologias é algo natural do ponto de vista de acrescentar funcionalidades de RA a
jogos, em especial com a evolução dos dispositivos de suporte a interfaces markerless de interação gestual, como o
próprio Kinect e assemelhados. Entretanto, mesmo no que diz respeito à aplicação de técnicas de RA com
marcadores a jogos, há um problema técnico no que tange à integração das principais APIs de RA com as game
engines mais comuns, com poucas soluções que não se baseiem em arquiteturas auto-contidas: game engines que
implementam suporte próprio à RA ou APIs de RA que incorporam elementos de engines. No que diz respeito à esta
integração aplicada a jogos educacionais, o cenário é ainda mais escasso no que se refere à produção de jogos
integrando APIs e engines distintas.
Neste sentido, o presente trabalho propõe apresentar mecanismos de integração de game engines a APIs de RA,
implementando tal integração sobre duas soluções de amplo uso correntemente: a game engine XNA (ferramenta da
Microsoft utilizada para facilitar o desenvolvimento de jogos digitais em linguagem C#) com a ARToolkit – API de
desenvolvimento de aplicações RA - para disponibilizar um framework capaz de criar aplicativos de Realidade
Aumentada que possam usufruir dos recursos de uma game engine, e vice-versa. Como prova de conceito,
desenvolveu-se um jogo educativo voltado à educação básica.
JOGOS EDUCATIVOS E REALIDADE AUMENTADA – TRABALHOS CORRELATOS
A aplicação de tecnologias de RA em situações de ensino e aprendizagem não é de todo nova. As possibilidades
de aprendizagem situada trazidas por tecnologias de RA é um componente importante, segundo Dede [7], enquanto
o aumento da imersão é o fator mais destacado por Schrier [8]. Tampouco o é a área de Jogos Educacionais, cuja
adequação a situações de ensino e aprendizagem é discutida há bastante tempo por diversos autores [9][10].
Entretanto, jogos educacionais com suporte a RA advêm de desenvolvimentos mais recentes. Klopfer [11] advoga
que o contexto real mesclado às dinâmicas sociais permitidas por dispositivos móveis com jogos e RA pode auxiliar
estudantes a desenvolverem as habilidades necessárias na contemporaneidade. Um currículo baseado em jogos e RA
chegou a ser proposto em Jan et. al.[12]. Neste sentido, alguns trabalhos vêm sendo desenvolvidos nos últimos anos.
Environmental Detectives (ED), foi um AARG (Augmented & Alternative Reality Game) pioneiro desenvolvido
no MIT [13] de Educação Ambiental no qual os jogadores usam dispositivos móveis com GPS para tentar descobrir
a origem de um vazamento tóxico, entrevistando personagens virtuais e conduzindo medições ambientais e análise
de dados.
FIGURA 1. Imagens do Environmental Detectives.
Outros exemplos de jogos com suporte a RA surgiram naturalmente com a evolução das tecnologias de engines
de games e APIs de RA. Outros exemplos podem ser vistos na Figura 2 na página a seguir, que mostra, à esquerda,
crianças jogando Perfect Tens da série Body and Brain Connections. Neste jogo elas devem interagir selecionando
com gestos os números que representam potências de dez. À direita, na mesma figura, um exemplo de live book –
livro em papel que, de acordo com o reconhecimento do toque do estudante, projeta imagens tridimensionais na tela
de um computador ou dispositivo móvel.
As primeiras pesquisas tem mostrado que a utilização desta tecnologia tem trazido bons resultados no
envolvimento de estudantes de diversos níveis, segundo Klopfer, e Sheldon [14].
FIGURE 2. Imagem de crianças jogando Perfect Tens (à esquerda) e um live book (à direita)
DESAFIOS E SOLUÇÃO DE INTEGRAÇÃO
Em algumas situações a reutilização de sistemas existentes para o desenvolvimento de novos aplicativos pode ser
uma boa opção, visto que a reutilização de sistemas tem varias vantagens como o pré-conhecimento do
funcionamento do sistema, economia de tempo, o encapsulamento de código, entre outros. Porém existem algumas
dificuldades em se integrar dois sistemas, já que a necessidade do desenvolvimento de um canal para comunicação
entre os sistemas pode trazer algumas barreiras. Para esse canal é necessário que os formatos de saída e entrada
estejam de acordo com os sistemas a serem integrados. Esta padronização traz a necessidade de adaptações,
considerando ainda que o canal pode encontrar alguns níveis de heterogeneidades (Figura 3) que podem aumentar a
complexidade do seu desenvolvimento.
FIGURA 3. Graus de heterogeneidade do sistema (hardware, sistema operacional, linguagem de programação e
plataforma).
A heterogeneidade pode ser classificada em diversos níveis:
Hardware: Ocorre quando se deseja integrar dois sistemas que estejam em hardwares diferentes. Este grau de
heterogeneidade geralmente ocorre em sistemas distribuídos, onde sistemas computacionais estão espalhados em
uma rede e há aplicativos que com eles necessitam se comunicar, porém estão em maquinas diferentes com
hardwares diferentes (incluem-se aí aplicações para dispositivos móveis, entre outros).
Sistema operacional: Atualmente existe uma infinidade de sistemas operacionais que podem conter aplicativos
ou sistemas específicos e eventualmente é necessário desenvolver aplicativos para um sistema operacional que
utilize recursos de outro aplicativo que esteja em outro sistema operacional.
Linguagem de programação: Atualmente é possível encontrar diversas linguagens de programação com
características especificas, sob distintos paradigmas. Sistemas implementados em uma linguagem qualquer devem se
comunicar com sistemas elaborados em outra linguagem, neste grau de heterogeneidade.
Plataforma de programação: São plataformas necessárias para executar um software especifico. Geralmente as
plataformas incluem compiladores que gera códigos intermediários para uma maquina virtual que é responsável por
interpretar esse código e executar as instruções para o computador. As plataformas atualmente de uso mais difundido
são Oracle Java e Microsoft .Net.
Existem técnicas para integração que podem envolver uma ou mais camadas. As técnicas discutidas abaixo,
procuram resolver problemas de integração em sistemas com características heterogêneas.
Técnicas de Integração de Sistemas Heterogêneos
Atualmente existem diversos técnicas para integrar sistemas distintos nos mais diversos níveis. Algumas dessas
técnicas possibilitam a execução de programas interagindo em maquinas diferentes, integração via Internet e
execução de programas em linguagens de programação diferentes, entre outras features. Algumas delas:
Java JNI: Tecnologia empregada na integração de linguagens nativas como C e C++ com a linguagem Java, em
JNI são desenvolvidas classes e funções que são compiladas para uma dll e carregadas na execução de um programa
Java [15].
RPC e RMI: São tecnologias para implementação de chamadas remotas de função ou chamadas remotas de
métodos. As duas técnicas são semelhantes mas RPC esta vinculado a chamadas de funções, como em C, e RMI é o
suporte da plataforma Java para objetos distribuídos, consistindo na invocação de métodos. São utilizados para
integração de sistemas em maquinas diferentes que estejam na mesma rede [16].
Web Services: Web service é uma técnica de integração de sistemas via Internet. Com esta técnicas é possível ter
um sistema sendo executado em uma máquina que pode ser acessado via Internet de maneira transparente.
Inicialmente definido sobre o protocolo SOAP, um Web Service trabalha com mensagens em XML que são enviadas
e recebidas pelos sistemas em interação. Além de possuir a característica de distribuição de serviços, Web Services
são independentes de linguagem e pode ser usado para integração de sistemas em todos os níveis apresentados [16].
Integração via baixo nível (Microsoft CLR): Um exemplo de integração em baixo nível é possível de ser
visualizado no .Net framework , que permite que diversas linguagens possam ser integradas entre si. Isso é possível
por que todas as linguagens geram os mesmo códigos para a maquina virtual que os executa. Uma possibilidade de
integração é a utilização de CLI C++ (C++ com recursos de .Net) para realizar a comunicação entre o .Net e uma
biblioteca em linguagem C.
Os métodos descritos foram avaliados e concluíu-se que o método mais apropriado para a integração da API
ARToolkit e da game engine XNA seria a integração de baixo nível, devido às idiossincrasias específicas dos
sistemas envolvidos, as linguagens neles utilizadas e por proporcionar melhor desempenho, essencial para jogos.
ARQUITETURA DE INTEGRAÇÃO
O desenvolvimento do projeto iniciou-se com uma arquitetura básica e uma mecânica de funcionamento [17],
evoluindo para o modelo apresentado na Figura a seguir.
FIGURA 4. Mecânica de funcionamento, adaptado de Silva e Silveira, 2011 [17].
Nesta nova arquitetura a camada de integração realiza a comunicação entre a ARToolkit e XNA. O XNA será a
interface com o desenvolvedor que utilizara classes da camada de integração para acessar as funcionalidades da
ARToolkit. A camada de integração é composta por classes em C# e em CLI C++, as classes de C# utiliza as classes
CLI C++ que consumem funções da linguagem C da ARToolkit e suas estruturas.
O fluxo de utilização deste modelo inicia-se com o desenvolvedor utilizando classes para a administração de
câmera (carregando os arquivos de configuração) e a inicialização de objetos do tipo marcador. Essas duas classes se
comunicam e conseguem informar a matriz de View do objeto que será renderizado no marcador por meio de
cálculos da ARToolkit. O Diagrama de Pacotes e Componentes da Figura 5 explicita o modelo arquitetural
desenvolvido.
FIGURA 5. Diagrama de Pacotes e Componentes
Da arquitetura, o primeiro pacote desenvolvido foi o de transformações, visto que o mesmo possui um maior
numero de componentes dependentes. Para seu desenvolvimento, foi realizado um estudo sobre os tipos de matrizes
e suas utilizações em computação gráfica. Neste estudo foram levantados os tipos de matrizes:

Transformação: Matrizes que definem as operações de translação, rotação e escala.

Projeção: Matriz que define o mapeamento de objetos 2D em 3D.

Visualização: Matriz de transformação global que é aplicada a todos os objetos da cena com o objetivo de
simular uma câmera.
Após esse estudo inicial, foi realizada uma analise de como as ferramentas a serem integradas representam essas
matrizes. No XNA uma matriz é representada por uma estrutura (struct), que em C# guarda similaridades com
classes C++ em nível mais profundo que structs em ANSI C – tratam-se, na realidade, de value objects, instâncias
que sofrem passagem de parâmetros por cópia da estrutura, e não por referência, como ocorre com instâncias de
objetos (a menos que explicitamente indicado). Instâncias da struct XNA::Matrix interagem em mais alto nível com
objetos da classe XNA::Model, usada para controle de Modelos 3D.
A classe XNA::Model é organizada em um conjunto de objetos do tipo ModelMesh responsável por representar as
malhas do objeto tridimensional, cada objeto XNA::ModelMesh possui um conjunto de objetos XNA::Effect, a classe
XNA::Effect é utilizada para a manipulação de dados do modelo para a utilização em shaders, quando não tem uma
classe XNA::Effect especifica é comum utilizar a classe XNA::BasicEffect que possui atributos para as matrizes de
visualização (View), projeção (Projection) e transformação (World). A inicialização de modelo com os dados
desejados sem o uso de um shader especifico pode ser realizado com os métodos de criação de matrizes de
transformação, projeção e visualização da struct XNA::Matrix.
Após o levantamento da representação de matrizes no XNA, o mesmo estudo foi realizado na ARToolkit. Sendo
verificado que a ARToolkit representa suas matrizes com um variável do tipo double[3][4], ou seja, um vetor
bidimensional com tamanho 3x4. Também foi observado que a ARToolkit não inclui diretamente os valores da
ultima linha de uma matriz com coordenadas homogêneas, mas, que quando ela vai passar essa informação para o
OpenGL esses valores são preenchidos.
Foi possível identificar, no nível de programação em OpenGL um ponto de integração que poderia ser trabalhado
para o uso no XNA. Como a ideia da camada de integração é utilizar o XNA para renderização e a manipulação dos
modelos 3D, os trechos onde são usadas funções do OpenGL deveriam ser eliminados e/ou substituídos pela
integração com o XNA.
A solução proposta foi desenvolver uma classe em CLI C++ (Transformation::AdpMatrix) que possui atributos
que representam a matriz tanto em um vetor de double para a utilização e armazenamento de dados da ARToolkit e
um array bidimensional que é utilizado em C#. Essa classe contem uma interface utilizável em C# e CLI C++.
Assim, a classe em CLI C++ é agregada a uma classe em C# responsável por representar os dados para a matriz do
XNA e para a classe de adaptação em CLI C++.
Após a finalização do pacote de transformações, o pacote ARUtil foi desenvolvido como um pacote de utilidades
que tem como objetivo manipular elementos essenciais da ARToolkit por meio do XNA, suas funções incluem
controlar padrões, controlar elementos da câmera física (leitura de configurações, leitura de frames, etc.). A Figura 6
exibe um Diagrama de Classes com a estruturação dos dois pacotes implementados.
FIGURA 6. Diagrama de Classes do framework implementado
O grande desafio de integração da ARToolkit com o XNA reside no fato de que a primeira é uma API
desenvolvida em linguagem C, portanto não possui o conceito de classes. Assim como no pacote Transformation, o
pacote ARUtil possui um conjunto de classes implementado em CLI C++ que realiza a conversão da linguagem C#
para a linguagem C da ARToolkit e vice-versa, além de um conjunto de classes implementados em linguagem C#
que realiza a conversão dos tipos de dados do XNA para classes em CLI C++.
Apesar de fazerem parte do mesmo pacote, as funcionalidades de câmera e marcadores são distintas. Porém as
funcionalidades do marcador possuem dependências diretas com as da câmera, portanto o primeiro conjunto de
classes a serem desenvolvidas foram as referentes à câmera. Apesar da dependência dos marcadores, as classes das
duas categorias foram desenvolvidas separadamente. Para a conversão das funções foram desenvolvidas varias
classes agregadas que representariam a estrutura de dados da ARToolkit, foram desenvolvidas classes para
representação da câmera, parâmetros da câmera e distorção.
Nestas classes foram realizadas algumas adaptações da estrutura da ARToolkit. Uma delas foi à troca de um vetor
com quatro posições para a classes de distorção. Outra adaptação realizada foi nas funções de controle da câmera
que foram encapsuladas na classe da câmera. Assim como os outros módulos desenvolvidos as classes de
marcadores possuem classes em CLI C++ e C#, as classes CLI C++ para troca de informações com a ARToolkit e a
em C# para troca de informações com XNA. Diferentemente das classes de câmera, as classes de marcadores
possuem dados que apenas podem ser lidos e inicializados nos construtores. Isto ocorre por que em alguns casos
esses dados deve ser lidos do arquivo e não podem ser alterados e em outros por que esses dados são alterados frame
a frame.
Concluída a implementação do framework de integração, um jogo educacional – ARGeomtric – foi desenvolvido
como prova de conceito deste. Trata-se um jogo simples, voltado para educação infantil, desenvolvido inteiramente
com o framework descrito nerste artigo.
ARGEOMETRIC: JOGO EDUCACIONAL COM REALIDADE AUMENTADA
O principal objetivo do ARGeometric é demonstrar um recurso educacional em uma aplicação real utilizando
XNA e ARToolkit integrados. Como condiz com a metodologia convencional de desenvolvimento de jogos, o deste
iniciou-se com um breve GDD (Game Design Document), onde foram definidas a mecânica e as regras do jogo.
O jogo consiste de uma mesa totalmente virtual, com buracos em formatos geométricos (circulo, quadrado e
triangulo), essa mesa fica parada no cenário e o jogador deve levar objetos virtuais (cubo, prisma e esfera) com
auxilio de marcadores de Realidade Aumentada até o buraco correspondente; a ideia é que o jogador associe um
objeto volumétrico com a forma geométrica alocada na mesa. A Figura 7 mostra, à esquerda, um exemplo de um
jogo de encaixe real e à direita, o jogo ARGeometric desenvolvido.
FIGURA 7. Jogo de encaixe real (à esquerda) e jogo ARGeometric criado com o framework de integração
Como o objetivo do ARGeometric foi realizar uma prova de conceito da integração unicamente para fins de
testes das funcionalidades da camada de software desenvolvida, não foram avaliados gráficos ou usabilidade,
tampouco a sua eficácia no processo de aprendizagem. A jogabilidade não convencional é difícil de controlar no
começo, mas a partir desse jogo pode se trabalhar mais os recursos da camada de integração proposta.
CONSIDERAÇÕES FINAIS
As possibilidades abertas pela convergência entre game engines e APIs de Realidade Aumentada, em especial
voltadas dispositivos móveis, ou mesmo interfaces wearable (como as recentes promessas – ainda em fase
conceitual e de realização igualmente não confirmada – do Google Glasses e do Microsoft Fortaleza), ampliam o
horizonte de novas aplicações educacionais, ao possibilitar a utilização de interfaces cada vez mais naturais e de
manipulação realmente direta. Assim, toda uma nova gama de recursos educacionais podem ser construídos a partir
de novos paradigmas de interação humano-máquina.
Este artigo pretendeu apresentar uma contribuição neste sentido, que foi o de integrar dois mecanismos
heterogêneos – a API ARToolkit, desenvolvida na linguagem C sobre OpenGL e a game engine XNA, que suporta
programação em C#. A integração se deu através da criação de um framework baseado em um mecanismo de
Adapters desenvolvidos em C++. Como prova de conceito, um jogo educacional – o ARGeometric – foi
desenvolvido utilizando-se o framework proposto. Uma vez que se esperava inicialmente verificar a possibilidade de
integração e testar as funcionalidades básicas, alguns pacotes propostos na arquitetura inicial não necessitaram ser
totalmente implementados nesta fase. Trabalhos futuros conduzem à implementação completa dos demais pacotes,
necessários, por exemplo, para garantir um maior realismo às cenas, como o caso do pacote Graphics, ou um melhor
controle de dispositivos de entrada, bem como suporte a interfaces gestuais, como o pacote Input.
REFERÊNCIAS
1. Sony Inc.. Sony Playstation Move, 2011. Retrieved from http://us.playstation.com/ps3/playstation-move/. Visited June,
2.
3.
4.
5.
6.
7.
2nd 2012.
Microsoft Corp. Kinect. 2011. Retrieved from http://www.xbox.com/pt-BR/kinect. Visited June 2nd 2012.
M. Takemura. “Photometric Inconsistency on a Mixed-Reality Face” in Strategy, p. 129-138, 2006.
S. Nilsson, B. Johansson. A Cognitive Systems Engineering Perspective on the Design of Mixed Reality systems.
Systems Engineering, p. 154-161, 2005.
C. Stapleton, C. E. Hughes. The art of Nurturing Citizen Scientists through Mixed Reality. Digital media, 2005.
T. Kakuta. “Shading and Shadowing of Architecture in Mixed Reality”in Virtual Reality, p.0-1, 2005.
C.
Dede.
“Immersive
Interfaces
for
Engagement
and
Learning”
in
Science
Vol. 323 no. 5910 pp. 66-69, 2009.
8. K. Schrier. “Using augmented reality game to teach 21st century skills” in Proceedings ACM SIGGRAPH 2006
Education Program. Retrieved from http://dl.acm.org/citation.cfm?id=1179311 . Visited June 24th, 2012
9. J. Verenikna, J. Herrington. “The affordances of computer play in young children: A preliminary study” in Proceedings
of 2nd Emerging Technologies Conf., p. 197-205, University of Wollongong, 2008.
10. M. de Aguilera, A. Mendiz. “Video games and education: Education in the face of a ‘Parallel school’” in Computers in
Entertainment 1(1).
11. E. Klopfer. Augmented Learning: Research and Design of Mobile Educational Games. MIT Press, Boston, 2008.
12. M. Jan, J. Matthews, C. Holden, J. Martin, J. “Designing an augmented reality game–based curriculum” in
Proceedings of the Eighth International Conference for the Learning Sciences, Vol. 3, pp. 45–46, Netherlands:
International Society of the Learning Sciences, 2008.
13. E. Klopfer. “Environmental detectives: The development of an augmented reality platform for environmental
simulations”in Educational Technology Research and Development, 56(2), 203–222, 2005
14. E. Klopfer, J. Sheldon. “Augmenting your own reality: Student authoring of science-based augmented reality games”in
New Directions for Youth Development. No. 128: Winter pp 85-94, 2010.
15. S. Liang. The Java Native Interface Programming’s Guide and Specification. Addison-Wesley. 1999.
16. G. Coulouris et al. . Distributed systems: concepts and design. 4th ed. Harlow: Addison-Wesley, 2005. xiv, 927 p.
(International computer science series).
17. D. J. Silva, I. F. Silveira. “Realidade Misturada aplicada a Jogos digitais: Um jogo de Realidade Misturada para
comemoração de 140 anos de Mackenzie” in Jornada de Iniciação Cientifica e Mostra de Pós-Graduação Mackenzie.
2011.

Documentos relacionados

Realidade Aumentada Aplicada a Medicina

Realidade Aumentada Aplicada a Medicina utilizado técnicas de Realidade Aumentada usando Flash, assim com o uso da Internet é possível distribuir o plugin e com um webcam focar no marcador. O sistema reconhece o marcador e exibe no mundo...

Leia mais