Equipe: Alan José de Moura Alana Brito Ana Cecília Martins Marcelo Costa Maria Marcela Meira Lins Onde achar a apresentação: www/~mmsml Um pouco sobre a Realidade Aumentada Um pouco sobre o ARToolKit Ferramentas necessárias Processos de desenvolvimento de aplicação utilizando ARToolKit Exemplos Realidade Misturada Ambiente Real Realidade Aumentada Virtualidade Aumentada Ambiente Virtual Enriquecimento do real com o virtual Presença do mundo real (não há imersão total no mundo virtual) Uso de marcadores. Ou não (MAR). Tecnologia ainda em pleno desenvolvimento, ganhando espaço e com grandes perspectivas Tecnologia que se adapta a nossa maneira natural de interação Ao invés de mudar nossa maneira de ver o mundo, ela acrescenta. Biblioteca para construção de aplicativos baseados em Realidade Aumentada (baseada em marcadores!) Desenvolvida em C/C++ Possibilita a utilização de uma ou mais câmeras para captura da imagem Fácil calibragem de Câmera Reconhecimento de múltiplos marcadores Compatível com diversos Sistemas Operacionais Distribuída com código fonte completo Ambiente de Desenvolvimento das linguagens C e C++ (e.g. Microsoft Visual Studio) Entrada de Vídeo (WebCam) Biblioteca para comunicação com a entrada de vídeo (DSVideoLib) Para sintetizar as imagens: Glut e OpenGL Para compatibilidade entre câmeras e placas de aquisição de vídeo: DirectX Runtime Inicialização Loop principal 1. Inicializa a captura de vídeo, carrega os marcadores e os parâmetros de vídeo 2. Captura um frame de vídeo 3. Detecta e reconhece os marcadores no frame 4. Calcula a transformação da câmera relativa ao marcador detectado 5. Desenha os objetos virtuais nos marcadores detectados Finalização 6. Fecha o dispositivos de vídeo 1. Inicializações do glut e OpenGL arVideoOpen 2. Abrir um input de vídeo Inicialização 3. Armazenar tamanho do vídeo capturado arVideoInqSize 4. Carregar os parâmetros intrínsecos da câmera (retorno do passo de calibragem) arParamLoad 5. Modificar o tamanho do vídeo nos parâmetros da câmera arParamChangeSize 6. Inicializar os parâmetros da câmera (especificados da estrutura de parâmetros da câmera) 7. Carregar o bitmap do marcador especificado como parâmetro 8. Inicializar a biblioteca gsub argInit() arInitCParam arLoadPatt Loop Principal 1. Captura um frame de vídeo arVideoGetImage 2. Define o contexto de renderização (2D ou argDrawMode2D 3D), definindo uma projeção ortográfica 3. Mostra a imagem na tela como um bitmap 4. Detecta os marcadores argDispImage arDetectMarker 5. Captura próximo frame de vídeo – tal situação só pôde ocorrer porque todas as informações necessárias já foram coletadas arVideoCapNext 6. Verifica se o objeto deve ou não ser visível Vide algoritmo no exemplo simpleTest.c 7. Realiza as transformações da câmera em relação à posição dos marcadores arGetTransMat 8. Desenha os objetos virtuais no marcador draw 1. Finaliza a captura de vídeo Finalização arVideoCapStop 2. Fecha a ligação com a fonte de vídeo 3. Fecha a biblioteca gsub argCleanup arVideoClose É desejável saber os parâmetros da câmera para posicionar com mais precisão os objetos virtuais sobre a cena real Principais propriedades extraídas da calibragem: • distorções de lente, • ponto central da câmera • distância focal da câmera Técnicas: • Dois passos: maior precisão • Um passo: mais prático Imprimir a imagem calib_dist.pdf Rodar o exemplo calib_dist.exe Capturar imagem e marca os 24 pontos em ordem Repetir o último procedimento de 5 a 10 vezes em diferentes ângulos Clicar no botão direito do mouse para calcular Distorsão ESCREVER EM ALGUM CANTO OS RESULTADOS OBTIDOS Imprimir a imagem calib_cparam.pdf Rodar calib_cparam.exe Capturar imagem e define as linhas horizontais e verticais seqüencialmente. Repetir o último procedimento 5 vezes, afastando, a cada interação, a câmera em 10 cm. Definir o nome do arquivo como camera_para.dat Substituir o arquivo criado no diretório bin/Data Apenas executa a segunda parte do processo de calibrar em dois passos. O arquivo usado para a calibragem é o calib_camera2.exe Edite em um editor de imagens o arquivo blankPatt.gif, localizado no diretório patterns Crie uma imagem em preto e branco do padrão desejado que caiba no meio deste quadrado, os melhores padrões são assimétricos e sem muitos detalhes Imprima a imagem Vá para o diretório bin e execute o programa mk_patt. Entre com o nome do arquivo camera_para.dat (este é o nome default para o arquivo de parâmetros de câmera) O programa abrirá então uma janela de vídeo Coloque o padrão a ser treinado em uma superfície plana em boas condições de iluminação. Coloque a câmera de vídeo apontando diretamente para o padrão e vire-o até que um quadrado com dois lados vermelhos e dois lados verdes apareça em torno do padrão Rotacione a câmera até que os lados vermelhos do quadrado estejam no topo e à esquerda do quadrado na imagem de vídeo Clique no botão esquerdo do mouse. Escolha um nome de arquivo para o padrão. é gerada uma imagem em mapa de bits do padrão que é criado e copiado para este arquivo. • • Outros podem ser treinados simplesmente apontando a câmera para novos padrões e repetindo o processo, ou clicando o botão direito do mouse para sair da aplicação. É preciso copiar os novos arquivos de padrões no diretório bin/Data antes de usá-los. www.cin.ufpe.br/~mmsml Baixar e descompactar o ARToolKit.zip Quem ficar até o final da aula poderá ganhar uma surpresa!! Infelizmente, como o computador que vocês estão logados não tem webcams, terão que utilizar um vídeo gravado por nós para realizar os testes. Execute o vídeo presente no diretório: …\dsvl\media\opa.avi Vamos mudar o vídeo usado no simpleTest. www.cin.ufpe.br/~mmsml Alterar centro do marcador Movimentar o objeto virtual sem usar funções OpenGL Mudar o objeto virtual do marcador Documentação: http://www.hitl.washington.edu/artoolkit / API: http://artoolkit.sourceforge.net/apidoc/i ndex.html