ARTIGOS:Levelhead Um jogo Print e Play

Ir para: navegação, pesquisa

"Levelhead é um inovador e fantástico jogo, criado pelo designer e programador Julian Oliver. O jogo open source é baseado em um cubo real que utiliza recurso da tecnologia de realidade aumentada para reproduzir o cubo virtual no monitor. É um novo conceito: print e play!"

Levelhead.jpg


Introdução

Floorplan lg2.jpg

O jogo Levelhead, desenvolvido por Julian Oliver, utiliza a técnica de realidade aumentada, definida como a sobreposição de objetos virtuais tridimensionais gerados por computador no ambiente real por meio de algum dispositivo tecnológico (webcam, por exemplo). A computação gráfica, em junção de algoritmos de visão computacional, é o principal fator que permite o desenvolvimento desta técnica.

Levelhead03.jpg

Além da sobreposição dos objetos virtuais, a realidade aumentada permite o manuseio/interação destes objetos com os próprios movimentos das mãos. Assistindo o vídeo, parece até ficção científica, mas não é. É apenas um software livre: basta compilar, imprimir e jogar.

Levelhead é também conhecido como o cubo mágico do século 21; ele utiliza cada face de um cubo para projetar os cômodos do labirinto. Cada cômodo possui uma ligação lógica com outro cômodo, assim podemos conduzir o personagem até a saída.

O jogo utiliza memória espacial, onde o jogador deve passar por 3 fases (cada fase pertence a um cubo). Atualmente existem 3 níveis interligados entre si. O desafio é conduzir o personagem até a saída dos 3 cubos no menor tempo possível. Confira o vídeo AQUI ou na figura !


O jogo não é comercializado e pode ser obtido gratuitamente na internet para montagem. O projeto foi desenvolvido na plataforma Debian GNU/Linux. A seguir, um vídeo demonstrando a operacionalidade do jogo (uma verdadeira obra-prima). Aos interessados na demonstração do sistema em eventos de software livre, entrem em contato para um possível agendamento.

Download e dependência

O jogo Levelhead requer uma série de requisitos. Alguns não obrigatórios, outros já são imprescindíveis. Sendo assim, seguem abaixo os links para download e uma breve explicação de cada item.

* Cal3d 0.11: Cal3D é uma biblioteca de animação esqueletal de personagens com código-fonte aberto e multiplataforma (obtenha o pacote da sua distro). https://gna.org/projects/cal3d/
* osgcal 0.1.44: Ambiente de desenvolvimento de adaptação do Cal3d para OpenSceneGraph. http://download.gna.org/underware/
* openscenegraph 1.2: Biblioteca para o desenvolvimento de aplicações gráficas de elevado desempenho.http://www.openscenegraph.org/projects/osg/wiki/Downloads/PreviousReleases
* gstreamer: Biblioteca para aplicações multimídia (obtenha o pacote da sua distro). http://www.gstreamer.net/
* bakefile: Automatizador de projetos (obtenha o pacote da sua distro). http://www.bakefile.org/
* Artoolkit 2.71.1: Biblioteca de realidade aumentada. http://www.hitl.washington.edu/artoolkit/download/
* ArtoolkitPlus 2.1.1: Biblioteca de AR baseada no Artoolkit. http://studierstube.icg.tu-graz.ac.at/handheld_ar/artoolkitplus.php

Pacotes opcionais:

* uvcview: Módulo do kernel. Muito utilizado pelas câmeras atuais. http://linux-uvc.berlios.de/
* libwebcam: Biblioteca para câmeras logitec, utilizado para ajustar o foco da câmera. http://www.quickcamteam.net/software/libwebcam

Instalação com 1-Click Install

Graças a tecnologia openSUSE Build Service, podemos intalar o jogo levelhead sem a menor dor de cabeça. A seguir os links:

Versão GStreamer: open source multimedia framework e V4L1 (Video for Linux 1)

1click.jpg levelhead no repositório de software.

Instalação total a partir do código fonte

Download e instalação da ARToolKit

Devemos começar a gincana com o pacote ARToolKit.

Em primeiro lugar, após o download, descompacte o pacote tar.gz e execute o comando ./configure. Selecione a opção "5" para o sistema de vídeo/captura utilizar a biblioteca gstreamer. Logo após, responda as perguntas com a opção "n" e "y". A seguir, utilize o comando make para compilar o pacote. Abaixo um exemplo de cada passo:

Podemos encontrar o código fonte no SourceForge: http://sourceforge.net/projects/artoolkit/

A seguir, o comando para efetuar o download do projeto:

$ wget http://downloads.sourceforge.net/project/artoolkit/artoolkit/2.72.1/ARToolKit-2.72.1.tgz

Descompacte o pacote com o comando:

$ tar -zxvf ARToolKit-2.72.1.tgz

Procedimentos para dispositivos compatíveis com a API V4L1

Entre na pasta recém-criada.

$ cd ARToolKit/

Execute o comando ./configure, selecione a opção 1 e responda as perguntas como no exemplo a seguir:

$ ./configure
Select a video capture driver.
 1: Video4Linux
 2: Video4Linux+JPEG Decompression (EyeToy)
 3: Digital Video Camcoder through IEEE 1394 (DV Format)
 4: Digital Video Camera through IEEE 1394 (VGA NONCOMPRESSED Image Format)
 5: GStreamer Media Framework
Enter : 1
Color conversion should use x86 assembly (choose 'n' for 64bit systems)?
Enter : n
Do you want to create debug symbols? (y or n)
Enter : n
Build gsub libraries with texture rectangle support? (y or n)
GL_NV_texture_rectangle is supported on most NVidia graphics cards
and on ATi Radeon and better graphics cards
Enter : y
create ./Makefile
  create lib/SRC/Makefile
  create lib/SRC/AR/Makefile
  create lib/SRC/ARMulti/Makefile
  create lib/SRC/Gl/Makefile
  create lib/SRC/VideoLinux1394Cam/Makefile
  create lib/SRC/VideoLinuxDV/Makefile
  create lib/SRC/VideoLinuxV4L/Makefile
  create lib/SRC/VideoSGI/Makefile
  create lib/SRC/VideoMacOSX/Makefile
  create lib/SRC/VideoGStreamer/Makefile
  create lib/SRC/ARvrml/Makefile
  create util/Makefile
  create util/calib_camera2/Makefile
  create util/calib_cparam/Makefile
  create util/calib_distortion/Makefile
  create util/mk_patt/Makefile
  create util/graphicsTest/Makefile
  create util/videoTest/Makefile
  create examples/Makefile
  create examples/collide/Makefile
  create examples/exview/Makefile
  create examples/loadMultiple/Makefile
  create examples/modeTest/Makefile
  create examples/multi/Makefile
  create examples/optical/Makefile
  create examples/paddle/Makefile
  create examples/paddleDemo/Makefile
  create examples/paddleInteraction/Makefile
  create examples/range/Makefile  
  create examples/relation/Makefile
  create examples/simple/Makefile
  create examples/simple2/Makefile
  create examples/simpleLite/Makefile
  create examples/twoView/Makefile
  create examples/simpleVRML/Makefile
  create include/AR/config.h 
Done.

Crie a variável ambiental ARTOOLKIT_CONFIG conforme o exemplo abaixo:

$ export ARTOOLKIT_CONFIG="-dev=/dev/video0 -palette=YUV420P -width=640 -height=480"

Entre na pasta bin e execute o programa videoTest para verificar se tudo está funcionando corretamente.

$ cd bin
$ ./videoTest
Using config string from environment [-dev=/dev/video0 -palette=YUV420P -width=640 -height=480].
Image size (x,y) = (640,480)

Se tudo estiver funcionando corretamente, será apresentada uma janela cujo seu conteúdo será o vídeo ao vivo da sua webcam.

Procedimentos para dispositivos compatíveis com a API V4L2

Após a descompactação do pacote, baixe o patch para a API V4L2:

$ wget http://img.vivaolinux.com.br/imagens/artigos/comunidade/artk-v4l2-2.72.1.20080427.patch

E o aplique na pasta recém criada:

$ patch -p0 -d . < artk-v4l2-2.72.1.20080427.patch

Agora entre na pasta ARToolKit.

$ cd ARToolKit/
Execute o comando ./configure, selecione a opção 3 e responda as perguntas como no exemplo a seguir:
$ ./configure
Select a video capture driver.
 1: Video4Linux
 2: Video4Linux+JPEG Decompression (EyeToy)
 3: Video4Linux2
 4: Digital Video Camcoder through IEEE 1394 (DV Format)
 5: Digital Video Camera through IEEE 1394 (VGA NONCOMPRESSED Image Format)
 6: GStreamer Media Framework
Enter : 3
Do you want to create debug symbols? (y or n)
Enter : n
Build gsub libraries with texture rectangle support? (y or n)
GL_NV_texture_rectangle is supported on most NVidia graphics cards
and on ATi Radeon and better graphics cards
Enter : y
  create ./Makefile
  create lib/SRC/Makefile
  create lib/SRC/AR/Makefile
  create lib/SRC/ARMulti/Makefile
  create lib/SRC/Gl/Makefile
  create lib/SRC/VideoLinux1394Cam/Makefile
  create lib/SRC/VideoLinuxDV/Makefile
  create lib/SRC/VideoLinuxV4L/Makefile
  create lib/SRC/VideoLinuxV4L2/Makefile
  create lib/SRC/VideoSGI/Makefile
  create lib/SRC/VideoMacOSX/Makefile
  create lib/SRC/VideoGStreamer/Makefile
  create lib/SRC/ARvrml/Makefile
  create util/Makefile
  create util/calib_camera2/Makefile
  create util/calib_cparam/Makefile
  create util/calib_distortion/Makefile
  create util/mk_patt/Makefile
  create util/graphicsTest/Makefile
  create util/videoTest/Makefile
  create examples/Makefile
  create examples/collide/Makefile
  create examples/exview/Makefile
  create examples/loadMultiple/Makefile
  create examples/modeTest/Makefile
  create examples/multi/Makefile
  create examples/optical/Makefile
  create examples/paddle/Makefile
  create examples/paddleDemo/Makefile
  create examples/paddleInteraction/Makefile
  create examples/range/Makefile
  create examples/relation/Makefile
  create examples/simple/Makefile
  create examples/simple2/Makefile
  create examples/simpleLite/Makefile
  create examples/twoView/Makefile
  create examples/simpleVRML/Makefile
  create include/AR/config.h
Done.

Crie a variável ambiental ARTOOLKIT_CONFIG conforme o exemplo abaixo:

$ export ARTOOLKIT_CONFIG="v4l2src device=/dev/video1 use-fixed-fps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24,width=960,height=720 ! identity name=artoolkit ! fakesink"

Entre na pasta bin e execute o programa videoTest para verificar se tudo está funcionando corretamente.

$ cd bin/
$ ./videoTest
Using config string from environment [v4l2src device=/dev/video1 use-fixed-fps=false ! ffmpegcolorspace !   capsfilter caps=video/x-raw-rgb,bpp=24,width=960,height=720 ! identity name=artoolkit ! fakesink].
libARvideo: GStreamer 0.10.22
libARvideo: GStreamer pipeline is PAUSED!
libARvideo: GStreamer negotiated 960x720
libARvideo: GStreamer pipeline is PLAYING!
libARvideo: GStreamer pipeline is PAUSED!
Image size (x,y) = (960,720)

Se tudo estiver funcionando corretamente, será apresentado uma janela cujo seu conteúdo será o vídeo ao vivo da sua webcam.

Instalação da biblioteca ARToolkitPlus

A biblioteca ARToolkitPlus é descompactada com o comando unzip, na pasta criada anteriormente. Antes de compilarmos com o comando make, crie a variável ambiental ARTKP, informando a localização exata da biblioteca ARToolkit. Veja a instrução a seguir:

$ mkdir ARToolKitPlus/
$ cd ARToolKitPlus/
$ unzip ../ARToolKitPlus/ARToolKitPlus_2.1.1.zip
$ export ARTKP=[PATH-ARTOOLKIT]/ARToolKitPlus
$ qmake
$ make

Instalação da biblioteca OpenSceneGraph

Agora descompacte, compile e instale o pacote OpenSceneGraph seguindo as instruções abaixo:

$ tar -zxvf ../openscenegraph-1.2.0.tar.gz
$ cd openscenegraph-1.2.0/
$ cd OpenThreads
$ make
$ sudo make install
$ cd ..
$ cd Producer
$ make
$ sudo make install
$ cd ..
$ cd OpenSceneGraph
$ make COMPILE_EXAMPLES=yes
$ sudo make install

Instalação da biblioteca osgcal

O próximo passo é descompactar, compilar e instalar a biblioteca osgcal. Veja os comandos a seguir:

Verifique a existência do arquivo openscenegraph.pc e openthreads.pc na pasta /usr/lib/pkgconfig/ ou /usr/lib64/pkgconfig/. Se não existir, copie com o comando cp:

cp [PATH openscenegraph]/OpenSceneGraph/Make/openscenegraph.pc /usr/lib/pkgconfig/
cp [PATH openscenegraph]/OpenThreads/Make/openthreads.pc /usr/lib/pkgconfig/

Exporte a variável PKG_CONFIG_PATH (se necessário):

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

Para inicar a compilação, utilize os comando abaixo:

$ export OPENTHREADS_INC_DIR=[PATH openscenegraph]/OpenThreads/include
$ export OPENTHREADS_LIB_DIR=[PATH openscenegraph]/OpenThreads/lib/Linux64
$ export  PRODUCER_INC_DIR=[PATH openscenegraph]/Producer/include
$ export PRODUCER_LIB_DIR=[PATH openscenegraph]/Producer/lib/Linux64
$ tar -zxvf ../osgcal-0.1.44.tar.gz
$ cd osgcal-0.1.44/
$ ./configure
$ make
$ sudo make install

Compilação do jogo Levelhead

Finalmente compilaremos o jogo Levelhead. Primeiramente efetue o download do jogo no repositório svn:

$ svn co http://www.inclusiva-net.es/svn/levelhead/trunk
$ cd trunk/bin

Edite o arquivo path_config.sh e informe a localização das bibliotecas ArtoolkitPlus e Artoolkit. Apenas para efeito de verificação, confirme também os PATHs no arquivo build.sh.

A seguir o conteúdo EXEMPLO dos arquivos path_config.sh e build.sh:

  • path_config.sh
ARTOOLKIT_PATH=/neti/programas64/levelhead/DEPENDENCIAS/ARToolKit-V4L1
ARTOOLKITPLUS_PATH=/neti/programas64/levelhead/DEPENDENCIAS/ARToolKitPlus
  • build.sh
#!/bin/sh
. ./path_config.sh
echo $ARTOOLKIT_PATH
echo $ARTOOLKITPLUS_PATH
bakefile -f gnu my_make.bkl
make -f GNUmakefile DEBUG=1 ARTOOLKIT_PATH=${ARTOOLKIT_PATH} ARTOOLKITPLUS_PATH=${ARTOOLKITPLUS_PATH}

Verificar a existências de alguns arquivos na pasta/usr/lib64/blender:

$  ls
blender        GPL-license.txt  Makefile.in  outfit00.xfg  outfit04.xfg  outfit08.xfg  outfit12.xfg  outfit.xfg          texture
blenderplayer  icons            MC1.blend    outfit01.xfg  outfit05.xfg  outfit09.xfg  outfit13.xfg  plugins             verse
cal3d.xfg      Makefile         MC2.blend    outfit02.xfg  outfit06.xfg  outfit10.xfg  outfit14.xfg  Python-license.txt
copyright.txt  Makefile.am      MC3.blend    outfit03.xfg  outfit07.xfg  outfit11.xfg  outfit15.xfg  release_249.txt

Finalmente, para compilar, execute o comando:

$ sh build.sh

Atenção: Os arquivos path_config.sh e build.sh encontram-se na pasta trunk/bin do Levelhead.

Imprima as imagens, recorte e monte os cubos localizados na pasta trunk/bin/Data/images e pronto!

Agora, para jogar, basta executar o comando:

$ sh start_levelHead.sh

Mais informações sobre o projeto em: http://selectparks.net/~julian/levelhead/

Conclusão: "O próximo grande salto evolutivo da humanidade será a descoberta de que cooperar é melhor que competir"

Sobre o autor: (Alessandro de Oliveira Faria A.K.A.CABELO )