Desenvolvendo um Ambiente Virtual em Realidade Aumentada para Web com FLARToolKit Robson Siscoutto – [email protected] Faculdade de Informática de Presidente Prudente – FIPP Universidade do Oeste Paulista - UNOESTE Levrangeles da Silva Filho - [email protected] Faculdade de Ciência e Tecnologia - FATEC Universidade de Cuiabá (UNIC) 1 Objetivo do Minicurso Apresentar o processo de desenvolvimento de aplicações de Realidade Aumentada na Web com FLARToolKit: • • • • • Introdução Componentes básicos Processo de instalação e configuração da ferramenta Desenvolvimento de um projeto básico Inserção de Novas Potencialidades: • Comportamentos, interações, eventos internos e externos, scripts, dentre outros. • Principais passos para a inserção de interações básicas 2 Introdução ARToolKit • Biblioteca popular que contribuiu para Realidade Aumentada (RA) • Funcionamento: • Rastreamento óptico, uma técnica de visão computacional • Identificar e estimar em tempo real a posição e a orientação de um marcador fiducial em relação ao dispositivo de captura de vídeo (Webcam, Baixo Custo do Hardware) 3 Introdução Objetivos Correlação entre os dados estimados do marcador real e a sua imagem Possibilitar o posicionamento de objetos virtuais alinhados à imagem do marcador [Kato, 2000] 4 Introdução ARToolKit • Biblioteca de programação multiplataforma • Desenvolvimento de aplicações em ambientes Desktop • Não permite desenvolvimento de aplicações de RA na Web Solução para Web • Biblioteca FLARToolKit 5 FLARToolKit Introdução • Biblioteca desenvolvida na linguagem ActionScript [Adobe 2010] FLARToolKit • Executada nas maiorias dos browsers Web com suporte a tecnologia Adobe Flash Player • Conjunto de Tecnologias Diferentes • linguagem de programação • ambientes para desenvolvimento • bibliotecas externas e hardware 6 FLARToolKit Introdução Seis Passos Fundamentais do Funcionamento de uma Aplicação com o FLARToolKit Capturar a Imagem da Câmera Criar o Mapa de Bits da Imagem Limiarizada Detectar os Marcadores Identificar os Marcadores Detectados Calcular a Matriz de Transformação (encontra posição e orientação dos Marcadores) Posicionar e Renderizar os Objetos Virtuais 7 FLARToolKit Introdução Seis Passos Fundamentais do Funcionamento de uma Aplicação com o FLARToolKit Capturar a Imagem da Câmera Criar o Mapa de Bits da Imagem Limiarizada Detectar os Marcadores Identificar os Marcadores Detectados Calcular a Matriz de Transformação (encontra posição e orientação dos Marcadores) Posicionar e Renderizar os Objetos Virtuais 8 FLARToolKit Introdução Capturar a Imagem da Câmera: • • • A imagem capturada pela câmera é obtida 9 FLARToolKit Introdução Seis Passos Fundamentais do Funcionamento de uma Aplicação com o FLARToolKit Capturar a Imagem da Câmera Criar o Mapa de Bits da Imagem Limiarizada Detectar os Marcadores Identificar os Marcadores Detectados Calcular a Matriz de Transformação (encontra posição e orientação dos Marcadores) Posicionar e Renderizar os Objetos Virtuais 10 FLARToolKit Introdução Criar o mapa de bits da imagem limiarizada: • • • • • A imagem capturada sofre um efeito de limiarização, possibilitando a criação de um mapa de bits para detecção dos marcadores 11 FLARToolKit Introdução Criar o mapa de bits da imagem limiarizada: • • • • • A imagem capturada sofre um efeito de limiarização, possibilitando a criação de um mapa de bits para detecção dos marcadores 12 FLARToolKit Introdução Seis Passos Fundamentais do Funcionamento de uma Aplicação com o FLARToolKit Capturar a Imagem da Câmera Criar o Mapa de Bits da Imagem limiarizada Detectar os Marcadores Identificar os Marcadores Detectados Calcular a Matriz de Transformação (encontra posição e orientação dos Marcadores) Posicionar e Renderizar os Objetos Virtuais 13 FLARToolKit Introdução Detectar os Marcadores: • • • Possíveis marcadores são detectados após análise do mapa de bits criado anteriormente 14 FLARToolKit Introdução Seis Passos Fundamentais do Funcionamento de uma Aplicação com o FLARToolKit Capturar a Imagem da Câmera Criar o Mapa de Bits da Imagem Limiarizada Detectar os Marcadores Identificar os Marcadores Detectados Calcular a Matriz de Transformação (encontra posição e orientação dos Marcadores) Posicionar e Renderizar os Objetos Virtuais 15 FLARToolKit Introdução Identificar os Marcadores Detectados: • • • O FLARToolKit realiza a identificação dos marcadores detectados 16 FLARToolKit Introdução Identificar os Marcadores Detectados: • • • A informação de cada marcador é armazenada, extraindo 50% da imagem gerada na detecção a partir do centro 17 FLARToolKit Introdução Identificar os Marcadores Detectados: • • • A informação de cada marcador é armazenada, extraindo 50% da imagem gerada na detecção a partir do centro 18 FLARToolKit Introdução Identificar os Marcadores Detectados: • • A informação de cada marcador é armazenada, extraindo 50% da imagem gerada na detecção a partir do centro 19 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 20 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 21 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 22 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 23 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 24 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 25 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 26 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 27 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 28 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 29 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 30 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 31 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 32 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 33 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 34 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 35 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 36 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 37 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 38 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a confiança na detecção 39 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 40 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 41 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 42 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 43 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 44 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a cofiança na detecção 45 FLARToolKit Introdução Identificar os Marcadores Detectados: • • Para cada marcador registrado, a cada rotação de 90º (graus), é realizada uma comparação com os marcadores detectados, gerando um valor de 0 a 1. Quanto mais próximo de 1, maior a confiança na detecção 46 FLARToolKit Introdução Seis Passos Fundamentais do Funcionamento de uma Aplicação com o FLARToolKit Capturar a Imagem da Câmera Criar o Mapa de Bits da Imagem Limiarizada Detectar os Marcadores Identificar os Marcadores Detectados Calcular a Matriz de Transformação (encontra posição e orientação dos Marcadores) Posicionar e Renderizar os Objetos Virtuais 47 FLARToolKit Introdução Calcular a Matriz Transformação: • de • 48 FLARToolKit Introdução Seis Passos Fundamentais do Funcionamento de uma Aplicação com o FLARToolKit Capturar a Imagem da Câmera Criar o Mapa de Bits da Imagem Limiarizada Detectar os Marcadores Identificar os Marcadores Detectados Calcular a Matriz de Transformação (encontra posição e orientação dos Marcadores) Posicionar e Renderizar os Objetos Virtuais 49 FLARToolKit Introdução Posicionar e Renderizar os Objetos Virtuais: • • 50 FLARToolKit Introdução 51 FLARToolKit Componentes 52 FLARToolKit Componentes Linguagem de Programação • ActionScript 3 da Adobe, mas tem toda sua estrutura traduzida do NyARToolKit que é escrita em Java; • ActionScript é a linguagem de programação para os ambientes de execução Adobe Flash Player e Adobe AIR que roda sobre uma máquina virtual denominada ActionScript Virtual Machine (AVM). 53 FLARToolKit Componentes Ambiente de Desenvolvimento – IDE • IDE para o desenvolvimento de aplicações é de livre escolha; • MAS, sua estrutura deve ser voltada para o desenvolvimento de aplicações Flash; • Exemplos: • Flash Develop (nossa escolha); • Flex Builder. 54 FLARToolKit Componentes Bibliotecas e Dependências • bibliotecas externas para renderização de objetos virtuais 3D: • Away3D; • Papervision3D (nossa escolha) 55 FLARToolKit Componentes Estrutura de Diretórios • Estrutura de Diretórios da versão 2.5.4 do FLARToolKit, após descompactação: • .settings • libs • resources • src 56 FLARToolKit Componentes Estrutura de Diretórios Diretório .settings • Contêm as configurações para o projeto na IDE Flex Builder. • O Flash Develop tem a capacidade de importar este tipo de projeto. 57 FLARToolKit Componentes Estrutura de Diretórios • Diretório libs • Bibliotecas Externas importadas no FLARToolKit; • NyARToolKitAS3: versão em código ActionScript 3 da biblioteca NyARToolKit [ARToolworks 2010] em Java, contendo a base do FLARToolKit; • Tres Engines 3D para renderização dos objetos virtuais 3D: • Away3D [Away3D 2010]; • Away3D Lite [Away3DLite 2010]; • Papervision3D (nossa escolha); 58 FLARToolKit Componentes Estrutura de Diretórios • Diretório resources • Pasta Data • marcadores Fiduciais: o hiromarker.pdf e o flarlogo.pdf e seu respectivos arquivos .pat (registro) • parâmetros da câmera: camera_para.dat e o câmera_para_16x9.dat (widescreen) 59 FLARToolKit Componentes Estrutura de Diretórios • Diretório resources • Pasta model: • é um repositório para os arquivos dos modelos tridimensionais • Disponível um modelo de um objeto tridimensional do planeta terra, sendo um arquivo no formato .dae com suas texturas (arquivo no formato Collada) e outro arquivo earth.blend do Blender. 60 FLARToolKit Componentes Estrutura de Diretórios • Diretório src • códigos-fonte do FLARToolKit; • Subpasta examples: • Contendo classes com vários exemplos de aplicações possíveis com o FLARToolKit. • Subpasta org: • Código-fonte do FLARToolKit contendo as classes implementadas. 61 FLARToolKit Componentes Estrutura de Diretórios • Diretório src - Subpasta examples e org: 62 FLARToolKit Componentes Estrutura de Diretórios • Raiz do Diretório do FLARToolKit: • Possui dois arquivos de configuração para o projeto no FlexBuilder • .actionScriptProperties • .project • Facilitar a visualização e • compilação do projeto • FLARToolKit 63 FLARToolKit Componentes Criação de Marcadores no FLARToolKIT • Aplicativo chamado MarkerGenerator que está disponível online em Marker Generator Online (http://flash.tarotaro.org/ar/MarkerGeneratorO nline.swf) • Detecção do marcador através de uma câmera e permite salvar em disco o arquivo referente ao marcador detectado; • borda vermelha é gerada ao redor, indicando que o marcador foi detectado, permitindo ao usuário salvar as •configurações em disco clicando no botão Save Pattern. 64 FLARToolKit Componentes Criação de Marcadores no FLARToolKIT • O marcador da esquerda é perfeito, enquanto o da direita poderia trazer problemas devido ao seu formato simétrico durante a rotação 65 FLARToolKit Instalação e Configuração 66 FLARToolKit Instalação e Configuração Arquivos Fundamentais NOME FLARToolKit 2.5.4 DESCRIÇÃO DOWNLOAD Biblioteca do http://www.libspark.org/wiki/saqoosha/FLART FLARToolKit oolKit/downloadlist Kit de desenvolvimento http://www.adobe.com/cfusion/entitlement/ind Flex SDK 4.1 para compilação ex.cfm?e=flex4sdk dos aplicativos IDE para FlashDevelop http://www.flashdevelop.org/downloads/releas desenvolvimento 3.3.1 es/FlashDevelop-3.3.1-RTM.exe das aplicações Java Virtual Machine necessária Java Runtime 6 http://www.java.com/pt_BR/download/ para execução do FlashDevelop 67 FLARToolKit Instalação e Configuração Instalação dos Arquivos • Extraír para um diretório de preferência os arquivos FLARToolKit 2.5.4 e o Flex SDK 4.1. • Instalar Java Runtime 6; 68 FLARToolKit Instalação e Configuração Instalação dos Arquivos • Instalar o FlashDevelop • Executar o arquivo FlashDevelop3.3.1-RTM.exe e clicar em Next; • Desmarcar a opção Install Flex SDK (será instalada manualmente) e clicar em Next; 69 FLARToolKit Instalação e Configuração Instalação dos Arquivos • Instalar o FlashDevelop (cont) • Escolher o local onde será instalado e clicar em Install; • obs: aqui foi instalado no mesmo diretório do FLARToolKit e o Flex SDK; 70 FLARToolKit Instalação e Configuração Configuração da IDE • Informar ao FlashDevelop o local do Flex SDK para compilação dos projetos: • Abrir o menu Tools > Program Settings ou apertar a tecla F10 71 FLARToolKit Instalação e Configuração Configuração da IDE • Selecionar AS3Context nos plugins e encontre a opção Flex SDK Location no grupo Language: Informar caminho do Flex SDK Extraído 72 FLARToolKit Instalação e Configuração Instalação e Configuração Finalizadas!!! • Qualquer projeto Action Script 3 criado, aberto ou importado estará pronto para ser compilado 73 FLARToolKit Desenvolvendo Prático 74 FLARToolKit Desenvolvendo Prático • Criação e Configuração do Projeto: – criar um novo projeto em qualquer diretório • abrir o menu Project > New Project… 75 FLARToolKit Desenvolvendo Prático • Criação e Configuração do Projeto: – Na seção Installed Templates, selecionar a opção AS3 Project, dar um nome ao projeto no campo de texto Name e informar o local onde o projeto será armazenado em Location. Se o local informado não existir, marcar a opção Create directory for project para criar o diretório Clicar em OK 76 FLARToolKit Desenvolvendo Prático • Importação das Bibliotecas – deverá ser importado o renderizador, por exemplo, o Papervision3D, bem como o FLARToolKit e o NyARToolKitAS3; Criar um diretório para cada biblioteca na pasta lib do projeto Copiar o diretório src do FLARToolKit obtido para o diretório do FLARToolKit do projeto 77 FLARToolKit Desenvolvendo Prático • Importação das Bibliotecas – deverá ser importado o renderizador, por exemplo, o Papervision3D, bem como o FLARToolKit e o NyARToolKitAS3; O FLARToolKit traz consigo em seu diretório libs o NyARToolKit e o Papervision3D. Para importar ambos para o projeto, basta copiar seus respectivos src do FLARToolKit em cada lugar correspondente no projeto 78 FLARToolKit Desenvolvendo Prático • Importação das Bibliotecas • Editar o classpath do projeto: • informar ao FlashDevelop quais bibliotecas importadas devem ser utilizadas durante a compilação. • Acessar o menu Project > Properties da barra de menu; • Selecionar a aba Classpaths; • Selecionar a opção Add Classpath; • Informar, para cada biblioteca a ser referenciada, o diretório src, 79 FLARToolKit Desenvolvendo Prático • Criação e Definição de uma Classe e seus Atributos Fundamentais – Existem algumas classes que são base para realização de uma aplicação, algumas são específicas da linguagem de programação, outras do FLARToolKit ou do Papervision3D. Cada uma destas classes será representada por atributos do projeto. 80 PACOTE CLASSE DESCRIÇÃO Flash URLLoader Carrega dados binários ou texto através de uma URL informada. Utilizado para carregar os parâmetros da câmera e marcador em uma aplicação de RA Flash Stage Flash Flash Flash Camera Bitmap Video Palco de exibição principal de conteúdo gráfico Webcam Imagem capturada em mapa de bits Video para exibição do conteúdo Flash Sprite Nó para exibição de gráficos/conteúdo 3D FLARToolKit FLARRasterThresholdAnalyzer_SlidePTile Analisa o nível de limiarização da imagem FLARToolKit FLARToolKit FLARToolKit FLARToolKit FLARToolKit FLARBaseNode FLARCode FLARTransMatResult FLARSingleMarkerDetector FLARParam Container para o modelo 3D Marcador detectado Matriz de transformação Detector de um único marcador Parâmetros da câmera FLARToolkit FLARRgbRaster_BitmapData Rasterizador RGB - utilizado para transformar a imagem rgb para mapa de bits Papervision3D Viewport3D Papervision3D Papervision3D Camera3D Scene3D Container para todo o conteúdo (modelo, marcador, camera3D) Câmera virtual Cena virtual Papervision3D DAE 81 Modelo virtual do tipo COLLADA 1.4.1 Papervision3D LazyRenderEngine Renderizador Papervision3D FLARToolKit Desenvolvendo Prático • Atividade Prática: – Criar classe de nome ProjetoSimplesPapervision3D. • Esta classe, do mesmo nome do projeto, será nada mais que um Sprite para conteúdo/visualização de cenas 3D. – Implementar nesta Classe: • carregamento dos parâmetros de câmera e do marcador; • configuração da câmera, vídeo e alguns componentes para execução; • tratamento da detecção do marcador • Tratamento de falhas ou sucesso deste procedimento. 82 FLARToolKit Desenvolvendo Prático • Atividade Prática - Cont: – Criar os seguintes métodos na classe ProjetoSimplesPapervision3D: • método carregar é responsável por iniciar a aplicação. Este recebe três parâmetros: o primeiro é o arquivo referente aos parâmetros da câmera, o segundo referente ao arquivo do marcador escolhido e o terceiro ao arquivo para o modelo virtual tridimensional. valores para altura e largura da tela de apresentação e largura do marcador criação da instância de um objeto do tipo URLLoader responsável por carregar os arquivos informados para câmera, marcador e modelo carregarParametrosCamera é chamado 83 FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar os Métodos Responsáveis pelos Parâmetros da Câmera: • carregarParametrosCamera () – carregador de URL é informado para carregar os dados binários do arquivo da câmera; – um evento é adicionado pra chamar o método onParametrosCameraCarregados quando for finalizado; • onParametrosCameraCarregados () – Uma instância de FLARParam é criada e o método loadARParam atribui os valores obtidos do arquivo da câmera. – O método changeScreenSize informa à instância sobre o tamanho da tela apresentada ao usuário – o método carregarMarcador é chamado; FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar os Métodos Responsáveis pelos Parâmetros da Câmera: FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar os Métodos Responsáveis pelos Parâmetros da Marcador: • Método carregarMarcador () – funciona da mesma forma que carregarParametrosCamera; – A única diferença é que o formato de dados informado para o carregador de URL é do tipo texto e o método a ser chamado após o carregamento do marcador é onMarcadorCarregado. • Método onMarcadorCarregado () – uma instância de FLARCode é criada pra representar o marcador recebendo como parâmetros a quantidade de divisões em largura e altura para reconhecimento do símbolo interno do marcador. – O método loadARPatt atribui os dados obtidos do arquivo do marcador para seus atributos. – o método iniciar é chamado. FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar os Métodos Responsáveis pelos Parâmetros da Marcador: FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: • Criar o Método Iniciar (): Evento é adicionado na aplicação com o objetivo chamar o método onFrameCapturado para cada frame apresentado na aplicação Chama os métodos de configuração da câmera, vídeo, Papervision3D e FLARToolKit Depois de configurados, é adicionado ao stage uma instância de capturaBitmap da classe Bitmap e uma instância de viewport3D da classe Viewport3D FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar Método configurarWebcam () Método configurarWebcam(): • Tenta reconhecer a câmera - método estático getCamera da classe Camera. • Se a câmera foi detectada, esta é configurada recebendo alguns parâmetros no método setMode (largura e altura da tela e frames/seg serão executados por segundo. FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar Método configurarVideo () Método configurarVideo() • Uma nova instância de Video é criada a partir da largura e altura da tela. • A instância camera é passada para vídeo, via o método attachCamera, visando mostrar as imagens da câmera na tela. FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar Método configurarPapervision3D () servir como base de apresentação do modelo virtual em cena representa a cena virtual do ambiente parâmetros da câmera informações sobre altura e largura Renderizador recebe os parâmetros criados Carregar e setar o Modelo Virtual na cena Nome que identifica o modelo para futuro acesso aos atributos do objeto DAE FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Método configurarPapervision3D () FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar método configurarFLARToolKit () • Realizar a configuração dos componentes relacionados com o FLARTollKit no aplicativo; • É instanciado o analisador de limiarização para tratamento do nível de limiarização do ambiente (FLARRasterThresholdAnalyzer_SlidePTile); • Instância para capturaBitmap das imagens da câmera, com algumas configurações específicas, como largura e altura; • são instanciados os objetos para detecção de um único marcador (FLARSingleMarkerDetector), um rasterizador de imagens RGB (FLARRgbRaster_BitmapData) e a matriz de transformação (FLARTransMatResult) FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Método configurarFLARToolKit () FLARToolKit Desenvolvendo Prático • Atividade Prática – Cont: – Criar método onFrameCapturado (): • tratar o que será feito com cada frame processado na aplicação; imagem capturada pela câmera é apresentada na tela do usuário Tratará de informar à aplicação se o marcador foi detectado ou não. Se Positivo: a matriz de transformação é calculada e passada para a base do modelo virtual (get e setTransformMatrix) Caso Contrário, o tratamento do nível de limiarização é feito e a variável limiarizacao recebe o novo valor calculado FLARToolKit Desenvolvendo Prático • Compilação e Testes do Projeto – A compilação do projeto gera um arquivo swf no diretório bin. Este swf pode ser executado em qualquer Flash Player disponível; – É preciso que o projeto tenha uma classe que possua um método main()…. 96 FLARToolKit Desenvolvendo Prático • Compilação e Testes do Projeto – Criar a Classe e o Método main() uma instância da classe ProjetoSimplesPàpervision3D é criada…. O método carregar () é chamado passando os parâmetros de câmera, marcador e modelo para que seja possível visualizar a execução do projeto, basta apenas adicionar esta instância 97 ao palco de apresentação da aplicação FLARToolKit Desenvolvendo Prático • Execução do Projeto Criado… 98 FLARToolKit Novas Funcionalidades 99 FLARToolKit Novas Funcionalidades • Classes e Métodos para Interações – Para se criar interações no ambiente virtual do FLARToolKit é necessário a criação de uma classe proprietária que extenda a classe Sprite responsável pela exibição de gráficos ou modelos 3D utilizados na cena; – Exemplo: classe de interação InteracaoSimplesPaperVision3D 100 FLARToolKit Novas Funcionalidades • Classes e Métodos para Interações – A partir deste ponto, criar um método de nome iniciar() (p.ex.) • recebe como parâmetro o FLARBaseNode que é um container para o modelo 3D e o Stage de exibição principal de conteúdo gráfico; • Adicionar ao Stage um evento que será disparado toda vez que uma ação for gerada por um dispositivo, como p.ex. o teclado; 101 FLARToolKit Novas Funcionalidades • Classes e Métodos para Interações – Ao ser gerado o evento este deverá estar associado a um método que irá tratar o evento. 102 FLARToolKit Novas Funcionalidades • Classes e Métodos para Interações – Alterar o método iniciar() da classe do ProjetoSimplesPapervision3D • Acrescentar o método configurarInteracoes(): – Criar a instância da classe de interação – chamada ao método iniciar() visando passar como parâmetro para a classe de interação a baseModelo e o stage; 103 FLARToolKit Novas Funcionalidades • Classes e Métodos para Interações Método iniciar() da classe do ProjetoSimplesPapervision3D Adicionar a chamada ao método configurarInteracoes() no método iniciar() da classe do ProjetoSimplesPapervision3D Criar a instância da classe de interação chamada ao método iniciar() visando passar como parâmetro para a classe de interação a 104 baseModelo e o stage FLARToolKit Novas Funcionalidades • Acrescentar as Interações: – processo de implementação de interações diretas com a cena via algum evento gerado por um dispositivo, como teclado, mouse ou luvas de dados, esta seção irá apresentar como criar interações básicas do tipo translação, rotação e escala dos objetos virtuais para os eixos x, y e z; – a classe KeyboardEvent será utilizada durante a captura destes comandos e no auxílio do reconhecimento sobre o que foi digitado 105 FLARToolKit Novas Funcionalidades • Acrescentar as Interações – criar uma classe básica que estende a classe sprite (responsável por permitir a visualização de conteúdo 3D), como por exemplo, a classe InteracaoSimplesPapervision3D 106 FLARToolKit Novas Funcionalidades • Acrescentar as Interações Receber os parâmetros referentes ao nó base do modelo virtual e o stage, utilizado pela aplicação Eventos de teclado são capturados a cada tecla pressionada pelo usuário e o método verificarAcoes é chamado 107 FLARToolKit Novas Funcionalidades • Acrescentar as Interações – método verificarAcoes() Analisar cada tecla acionada pelo usuário… Tecla ressionada: Escape, Left, Up, Rigth, Down, Numpad_Add (+), Numpad_Subtract (-), Insert, Delete, Home, End, Page_Up ou Page_Down. 108 FLARToolKit Novas Funcionalidades Nome associado ao modelo no Método configurarPapervision3D () • Acrescentar as Interações – Tecla Escape pressionada: Os atributos do objeto virtual serão reiniciados com os valores originais recebidos no início da aplicação Pela instância de baseModelo e usando o método getChildByName é possível ter acesso ao modelo virtual e aos eixos x, y e z bem como escala e rotações – Faz uma 109 busca pelo nome “modelo”; FLARToolKit Novas Funcionalidades • Acrescentar as Interações Para os eixos x e y: Teclas UP, LEFT, RIGHT e DOWN Para o eixo z: CTRL + UP e CTRL + DOWN 110 FLARToolKit Novas Funcionalidades • Acrescentar as Interações Operação de Escala teclas NUMPAD_+ e NUMPAD_aumentando ou diminuindo seu valor 111 FLARToolKit Novas Funcionalidades • Acrescentar as Interações Interações de Rotação nos eixos x, y e z teclas HOME e END (rotação no eixo X), PAGE_DOWN e DELETE (rotação no eixo Z), PAGE_UP e INSERT (rotação no eixo Y) 112 FLARToolKit Novas Funcionalidades • A classe de interações está concluída. • Para testar seu funcionamento, basta compilar e abrir, no browser, o arquivo swf gerado no diretório bin. Depois coloque o marcador definido no projeto na frente da câmera. 113 Projeto WARGen Web Augmented Reality Generator WARGEN • Gerador de Aplicações em Realidade Aumentada para Web 114 Projeto WARGen Web Augmented Reality Generator Objetivos Gerais Disponibilizar um Gerador de Aplicativos em Realidade Aumentada na Web Fornecer uma interface amigável e intuitiva para o usuário 115 Projeto WARGen Web Augmented Reality Generator Objetivos Específicos Disponibilizar login e senha para os usuários Possibilitar envio de arquivos (modelos, marcadores) Possibilitar download dos arquivos enviados Possibilitar associação modelo/marcador Possibilitar associação de interações Possibilitar visualização de associações 116 Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Projeto WARGen Web Augmented Reality Generator Obrigado! 177