domingo, 30 de novembro de 2008

Sistema de Headtracking


O sistema será desenvolvido com o rastreamento de posição através de webcam com o uso de, basicamente, 2 bibliotecas a irrlicht e a opencv, ambas open source, sendo a primeira utilizada para a parte gráfica do sistema, uma vez que está é uma engine open source, e a segunda utilizada na parte de headtracking. O nosso sistema tenta criar uma janela no monitor, ou seja, a partir do movimento da cabeça o usuário consegue manipular uma câmera, dando uma melhor idéia de profundidade no que está atrás do monitor.

Além das bibliotecas irrlicht e opencv, fazemos uso, após algumas alterações, de um sistema open source desenvolvido pela empresa NightSoft dos EUA, o IrrCvCamController, esta empresa foi responsável pelo desenvolvimento do arquivo .h e .cpp que inclui algumas funções de tracking que vão dar controle pra câmera. O sistema é responsável por relacionar o que a openCv capta de headtracking e passa para controles de câmeras da Irrlicht. Para os testes, será utilizado um modelo 3D de 60.000 polígonos gerado em 3D Max.

Entre as alterações que provocamos no sistema IrrCvCamController, foi realizada na tentativa de ganhar velocidade. Isto se deu através de tracking points além do ajuste de alguns pontos de cálculo de "efeito de janela" com sistemas melhores cálculo de ponto de visão (view point).

Um dos desafios criados é a identificação da profundidade, para isso, foi desenvolvida uma solução onde o tamanho da cabeça é calculado e o ponto máximo e o mínimo e a diferença entre eles é que diz para o sistema se o usuário está se deslocando para frente ou para traz. Quando o valor aumenta demonstra uma aproximação do usuário, diminuindo demonstra o afastamento e o sistema reposiciona a câmera virtual.

Os principais problemas enfrentados no desenvolvimento deste trabalho estão relacionados com a velocidade de processamento do headtracking, ele é muito lento o que não deixa a aplicação ficar realista. Para uma maior qualidade do sistema, a velocidade é fundamental, senão o usuário jamais vai ter a noção de que realmente está olhando pra uma moldura sem tela ou através de uma janela.