Um desenvolvimento de uma plataforma para Realidade Espacialmente Aumentada Julio Lucio Martin IMPA juliolucio@gmail.com Luiz Velho IMPA lvelho@impa.br Abstract Neste documento se relata o trabalho de Julio Lucio sob a supervisão do professor Luiz Velho nos primeiras fases de desenvolvimento e dos primeiros experimentos da plataforma S.A.R. ( "Spatial Augmented Reality"). Este documento também descreve as duas primeiras pecas de software desenvolvidas para esta plataforma. A primeira delas gera matrizes de transformação que nos permitem transformar geometria do espaço 3D virtual ao 3D real. A segunda nos permite fazer testes de desenho de geometrias simples virtuais sobre reais. Mostra também a a configuração e os dispositivos utilizados nos primeiros experimentos quanto algumas imagens dos resultados obtidos. 1 Introdução Nesta primeira fase desenvolvemos uma pesquisa da realidade virtual aumentada, e fizemos algumas experiências nesta área, através do desenvolvimento de um sistema capaz de iluminar e texturizar, dinamicamente, as superfícies de alguns objetos convexos e brancos. Para tal, foram usados um projetor que irá projetar texturas, luzes e sombras nas superfícies dos objetos. Para calibrar as projeções sobre eles foram utilizados alguns algoritmos desenvolvidos no VISGRAF IMPA que nos permitem utilizando um objeto de referencia, obter informações das transfomações que temos que aplicar na imagem para mapea-las no espaço do projetor. Uma vez temos calculadas estas transformações de espaço para este projetor, fizemos uns testes de projeção sobre o objeto de referencia utilizado. 2 Trabalhos Prévios Minha inspiração inicial para esse projeto foi o trabalho do artista Pablo Valbuena, que desenvolveu uma obra de arte que, usando um projetor, ilumina alguns prismas de base quadrada. Ele alcançou estes resultados através da construção das geometrias no mundo real e então ele modelou a geometria e a renderizou com algumas luzes, utilizando software 3D. O filme renderizado resultante foi projetado sobre as geometrias criando a ilusão de que a luz voava em torno delas. [2] Nossa pesquisa será baseada também, em alguns documentos, onde diferentes técnicas foram utilizadas para se iluminar e texturizar dinamicamente objetos e ambientes. A primeira de autoria de Ramesh Raskar pesquisador da North Caroline University [7][9][1] descreve como um novo modo de visualização de gráficos por computador em 3D, que envolve projetores de luz e objetos físicos para gerar imagens ricas em detalhes diretamente no mundo do usuário. Embora o método seja limitado quando comparado aos gráficos tradicionais renderizados em telas de computador, ele oferece uma nova maneira de interagir com imagens sintéticas. Eles apresentaram novas técnicas que fazem a iluminação baseada em imagens de objetos não-triviais. Um processo de renderização envolve essencialmente o ponto de vista do usuário, a forma dos objetos gráficos, as propriedades de refração e iluminação. A computação gráfica tradicional ou realidade aumentada na cabeça gera os resultados para todos estes elementos com uma taxa de redução temporal ( frame rate ) ou resolução espacial (pixel). Com lâmpadas de sombreamento, eles tentam manter o ponto de vista e a superfície na melhor resolução e apenas a informação de cor adicionada fica numa resolução limitada. A segunda do pesquisador Deepak Bandyopadhyay, também da North Caroline University apresenta um novo sistema de pintura 3D especialmente aumentada e projeção em objetos reais. Ela exige que haja dois projetores de frente para o outro, um tracker anexado ao objeto (e no pincel), ambos os projetores serem calibrados para o quadro de referência do tracker, o objeto ser razoavelmente maçantecolorido e difuso, e que o geometria do objeto e coordenadas de textura sejam pré-adquiridos. Algumas referencias sobre esse e outros trabalhos podem ser encontradas em [6] [3] [5].
A técnica de realidade espacialmente aumentada teve sua origem no trabalho office of the future de Henry Fuchs[8]. 3 Sumário 3.1 Dispositivos pontos que o aplicativo de calibração usará como informação de entrada. fig. 2 Com este colocado na posição 30, 0, 0 do espaço de projeção, se medem as posições 3d dos pontos marcados, e se gera um arquivo com as posições dos pontos no mundo 3D real. Nossa plataforma esta composta por duas partes. Um conjunto de componentes de hardware e vários aplicativos de software. No primeiro, a configuração de hardware é composta por um computador com alta capacidade gráfica, e um projetor. No laboratório, construímos uma plataforma de cartão pluma na qual dos planos formam um angulo de noventa graus, a qual servirá como espaço base de projeção. Colocamos o projetor pendurado do teto orientado na direção da base, que permite iluminar a a plataforma de projeção lateralmente. Depois se constroem um objeto cubico que ao ser colocado nesta plataforma, nos permite capturar as posições de alguns pontos específicos desta geometria cubica. Espaço Base o plataforma projeção. Este espaço base (figura. 1, e um espaço de coordenadas no mundo real. Quer dizer que tem uma posição e uma orientação. E o espaço onde o projetor iluminará as geometrias que se encontram nele. Para nossos primeiros experimentos, temos construído sobre uma mesa do laboratório dos planos de 90cm x 60cm de papel pena de cor branco, e marcado nele um origem do sistema de coordenadas deste espaço base. Figura 2: Objeto de calibracão. Projetor. O projetor se encontra colocado pendurado do teto com os suportes integrados no laboratório, e orientado de tal forma que é capaz de iluminar tanto ao espaço base de projeção como as faces superiores, esquerda e frontal do cubo. figura 3 Figura 1: Espaço Base. Figura 3: Situação do Projetor. Objeto de calibracão Construímos um objeto cubico de calibração de dimensiones 30cm x 30cm x 30cm e marcado sobre ele 17 pontos em seus cantos e faces, Computador. Conectamos o projetor a uma das saídas de video extra que possui o computador onde se rodam os aplicativos.
3.2 Aplicativos Com estas informações da geometria, um aplicativo e capaz de calcular umas matrizes de transformação espacial, as quais vão servir depois para projetar as geometrias transformadas para o espaço da plataforma de projeção para este projetor. Outro aplicativo de teste, nos desenha algumas texturas sobre o objeto cubico, e nos permite comprovar que os resultados dos cálculos das matrizes sao coretos. Ambos aplicativos utilizam as bibliotecas openframeworks.cc como base, e a biblioteca matemática GSL para os cálculos matriciais. 4 Aplicativo de calibração A figura 4 descreve a arquitetura do sistema. Figura 5: Interface de pontos 2D 4.2 Calibracao Figura 4: Arquitetura do sistema. 4.1 Entrada do aplicativo Uma vez colocado o objeto de calibracão no espaço base e depois de ter decidido e marcado os pontos no objeto que serem usados para calibrar, geramos um arquivo que contem as posições 3D dos pontos marcados no objeto no mundo real. Ao executar o aplicativo, este carregará o arquivo de pontos 3D e iniciará uma interface de usuário projetada no espaço base que permite que o usuário desenhar pontos sobre a geometria e move-los ate as posições dos pontos marcados no objeto. Figura 5 Estes dois conjuntos de pontos são os que o sistema utilizará como entrada para os cálculos das matrizes. Para o calculo das matrizes de calibracão o aplicatvo utiliza um algoritmo desenvolvido no VISGRAF do IMPA. Este algoritmo calcula as matrizes de transformação que vão transformar do espaço da cena 3D do computador( virtual) ao espaço da cena real o espaço base. Este algoritmo foi desenvolvido por Bruno Madeira e compilado para Windows XP. Para sua compilação foi necessária a compilação da biblioteca matemática GNU GSL, a qual nos facilita algumas das operações matriciais que sao feitas para o calculo das matrizes. Utilizando os conjuntos de pontos 2D e 3D, o algoritmo gera duas matrizes e um vector: Transformação de câmara. Matriz de transformação, que nos deforma a cena do mesmo jeito que faz a lente do projetor. Rotação. Matriz que representa a rotação entre o espaço base e o projetor. Vector de posição. Representa a posição o vector de posição relativo entre o espaço base e o projetor. 4.3 Saida do aplicativo As matrizes geradas pelo aplicativo são armazenadas no disco do computador para sua posterior utilização. O aplicativo depois de calcular as matrizes desenhara os pontos 2D adicionados pelo usuário tanto como os pontos 3D transformados usando as matrizes de transformação.
Este desenho de pontos nos permite comprovar que o projetor foi calibrado corretamente, comprovação consequência da coincidência da posição dos pontos 2D e 3D transformados.figura 6 (a) luz esquerda Figura 7: Textura aluminio Figura 6: Comprovação saida da calibração. Repetindo este processo com vários projetores, podemos calcular matrizes de transformação para cada um deles, assim somos capazes de iluminar os objetos de varias posições diferentes, o que nos permitira cobrir todas as áreas dos objetos. 5 Aplicativo de Desenho de texturas Este aplicativo simplesmente é capaz de carregar qualquer cena 3D no formato de arquivo "3ds"e desenhar os objetos da cena transformados, para esses serem desenhados corretamente no espaço base. Como teste este aplicativo desenha também uma luz que se desloca ao redor da cena. 6 Resultados Obtidos Gerando diferentes cenas 3D no computador com cubos de diferentes texturas e projetando-as sobre o objeto cubico de calibração, obtivemos os seguintes resultados. Figuras 7 8e 9 7 Conclusões e Trabalhos Futuros Durante este periodo de desenvolvimento da plataforma foram desenvolvidas as bases para começar a experimentar (a) luz esquerda Figura 8: Textura vidro translúcido listado com um objeto e un projetor calibrado para o espaço onde está o objeto. Como foi mencionado anteriormente, o projetor só ilumina (texturiza) uma das laterais do objeto. Para poder cobrir todas as faces de um objeto, seria necessário adicionar mais projetores (dependendo o número da complexidade do objeto), podendo utilizar alguns deles um espelho para iluminar o objeto sem incomodar ao usuario. Também poderíamos utilizar câmaras e outros sensores tanto para determinar a geometria do objeto, como para detectar a posição da cabeça do usuario, o que nos permitiria adicionar a componente especular para o render. Posto que dependendo do angulo com que incide a luz do projector na geometria, o reflexo é maior ou menor para uma mesma cor, deveriam ser feitos ajustes nas áreas de iluminação do projetor, independentes para cada face do objeto. No caso de vários projetores, teríamos que fazer também um "Blending"que faria que as discontinuidades de luz de um projetor ao outro sejam suaves. Poderiam ser adicionadas tambem sombras na cena.
(a) luz esquerda Figura 9: Textura plantas Referências [1] Dynamic shader lamps: Painting on movable objects. In ISAR 01: Proceedings of the IEEE and ACM International Symposium on Augmented Reality (ISAR 01), page 207, Washington, DC, USA, 2001. IEEE Computer Society. [2] Pablo valbuena, spatial augmented reality, 2007. http://www.pablovalbuena.com/. [3] O. Bimber, F. Coriand, A. Kleppe, E. Bruns, S. Zollmann, and T. Langlotz. Superimposing pictorial artwork with projected imagery. In SIGGRAPH 06: ACM SIGGRAPH 2006 Courses, page 10, New York, NY, USA, 2006. ACM. [4] A. N. Expert. A Book He Wrote. His Publisher, Erewhon, NC, 1999. [5] J. C. Lee, P. H. Dietz, D. Maynes-Aminzade, R. Raskar, and S. E. Hudson. Automatic projector calibration with embedded light sensors. In UIST 04: Proceedings of the 17th annual ACM symposium on User interface software and technology, pages 123 126, New York, NY, USA, 2004. ACM. [6] R. Raskar. Projectors: advanced graphics and vision techniques. In SIGGRAPH 04: ACM SIGGRAPH 2004 Course Notes, page 23, New York, NY, USA, 2004. ACM. [7] R. Raskar, K. Low, and G. Welch. Shader lamps: Animating real objects with image-based illumination. Technical report, Chapel Hill, NC, USA, 2000. [8] R. Raskar, G. Welch, M. Cutts, A. Lake, L. Stesin, and H. Fuchs. The office of the future: a unified approach to imagebased modeling and spatially immersive displays. In SIG- GRAPH 98: Proceedings of the 25th annual conference on Computer graphics and interactive techniques, pages 179 188, New York, NY, USA, 1998. ACM. [9] R. Raskar, R. Ziegler, and T. Willwacher. Cartoon dioramas in motion. In NPAR 02: Proceedings of the 2nd international symposium on Non-photorealistic animation and rendering, pages 7 ff, New York, NY, USA, 2002. ACM.