02 - ferramentas para desenvolvimento de aplicações de ra ... - ferramentas para... · realidade...
Post on 09-Nov-2018
219 Views
Preview:
TRANSCRIPT
Realidade Aumentada 24/09/2013
Prof. Sementille 1
Realidade Aumentada
Prof. Dr. Antonio Carlos Sementille
2 . Ferramentas para Desenvolvimento de Aplicações de Realidade Aumentada(Parte 2)
Sumário da Apresentação
� Introdução
� Visão geral da hierarquia das principais ferramentas de desenvolvimento◦ Sistemas Operacionais
◦ Bibliotecas Gráficas
◦ Bibliotecas de Comunicação
◦ Pacotes Gráficos ( de RV e RA)
◦ Pacotes de Desenvolvimento (de RV e RA)
BIBLIOTECAS DE COMUNICAÇÃO- MPI – Message-Passing Interface- PVM – Parallel Virtual Machine
Bibliotecas de Comunicação
5
Sistemas distribuídos� “Coleção de computadores
autônomos interligados através de uma rede de computadores e equipados com software que permitao compartilhamento dos recursos do sistema: hardware, software e dados" George Coulouris
� “Coleção de computadoresindependentes que se apresenta aousuário como um sistema único e consistente” Andrew Tanenbaum
BIBLIOTECAS DE COMUNICAÇÃO
Sistema Distribuído de Realidade Virtual1. Uma sensação de espaço compartilhado
◦ Uma sensação de estar localizado em um mesmolugar.
◦ A mesma cena, sons, etc.
2. Uma sensação de presença pessoal compartilhada◦ Avatar
3. Uma sensação de tempo compartilhado
4. Um modo dos participantes se comunicarem
5. Uma forma de compartilhamento
Realidade Aumentada 24/09/2013
Prof. Sementille 2
Cenários das Aplicações
1. Treinamento/Simulação◦ Campanha militar - tanques, aviões,
infantaria
2. Projetos de Engenharia◦ Aviões - asas, motor, etc.
3. e-commerce◦ Comprando produtos
4. Jogos on-line Sistemas Distribuídos de
Realidade Virtual
� Fraunhofer CVE, http://www.crcg.edu
10
Motivação para Arquiteturas paralelas
� Performance� Custo
� Disponibilidade e confiabilidade
BIBLIOTECAS DE COMUNICAÇÃO
11
Middleware
� Camada que fornece um link entre aplicações distintas.
� Conjunto reusável e expansível de serviços e funções comumente necessários por parte de várias aplicações para funcionarem bem em um ambiente de rede. (NGI workshop, ’97)
BIBLIOTECAS DE COMUNICAÇÃO
12
Middleware (cont.)� Facilita o desenvolvimento de
aplicações distribuídas.
Cliente Servidor
Middleware Middleware
BIBLIOTECAS DE COMUNICAÇÃO
Realidade Aumentada 24/09/2013
Prof. Sementille 3
13
MPI - Message-Passing Interface
� Um processo é (tradicionalmente) um PC + espaço de endereçamento
� Programas podem ter múltiplas threads compartilhando um único espaço de endereçamento.
� MPI é para a comunicação entre processos com espaços de endereçamento separados
� Comunicação inter-processos consistem de:◦ Sincronização
◦ Movimentação de dados
BIBLIOTECAS DE COMUNICAÇÃO
14
O que é MPI ?
� Message-Passing Interface� Especificação de uma biblioteca para
a passagem de mensagens◦ Não é uma linguagem◦ Não é um produto ou uma implementação
específica
� Desenhada para computadores paralelos
MPI - Message-Passing Interface
15
Por que usar MPI?
� MPI provê uma maneira poderosa, eficiente e portável de expressar programas paralelos.
� Possibilidade de desenvolvedores escreverem bibliotecas paralelas.
� MPI foi explicitamente desenhada para esse propósito
MPI - Message-Passing Interface
16
PVM - Parallel Virtual Machine
� Máquina Paralela Virtual� Biblioteca para criar uma MPV sobre um Sistema
Distribuído heterogêneo� Pode ser usado gratuitamente
◦ Linux, Windows, BSD, Alpha, SG, Sparc...� Programas PVM � SPMD ou MPMD
◦ SPMD� Mesmo programa rodando em vários nós, cada um
trabalhando em uma parte do problema
◦ MPMD� Programas diferentes trabalhando sobre dados diferentes
� Composto por◦ Deamon (pvmd) e biblioteca (libpvm)
17
� Comunicação unicast, broadcast ou multicast
� Send/receive bloqueante ou não
� Sem tolerância a falhas◦ Se coordenador sair do ar, MPV cai
PVM - Parallel Virtual Machine PACOTES GRÁFICOS� PARA REALIDADE VIRTUAL
Pacotes Gráficos
Realidade Aumentada 24/09/2013
Prof. Sementille 4
Open Scene Graph
PACOTES GRÁFICOSPARA REALIDADE VIRTUAL � Biblioteca para grafos de cena
� Construída no topo do OpenGL� C++ API� Orientada aos objetos� Código aberto� Popularidade crescente na comunidade
gráfica � Usado comercialmente (Boeing, NASA, R)� Web site:
◦ http://www.openscenegraph.org
Open Scene Graph
Open Scene Graph
� Suporta:◦ Recorte baseado no volume de
visualização (View frustum culling)
◦ Recorte baseado em oclusão
◦ Recorte de pequenas características
◦ Nós de Nível de Detalhe (LOD)
◦ Classificação de Estado
◦ Muitas outras características
Open Scene Graph
� Core OSG – Fornece a funcionalidadeessencial para o grafo de cena e renderização
� NodeKits – implementam mais tipos de nós do que os disponíveis no core
� Plugins – Entrada e Saída para diferentes tiposde arquivos
� Bibliotecas de interoperabilidade – para uso do OSG com vários pacotes e linguagens (ex. LUA e Phyton)
� Grande coleção de Exemplos
A Distribuição OSG contém: A Ditribuição OSG
Realidade Aumentada 24/09/2013
Prof. Sementille 5
Core OSG
osg::Node - Base class for all nodes in the scene graph.
osg::Group – nó de grupo geral que mantém uma lista de filhos.
Nós de transformação
osg::Transform - Um Transform é um nó de grupo para o qualtodos seus filhos são transformados por uma matriz 4x4. É frequentemente usado para posicionar objetos em cena, baseados em entradas do usuário (por ex., via mouse) ou paraanimação
Nós de Geometria
osg::Geode - um Geode é um “nó de geometria", isto é, um nó folha do grafo de cena que possui objetos “renderizáveis” associados a eles.
Objetos renderizáveis são representados por objetos da classe Drawable, então, um Geode é um Node cujo propósito é agrupar Drawables.
DrawablesClasse virtual pura para a geometria.
Tudo que pode ser renderizado é implementado como uma classederivada de Drawable.
Um Drawable não é um Node, e portanto não pode ser adicionado aografo de cena.
Em vez disso, Drawablesacompanham os Geodes, que são nós do grafo de cena
Drawables também podem ser compartilhados entre Geodesdiferentes, de modo que a mesma geometria (carregada na memória apenas uma vez) pode ser usada em diferentes partes do grafo de cena.
� Existem plugins para suportar a leitura/escrita de muitos arquivos de formatosgráficos e modelos 3D:
◦ A base de dados de carregadores inclui� OpenFlight (.flt)� TerraPage (.txp)� LightWave (.lwo)� Alias Wavefront (.obj)� Carbon Graphics GEO (.geo)� 3D Studio MAX (.3ds)� Peformer (.pfb)� Quake Character Models (.md2)� Direct X (.x)� Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl)� Designer Workshop (.dw) � AC3D (.ac) � O formato nativo .osg ASCII.
◦ Os carregadores de imagens incluem� .rgb� .gif� .jpg� .png� .tiff� .pic� .bmp� .dds� .tga
Plugins E/S de arquivos
Realidade Aumentada 24/09/2013
Prof. Sementille 6
OSGEdit
� Auxilia a composição de cena para o OSG
� Open source� Importa
modeloscriados poroutrosprogramas, arranjando suaestrutura de árvore e transformações http://osgedit.sourceforge.net/
� www.openscenegraph.org
� http://www.nps.navy.mil/cs/sullivan/osgTutorials/SceneGraphOverview.htm
� http://www.realityprime.com/scenegraph.php
References
Exemplo
OpenSceneGraph-3.0.1 Soft shadow mapping(360p_H.264-AAC).mp4 - Atalho.lnk
Exemplo
osgviewerd.exe.lnk
Panda 3D
PACOTES GRÁFICOSPARA REALIDADE VIRTUAL
PANDA 3D� Panda3D é uma 3D Engine:
- Rápido desenvolvimento- Baixa curva de aprendizado
� Desenvolvida pela Disney para odesenvolvimento do seu MMORPGToonTown.
� Mantida pela Disney e pelo CarnegieMellon University's EntertainmentTechnology Center.
Realidade Aumentada 24/09/2013
Prof. Sementille 7
DESENVOLVIMENTO COM PANDA3D� Formado por uma biblioteca, escrita
em C++, para renderização 3D edesenvolvimento de jogos
� Desenvolvimento com C++(diretamente) ou Python(indiretamente)
� Forte incentivo ao uso de Pythoncomo linguagem de script
� Lançado com a Panda 3D Public License Version 2.0.
� www.panda3d.org- Forte comunidade- Manual- APIs
� Principais própositos de uso:- Games: Performance e Qualidade- Educação: Facilidade e Confiabilidade
PANDA 3D
PANDA3D
� Abstração para o uso de OpenGL eDirectX
� Facil instalação:- Linux- Windows
� Fácil configuração
Características - Cenas
� Estrutura de dados scene graph:- Árvore com objetos a seremrenderizados.
- Existência no topo de um objeto chamadorender, criado automaticamente,
necessário para renderização.
PANDA 3D
Características - Cenas� Suporte aos formatos egg, bam, para objetos
estáticos e/ou dinâmicos
� Extensões exportadas com:- 3D max- Maya- Blender- SoftImage- MilkShape 3D- Gmax
� Utilitário Panda Viewer para visualizar os modelos
PANDA 3D Características - CenasPANDA 3D
Realidade Aumentada 24/09/2013
Prof. Sementille 8
Características - Cenas
� Scene Editor:- Criar layout 3D- Iluminação- Animação- Loading- Motion Path- Colisões
PANDA 3DCaracterísticas - CenasPANDA 3D
Características - Câmera� Movimentação default com o mouse
� Pode ser controlada por:- Mouse- Teclado- Diretivas dentro do código
1) Posição2) Ângulo3) Distância ao ponto mais próximo exibido4) Distância ao ponto mais distante exibido5) Distância Focal
PANDA 3D
Características - Câmera
� Lentes- Perspectiva
PANDA 3D
Características - Câmera
- Ortogonal
PANDA 3DCaracterísticas - Som
� Biblioteca FMOD (uso não comercial):- MP3- WAV- AIFF- MIDI- MOD- WMA- OGG
� Suporte a audio 3D
PANDA 3D
Realidade Aumentada 24/09/2013
Prof. Sementille 9
Exemplo (vídeo – simulação de água) PANDA 3D
Panda3D 3D water surface simulation(Medium).wmv - Atalho.lnk
Exemplo (vídeo – Panda3D e Artoolkit) PANDA 3D
Augmented Reality with Panda3D - shadow test(Medium).wmv - Atalho.lnk
OGRE
PACOTES GRÁFICOSPARA REALIDADE VIRTUAL
O que é OGRE?
•OGRE (Object-oriented Graphics Rendering Engine)
•Engine Gráfica 3D Open-Source orientada à cena
•Não é um Game Engine, mas sim um Rendering Engine
•Versões teste em Python, Java e .NET
Licença
� OGRE foi concebida sob uma licença open source
� O OGRE tem como licença default a GNU Lesser Public License (LGPL)
� Pode ser utilizado sob a OGRE Unrestricted License (OUL)
Características Básicas• Orientada a objetos• Provê Ferramentas, Plug-ins e Add-ons• É compatível com inúmeras configurações
de Hardware 3D• Interface de programação oferecida
nativamente é escrita em C++• Multiplataforma• Encapsula o uso de bibliotecas como
OpenGL e Direct3D• Comunidade muito ativa
Realidade Aumentada 24/09/2013
Prof. Sementille 10
Produtividade
� Interface simples e fácil de usar
� Framework de exemplo extensiva
� Requisitos comuns
� Design limpo e organizado
Suporte a plataformas e APIs 3D
� Suporte a Direct3D e OpenGL.
� Suporte a Windows (todas as principais versões), Linux e Mac OSX.
� Compila no Visual C++ e Code::Blocks no Windows.
� Compila no GCC 3+ no Linux / Mac OSX (usando XCode).
Características de Cena
� Administração flexível de cenas � Vários plugins-exemplo (ex: BSP,
Octree).
� Gráfico de cena hierárquico
� Várias técnicas de renderização de sombras
� Efeitos especiais
Exemplos de Uso
� Ankh – Jogo de aventura no Egito◦ 1° produto comercial usando OGRE –
nov/2005
OGRE
� Exemplo (vídeo – Demo Engine Gráfica)
Ogre 3D Graphics Engine Demo(Medium).wmv - Atalho.lnk
OGRE� Exemplo (Vídeo – Ogre e Artoolkit)
ArToolKitPlus integration with Ogre3D(720p).wmv - Atalho.lnk
Realidade Aumentada 24/09/2013
Prof. Sementille 11
Crystal Space
PACOTES GRÁFICOSPARA REALIDADE VIRTUAL
Crystal Space
� É uma engine para o desenvolvimento de aplicações 3D escrita em C++
� Software Open Source
� Sistemas Operacionais suportados:◦ Windows, Linux, Unix e Mac OSX
� Disponível: http://www.crystalspace3d.org
Crystal Space– Exemplo (vídeo 1)
Fur & Hair Rendering in Crystal Space(720p_H.264-AAC).wmv - Atalho.lnk
Crystal Space- Exemplo (vídeo 2)
Crystal Space Progressive LODs - 1(360p_H.264-AAC).wmv - Atalho.lnk
Irrlicht
PACOTES GRÁFICOSPARA REALIDADE VIRTUAL
Irrlicht
� É uma engine 3D escrita em C++
� Alto desempenho
� Licença zlib
� Boa documentação
� Suporta tanto OpenGL quanto DirectX
� Sistemas Operacionais suportados:◦ Windows, Linux, Unix e Mac OSX
� Disponível: http://irrlicht.sourceforge.net
Realidade Aumentada 24/09/2013
Prof. Sementille 12
Irrlicht
� Características importantes:◦ Sombras Dinâmicas
◦ Sistemas de Partículas
◦ Animação de personagens
◦ Suporte a cenas internas e externas
◦ Detecção de colisão
Irrlicht
� Características importantes (cont.):◦ Larga e extensível biblioteca de materiais◦ vertex e pixel shaders◦ Binding para linguagens .NET◦ Renderização por software para
plataformas sem aceleração gráfica◦ API nativa para GUI 2D (botões, listas etc.)◦ Funções de desenho 2D◦ Ampla gama de formatos e modelos de
imagens
Irrlicht – Exemplo (vídeo 1)
Irrlicht in Motion, 3DModelerMan_ Movement Demo(360p_H.264-AAC).wmv - Atalho.lnk
Irrlicht – Exemplo (vídeo 2 - RA)
Augmented Reality with Frontier Vision and Irrlicht Engine - hand_object interaction(360p_H.264-AAC).wmv - Atalho.lnk
Unity
� Unity é um ambiente multiplataforma de desenvolvimento de jogos
� Suporte a: Windows / MacOS / Web / Wii / iPhone/ Android
71 24/09/2013
Características do UnityEditor de Níveis
� Fortemente integrado com a execução do jogo;
72 24/09/2013
Realidade Aumentada 24/09/2013
Prof. Sementille 13
Características do UnityEditor de Níveis
� Suporte a Drag & Drop e customização;
73 24/09/2013
Características do UnityEditor de Níveis� Editor de terrenos e lightmaps;
74 24/09/2013
Características do UnityGráficos� Suporte a Direct3D e OpenGL;
75 24/09/2013
Características do UnityImportação
� Importação de modelos, texturas, bonese animações de Maya, 3DS, Cheetah3D, Blender, Wavefront obj...
� Fontes, áudio.
76 24/09/2013
77 24/09/2013
Características do UnityShaders
� Efeitos de Glow, Blur, Noise, etc
78 24/09/2013
Realidade Aumentada 24/09/2013
Prof. Sementille 14
Características do UnityFísica / PhysX� Suporte a corpos rígidos;� Junções;
� Ragdolls;
� Wheel Collider para jogos de carro;
79 24/09/2013
Características do UnityScripting
� Linguagens de Scripting:◦ JavaScript;
◦ C# (Mono);
◦ Boo (similar a Python).
80 24/09/2013
PACOTES GRÁFICOS� PARA REALIDADE
AUMENTADA
ARTOOLKIT
PACOTES GRÁFICOSPARA REALIDADE AUMENTADA
ARToolKitUma Visão Geral
ARToolKit - Introdução� ARToolKit – biblioteca escrita em linguagem
C/C++ para construção de aplicações de Realidade Aumentada
� Originalmente criada pelo Dr. Hirokazu Kato
� Continua em desenvolvimento:◦ Human Interface Technology Laboratory (HIT Lab) da
Universidade de Washington
◦ HIT Lab NZ da Universidade de Cantebury – Nova Zelândia
◦ ARToolworks - Seattle
Realidade Aumentada 24/09/2013
Prof. Sementille 15
ARToolKit - Introdução
IDÉIA BÁSICA
ARToolKit - Introdução� Características principais
◦ Framework para criação de aplicações de RA◦ Uma biblioteca Multiplataforma (Windows, Linux, MacOS X,
SGI)◦ Sobrepõe objetos virtuais 3D sobre marcadores reais
(baseado em visão computacional)◦ Uma biblioteca de vídeo multiplataforma com:
- Múltiplas fontes de entrada (USB, Firewire, cartões de captura)
- Múltiplos formatos (RGB/YUV420P, YUV)- Rastreamento com múltiplas câmeras- Interface gráfica para inicialização
ARToolKit - Instalação
• No site http://www.hitl.washington.edu/artoolkit/ na seção de documentação há toda a informação necessária para download, instalação e configuração do ambiente de compilação
Alguns itens necessários�Ambiente de desenvolvimento�DSVideoLib�GLUT�DirectX Runtime�Dispositivo de entrada de video
ARToolKit - Arquitetura� OpenGL para renderização
� GLUT para eventos e dependência de hardware da biblioteca de vídeo
� API padrão de cada plataforma (por exemplowin32 para Windows)
ARToolKit - Estrutura� O usuário pode facilmente substituir um
módulo por outro
� Fluxo de Dados
ARToolKit - Estrutura
Realidade Aumentada 24/09/2013
Prof. Sementille 16
ARToolkit - Princípios de Funcionamento
O ARToolKit é baseado em umaabordagem básica de detecção de borda com um rápido algoritmo de estimativa de posicionamento
ARToolkit - Princípios de Funcionamento
Matriz de transformação
.
ARToolkit - Princípios de Funcionamento
Imagem original Imagem binarizada Componentes conectados
Contornos Extração das bordas do e dos cantos do marcador
Associação aoquadrado
ARToolkit - Princípios de Funcionamento
Matriz de transformação
ARToolKit – Calibração da Câmera
� camera_para.dat : arquivo de parâmetros da câmera contendo propriedades da câmera padrão
� Lido toda vez que uma aplicação ARToolKit é iniciada
� Os parâmetros são suficientes para uma ampla gama de câmeras diferentes
� É possível gerar um arquivo de parâmetros para uma câmera específica
ARToolKit – Calibração da Câmera� Dois tipos de calibração ( um passo e dois passos)
◦ Dois Passos
� Impressão de calib_dist.pdf e calib_cpara.pdf
• Execução do utilitário calib_dist• Mensura ponto central da imagem e distorção da lente
Padrão calib_dist: matriz de pontos Padrão calib_cpara: grid
Realidade Aumentada 24/09/2013
Prof. Sementille 17
ARToolKit – Calibração da Câmera� Execução do calib_dist
• Clicar nos pontos da esquerda para a direita
• Repetir o processo para 5 a 10 imagens de vários ângulos e posições diferentes
ARToolKit – Calibração da Câmera� Execução do calib_cparam
• Usado para descobrir o comprimento focal da câmera e outros parâmetros
• Posicionar a linha guia sobre a imagem (vertical e horizontal)
• Afastar o padrão da câmera 100mm e repetir o processo
• Realizar o processo 5 vezes
ARToolKit – Treinamento de padrões� Utilitário mk_patt
• Execute o utilitário mk_patt
• Aponte a câmera para o marcadoraté que as bordas superior e lateral esquerda fiquem vermelhas
• Dê um nome ao arquivo de padrão gerado
ARToolKit – Princípios de Desenvolvimento� Existem duas partes no
desenvolvimento de aplicações que usam o ARToolKIT:◦ Escrever a aplicação de RA; e
◦ Treinar as rotinas de processamento de imagem com os marcadores no mundoreal que serão usados na aplicação.
ARToolKit – Princípios de Desenvolvimento� Escrita da aplicação
◦ Estrutura Básica
INICIALIZAÇÃO 1. Iniciar a captura de vídeo e ler os arquivos de padrões de marcadores e parâmetros da câmera
MAIN LOOP2. Obter um quadro do vídeo de entrada
3. Detectar os marcadores e os padrões reconhecidos no quadro de vídeo de entrada
4. Calcular a transformação de câmera, relativa aos padrões detectados
5. Desenhar os objetos virtuais sobre os padrões detectados
FINALIZAÇÃO 6. Terminar a captura de vídeo
ARToolKit – Exemplo de Aplicação
Aplicação simpleTest
Realidade Aumentada 24/09/2013
Prof. Sementille 18
ARToolKit – Exemplo de Aplicação� O programa consiste de uma rotina principal e diversas
rotinas gráficasPASSOS FUNÇÕES
INICIALIZAÇÃO 1. Iniciar a captura de vídeo e ler os arquivos de padrões de marcadores e parâmetros da câmera
init
MAIN LOOP2. Obter um quadro do vídeo de entrada
arVideoGetImage
3. Detectar os marcadores e os padrões reconhecidos no quadro de vídeo de entrada
arDetectMarker
4. Calcular a transformação de câmera, relativa aos padrões detectados
arGetTransMat
5. Desenhar os objetos virtuais sobre os padrões detectados
draw
FINALIZAÇÃO 6. Terminar a captura de vídeo cleanup
ARToolKit – Exemplo de Aplicação
� main
main(int argc, char *argv[]) {
init(); arVideoCapStart(); argMainLoop( NULL, keyEvent, mainLoop );
}
ARToolKit – Exemplo de Aplicação� init
/* Inicia o dispositivo de video*/ if( arVideoOpen( vconf ) < 0 ) exit(0);
/* Encontra o tamanho da janela */ if( arVideoInqSize(&xsize, &ysize) < 0 ) exit(0); printf("Image size (x,y) = (%d,%d)\n", xsize, ysize);
/* Configura os parametros iniciais da camera */ if( arParamLoad(cparaname, 1, &wparam) < 0 ) { printf("Camera parameter load error !!\n"); exit(0); }
ARToolKit – Exemplo de Aplicação� init/* Os parâmetros são transformados para o tamanho da imagemcorrente */ arParamChangeSize( &wparam, xsize, ysize, &cparam );
/* Os parâmetros da camera são configurados para os que foramlidos e são mostrados na tela */ arInitCparam( &cparam ); printf("*** Camera Parameter ***\n"); arParamDisp( &cparam );
/* Leitura da definição dos padrões do arquivo Data/patt.hiro */ if( (patt_id=arLoadPatt(patt_name)) < 0 ) { printf("pattern load error!!\n"); exit(0); }
/* Abre a janela gráfica*/ argInit( &cparam, 1.0, 0, 0, 0, 0 );
ARToolKit – Exemplo de Aplicação� mainLoop
/* Obtém um quadro (frame) de video*/ if( (dataPtr = (ARUint8 *)arVideoGetImage()) == NULL ) {
arUtilSleep(2); return;
}
/* A imagem de video é mostrada na tela*/ argDrawMode2D(); argDispImage( dataPtr, 0,0 );
/* Detecta o marcador e o padrão em seu interior*/ if( arDetectMarker(dataPtr, thresh, &marker_info, &marker_num) < 0 ) {
cleanup(); exit(0); });
/* Ativa a captura do próximo frame – já que o atual pode ser analisado */ arVideoCapNext();
ARToolKit – Exemplo de Aplicação� mainLoop
/* Verifica a visibilidade do objeto*/
k = -1; for( j = 0; j < marker_num; j++ ) {
if( patt_id == marker_info[j].id ) { if( k == -1 ) k = j; else if( marker_info[k].cf < marker_info[j].cf ) k = j;
} }
/* Se nenhum padrão é encontrado, troca o buffer sem desenhar o objeto */if( k == -1 ) {
argSwapBuffers(); return;
}
Realidade Aumentada 24/09/2013
Prof. Sementille 19
ARToolKit – Exemplo de Aplicação� mainLoop
/* Obtém a transformação entre o marcador e a camera real */ arGetTransMat(&marker_info[k], patt_center, patt_width, patt_trans);
/* O objeto virtual pode ser desenhado sobre o cartão */
draw();
/* Troca o buffer */argSwapBuffers();
ARToolKit – Exemplo de Aplicação� draw
/* Inicializa a renderização*/ argDrawMode3D(); // pede ao ARToolkit para renderizar o objeto 3D
argDraw3dCamera( 0, 0 );
/* Configura o estado mínimo do OpenGL */glClearDepth( 1.0 ); glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL);
/* Carrega a matriz de transformação da camera*/ argConvGlpara(patt_trans, gl_para); glMatrixMode(GL_MODELVIEW); glLoadMatrixd( gl_para );
ARToolKit – Exemplo de Aplicação� draw
/* Renderização do objeto 3D – um cubo azul sob luz branca*/ glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightfv(GL_LIGHT0, GL_AMBIENT, ambi); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_flash); glMaterialfv(GL_FRONT, GL_SHININESS, mat_flash_shiny); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMatrixMode(GL_MODELVIEW); glTranslatef( 0.0, 0.0, 25.0 ); glutSolidCube(50.0);
/* Coloca os valores padrão à algumas variáveis do OpenGL */glDisable( GL_LIGHTING ); glDisable( GL_DEPTH_TEST );
ARToolKit – Exemplo de Aplicação� cleanup
/* Renderização do objeto 3D – um cubo azul sob luz branca*/arVideoCapStop(); //pára a capturaarVideoClose(); // libera o dispositivo de vídeoargCleanup();
ARToolKit – Aperfeiçoamentos
� Site do ARToolkit Plus :
◦ Melhoramento nas condições de iluminação
http://studierstube.icg.tu-graz.ac.at/handheld_ar/artoolkitplus.php
� Real-time Augmented Reality:
◦ Sistema de rastreamento robusto
http://www.cv.iit.nrc.ca/research/ar
� Site do ARToolkit Professional:
◦ Aumento no desempenho
http://www.artoolworks.com/Home.html
ARToolKit
exemplos
simpleTest.exe - Atalho.lnkexview.exe - Atalho.lnk multiTest.exe - Atalho.lnk
Realidade Aumentada 24/09/2013
Prof. Sementille 20
PACOTES GRÁFICOS� PARA REALIDADE
AUMENTADAARTag� Criado por Mark Fiala – IIT - Canadá
◦ Usa técnicas digitais para corrigir pontosfalhos do ArtoolKit: falso positivo, falsonegativo, confusão entre marcadores
◦ http://www.artag.net/
ARTag� Exemplo: Magic Lens
magic_lens_anatomy.wmv - Atalho.lnk
ALVAR� ALVAR é uma biblioteca de software
para criação de aplicações de Realidade Aumentada
� Desenvolvido pelo VTT (Technical Research Centre of Finland)
ALVAR
� Windows XP 32-bit, Microsoft Visual Studio 2003, 2005 e 2008 (versões 7, 8 e 9).
� Alvar core library requer:◦ OpenCV 1.0 (não funciona ainda com o
OpenCV 2.0)
� Exemplos de aplicações Alvarrequerem:◦ GLUT 3.7◦ CMake 2.6
ALVAR� Características PrincipaisRastreamento baseado em marcadores� Estimação precisa da posição do marcador� Fácil adição de novos marcadores� Recuperação de oclusões
Uso de múltiplos marcadores para detecção de posição� As coordenadas do marcador podem ser configuradas
manualmente� Ou podem ser automaticamente deduzidas pela autocalibração
Outras Características� Esconder o marcador do ponto de visão� Ferramentas para calibração de câmeras
Realidade Aumentada 24/09/2013
Prof. Sementille 21
ALVAR
� Exemplo
ALVAR 2(360p_H.264-AAC).mp4 - Atalho.lnk
OSGART
PACOTES GRÁFICOSPARA REALIDADE AUMENTADA
� HIT Lab NZ (Julian Looser, HartmutSeichter, Raphaël Grasset)
� ToolKit (C++, Interface para Phyton)� Cada nó mantém ponteiros para os filhos� Características principais:
� Modularidade, extensibilidade, Integrabilidade, Desempenho, Acessibilidade, Usabilidade
� Escalabilidade� Portabilidade
OSGART
� Finalidade� osgART adiciona a funcionalidade de
Realidade Aumentada aoOpenSceneGraph
� Atualmente na versão 2.0, Open Source, Licença GPL� http://www.orgart.org
OSGART
Abordagem básica do osgART: Grafo de cena básico
� Para adicionar RA Video see-through� Integra video ao vivo� Aplica matriz de projeção
corretiva� Atualiza as transformações de
rastreamento em tempo real
Abordagem do osgART: RA Grafo de cena
Realidade Aumentada 24/09/2013
Prof. Sementille 22
Abordagem do osgART: RA Grafo de cena
Projeção ortográfica
Quadrofull-screencom textura aovivo da fonte de vídeo
Matriz de projeçãoa partir do rastreador
Matriz de transformaçãoatualizada a partir do marcador em tempo-real
Arquitetura do osgART
Como qualquer biblioteca de RA videosee-through, o osgART requer capacidade de entrada de vídeo e de rastreamento
Rastreamento do ARToolkit(Kato)
Arquitetura do osgARTOsgART usa uma arquitetura de plugin para que as tecnologias de fontes de vídeo e rastreamento possam ser anexadas quando necessárias
Alguns projetos usando o osgART
MagicBook usandosistemas de partículas e sombra
Interação MagicLens com diferentes técnicas de renderização
osgART – Exemplo
FERmula Techdemo OSGart(360p_H.264-AAC).mp4 - Atalho.lnk
Realidade Aumentada 24/09/2013
Prof. Sementille 23
Referências
• OSGARThttp://www.osgart.org
• Outras referências
http://www.hitlabnz.org/wiki/OSGART
http://www.openscenegraph.org/projects/osg
XNA
PACOTES GRÁFICOSPARA REALIDADE VIRTUAL
XNA Game Studio Express Architecture - Microsoft
� Você escreve seu programa em C#
◦ Usando os recursos do XNA Framework
◦ Jogos podem executar em PCs com Windows e no XBOX360
Windows APIs, DirectX
.NET Framework para jogos
XNA Framework
Game code (C#) & content
GOBLIN XNA
PACOTES GRÁFICOSPARA REALIDADE AUMENTADA
137
Goblin XNA� Criado na Universidade de Columbia -
EUA◦ Plataforma para desenvolvimento de
aplicações RA e RV, com ênfase em Jogos
◦ Escrita em C#
◦ Baseada no Microsoft XNA Game Studio 3.1.
Goblin XNA� Herdou alguns dos objetivos de um projeto anterior
chamado Goblin, mas com foco maior na interface de usuário do core 3D , aproveitando a funcionalidade das engines de jogos do DirectX 3D e ambientes de desenvolvimento.
� A plataforma suporta atualmente :◦ 6DOF (seis graus de liberdade) ◦ posição e orientação de rastreamento usando câmera de
monitoramento baseado em marcador através ARTag com OpenCV ou DirectShow, e InterSense trackers híbrido.
◦ Física é suportada através BulletX e Newton Game Dynamics.
◦ Rede é suportada através de biblioteca Lidgren. ◦ Goblin XNA também inclui um sistema de interface gráfica
2D para permitir a criação de componentes clássicos de interação 2D.
Realidade Aumentada 24/09/2013
Prof. Sementille 24
Goblin XNA - Exemplos
Augmented Reality Racing Game(360p_H.264-AAC).mp4 - Atalho.lnk
PACOTES DE DESENVOLVIMENTO
PACOTES DE DESENVOLVIMENTO
VRJuggler
PACOTES DE DESENVOLVIMENTO
VRJuggler� Framework que esconde a complexidade da infraestrutura e das
especificações dos nós (dispositivos, monitores e computadores)� VR Juggler é escalável:
◦ De simples sistemas desktops como os PCs a complexos sistemas executando em clusters ou high-end workstations e supercomputadores.
� A flexibilidade do VRJuggler permite as aplicações executarem em muitas configurações de sistemas de RV incluindo:◦ desktop VR, HMD, CAVE™-like devices, e Powerwall™-like devices.
� A portabilidade do código VR Juggler garante seu uso em qualquer Sistema Operacional
� VR Juggler 2.0 suporta IRIX, Linux, Windows, FreeBSD, Solaris, e Mac OS XWindows, Linux, Unix e Mac OSX
� Disponível: http://www.vrjuggler.org
VRJuggler� Os desenvolvedores podem acessar
diretamente as APIs gráficas
(OpenGL ou OpenGL Performer)
� Utilizar diversos dispositivos como
luvas, mouses, monitores e
capacetes de visualização
VRJuggler� Conjunto de ferramentas
Realidade Aumentada 24/09/2013
Prof. Sementille 25
VRJuggler - Exemplo (vídeo)
VRJuggler-Interacting with a High Resolution Wall Sized Display(360p_H.264-AAC).wmv - Atalho.lnk
Blender
PACOTES DE DESENVOLVIMENTO
Blender
� Programa open source desenvolvido pela Blender Foundation
� Licença GNU-GPL
� Software usado para: ◦ Modelagem 3D;◦ Renderização de gráficos e animações;◦ Efeitos visuais;◦ Aplicações interativas em 3D.
Blender
� Software disponível em diversos SOs tais como Windows, Mac OS X, GNU/Linux, Solaris, FreeBSD, IRIX
� Grande conjunto de recursos e funcionalidades para criação de objetos 3D, renderização de cenas, animação com um editor de vídeo integrado e pós-produção, em um único ambiente de trabalho
Blender
� Fornece funcionalidades semelhantes as encontradas em softwares comerciais, tais como:◦ XSI
◦ Cinema 4d
◦ 3D Studio Max
◦ Maya
Blender
� Características incluem:◦ Avançadas ferramentas de simulação:� Dinâmica de corpos rígidos
� Dinâmica dos fluidos
� Dinâmica de corpos flexíveis
◦ Avançadas ferramentas de modelagem
◦ Avançadas ferramentas de animação de personagens
◦ Sistemas de materiais baseados em Node
◦ Wrapper para linguagem Python
Realidade Aumentada 24/09/2013
Prof. Sementille 26
Blender
� Arquivo nativo: .BLEND� Recursos para leitura e escrita de
várias extensões:◦ .3DS, .DXF, .WRL (VRML 2.0, VRML 95),
.X (DirectX), muitas outras
� Últimos avanços permitem sua comparação com softwares high-end, como 3D Studio Max e Maya
� Documentação é farta� Disponível: http://www.blender.org
Blender – Exemplo
Blender 3D _Enterprise-E Tests_ CG FULL-HD 1080p(720p).wmv - Atalho.lnk
Blender - Exemplo (vídeo)
Blender 3D_realistically animated grass _HD_(720p).wmv - Atalho.lnk
FluxStudio
PACOTES DE DESENVOLVIMENTO
FluxStudio
� Conhecido por VizX3D� Ferramenta gráfica (editor) de
modelagem e animação � Desenvolvimento de aplicações para
Web (3D) e conteúdo de mundos virtuais
� Licença pertence a Media Machines
FluxStudio
� Editor gráfico de fácil utilização� Orientado à visualização� Manipula conteúdos em:
◦ X3D◦ VRML97◦ Outros
Realidade Aumentada 24/09/2013
Prof. Sementille 27
FluxStudio
� Interface Gráfica permite:◦ Definir animações◦ Interatividade que pode disparar luzes,
sons e animações
� Fornece recursos para:◦ Depurar aplicações◦ Wizards
� Disponível em: http://www.mediamachines.com
FluxStudio
FluxStudio – Exemplo
DART
PACOTES DE DESENVOLVIMENTO
DART
� Designers Augmented Reality Toolkit (DART)
� Desenvolvido no Augmented Environments Laboratory do Georgia Institute of Technology - Gatech
� É um editor gráfico� Um conjunto de extensões do ambiente de
programação multimídia Macromedia Director
� Composto por:◦ behaviors (extensões do Director escritas na
linguagem LINGO)◦ Xtras (plugins para o Director escritos na
linguagem C++)
DART
� Ferramenta utiliza o ARToolKit para captura de vídeo, tracking e para o processo de reconhecimento de marcadores
� Voltado para aplicações onde a mídia gerada por computador é diretamente integrada à percepção dos participantes
� Suporta Windows e Mac OSX� Apesar de disponível para uso livre, exige o
Macromedia Director (software comercial)� Disponível em:
http://www.gvu.gatech.edu/dart/
Realidade Aumentada 24/09/2013
Prof. Sementille 28
DART DART
DART - Exemplo (vídeo)
DART.wmv - Atalho.lnk
PAPERVISIONFLARTOOLKIT
OUTROS PACOTES GRÁFICOS E DE DESENVOLVIMENTO
Realidade Aumentada na Web
-PaperVision- FlarToolkit
Um exemplo:http://plugintothesmartgrid.com/
RA da GE.url
RA na Web – sem marcadores
RA Autobots.url
Realidade Aumentada 24/09/2013
Prof. Sementille 29
Comparação de Ferramentas de Realidade Aumentada
Augmented Reality SDK Comparison | Comparison tables -SocialCompare
http://socialcompare.com/en/comparison/augmented-reality-sdks
Comparação de SDKs - Realidade Aumentada.url
top related