For who speaks English, please read here: http://arc-team-open-research.blogspot.com.br/2012/11/blender-camera-tracking-python.html
Recentemente participei da BlenderPRO 2012, uma conferência nacional sobre o Blender 3D onde palestrei, ministrei um curso e reencontrei grandes amigos.
Escrevo sobre esse evento por que lá tive o prazer de conhecer grandes artistas nacionais e internacionais, dentre eles o Sebastian Koening, desenvolvedor do camera tracking do Blender e um dos integrantes do grupo que criou o curta Tears of Steel. O que foi bastante motivador para que eu pensasse em efetivamente fazer algo com tracking no Blender.
Grosso modo, com o camera tracking, nós abrimos um vídeo dentro do Blender e através da captura de alguns pontos, podemos reconstruir o movimento da câmera virtual em três dimensões.
Vídeo criado com os dados importados de outra cena contendo camera trackingCom isso, é possível inserir objetos na cena, dando a impressão de que eles de fato estão lá!
Na verdade eu e dois amigos (o Teo Macedo e o Daniel Ludwig) já haviamos feito um trabalho com essa tecnologia, nos idos de 2010, para a minha palestra na Latinoware de então, mas naquela oportunidade eu usei o Voodoo, um camera tracker que apesar de ser gratuito não é livre.
Motivações
A ideia de usar o camtracking veio em uma caminhada enquanto eu e uns camaradas tiravamos fotos na frente dos ministérios em Brasília. No Museu Histórico apoiava-se o busto do ex-presidente Juscelino Kubitschek. Imaginei que seria muito legal se eu fizesse um track de uma cena, onde aparecia aquele lugar e de repente o busto tomava vida, piscando aos transeuntes e assoprando na direção dos cabelos para que as pombas saíssem de cima deles.
Infelizmente, a gravação que meu amigo fez daquela cena acabou tendo alguns probleminhas de distorção, o que impossibilitou o seu uso para esse fim.
Mas a ideia permaneceu na mente, e assim que voltei, me dediquei aos estudos dessa fantástica tecnologia.
No caso do Juscelino, eu não modelaria o seu rosto do zero. Minha intenção essa fazer uma reconstrução da cena via Python Photogrammetry Toolbox, ou seja, eu escanearia usando imagens, ou mesmo o vídeo base do tracking.
Ao usar o vídeo base o trabalho se tornaria mais fácil, pois a textura estaria quase pronta e a iluminação estaria configurada com poucos comandos. Como assim? Eu explico.
Frame do vídeo original com o vaso de cimentoAssim que cheguei em casa, procurei uma situação de tracking que envolvesse um objeto “complexo”. A coisa mais complexa que encontrei no quintal da minha casa foi um vaso de cimento com motivos florais.
Para facilitar a vida do tracker e da reconstrução via frames, coloquei o vaso de cabeça para baixo.
Fiz uma filmagem rápida focando o vaso e não mostrando a linha do horizonte, assim ficaria mais fácil configurar a cena depois.
Converti o vídeo em uma sequência de imagens e enviei ao Python Photogrammetry Toolbox (GUI) no Linux ArcheOS, que eu rodo dentro do Virtualbox.
Nuvem de pontos criada pelo PPT importada no BlenderO grande barato do “escaneamento 3D por fotografias” via Bundler, é que o Blender importa (via script) os dados da reconstrução, posicionando as fotos “rente” a câmera, facilitando muito o processo de mapeamento.
É possível fazer uma reconstrução com qualidade excelente, como no caso do crânio da criança Taung. Mas naquele caso quem fez a reconstrução foi a equipe Arc-Team da Itália, que entende bem do processo. Como eu usei uma câmera de pouca qualidade e lancei mão da sequência MPEG da qual gravei, pude reconstruir apenas uma parte com o algotirmo Ball Pivoting dentro do Meshlab. Felizmente foi o suficiente para reconstruir o modelo com a precisão necessária.
O fato de ter o modelo reconstruído através de algoritmos, faz com o o processo seja o menos subjetivo possível. Quem trabalha com modelagem 3D sabe que usar fotos de referência pode induzir o artista ao erro, isso por que as fotografia sempre tem a deformação da perspectiva, o que não acontece com o modelo reconstruído. Uma vez que o vaso foi finalizado, era chegada a hora de inserir ele na cena trackeada.
Não há muito o que escrever acerca do “trackeamento” da cena. Para aqueles que desejam aprender, existe um excelente videotutorial em inglês do Andrew Price que ensina a fazer isso.
Vaso modelado em 3D inserido sobre o vaso originalAcima temos a imagem do vaso 3D que foi posicionado sobre o vaso original da gravação. O fato de ele ter sido reconstruído usando como base a gravação fez que que o modelo batesse quase perfeitamente com o original. Além disso, as imagens que serviram como base para a textura já estão com a configuração de iluminação praticamente pronta. A pergunta é, por que modelar o objeto inteiro e texturizá-lo, já que grande parte das reconstruções desse tipo são feitas apenas com o objetivo de servirem como máscara?
Não sou expert nessa área, mas imagino que a reconstrução completa ajuda e muito na hora de texturizar o objeto, fazendo com que ele fique mais realista. Além disso, podemos deformar o modelo, de modo a expandir as potencialidades dele, como aparece na imagem acima, onde o vaso com motivos florais se converteu em uma nave expelidora de seres esféricos. É um exemplo tolo, mas ilustra bem o que pode ser feito com essa tecnologia.
Para finalizar, é justo dizer que o objetivo inicial foi alcançado. Fazer um tracking com o Blender, reconstruir parte da cena com a própria filmagem e expandir as potencialidades das ferramentas de código livre.
Esse foi apenas um teste, caso sobre um tempo ou a inspiração bata à porta insistentemente, outros desses posts surgirão mais lapidados e plenos de referência.
Grande abraço e até o próximo!
Acredito que uma aplicação interessante desta tecnologia seja a integração com impressoras 3D, o que possibilitaria a cópia de objetos tridimensionais para produção em escala.