Finalmente, um post técnico! E psicodélico :P. Uma das disciplinas que eu ministro neste semestre se chama “Técnicas Avançadas de Computação Gráfica”. É uma disciplina com um conteúdo bastante variado, em que em cada aula é apresentado um tópico, principalmente de técnicas de rendering (pois temos uma outra disciplina só de animação), desde técnicas de iluminação global, rendering baseado em imagens (image based rendering), geração de sombras, geração procedural de texturas e geometrias, técnicas de aceleração (LODs..) até um overview de processamento de imagens. É, de fato, um desafio ministrar essa disciplina, uma vez que o foco de minhas pesquisas está em animação, e não em rendering. Mas eu gosto muito dela, em especial, dos trabalhos práticos legais que são desenvolvidos (eu me empolgo e faço junto).
Um desses trabalhos legais foi feito semana passada, explorando a geração procedural de texturas com noise coerente, utilizando-se a biblioteca open source libnoise. Esta biblioteca, em C++, implementa algoritmos para geração de ruído, dentre eles, o Perlin Noise. A biblioteca não necessariamente gera imagens (os ruídos podem ser utilizados para outros fins), mas ela possui um modulozinho que gera heightmaps, que podem ser salvos como imagens no formato bmp. E tudo bem documentado. Variando os parâmetros, consegue-se uma variedade de resultados. Pois bem, a idéia do trabalho era investigar esses parâmetros e criar rotinas para a geração de texturas variadas…. e, aproveitando a onda da Cow Parade de Porto Alegre (você sabe o que é isso?), o tema para o trabalho era: “texturize uma vaca”, criando assim, uma Cow Parade Virtual gerada com texturas procedurais.
Bom, como eu comentei antes, eu sou super empolgada (curto um monte as disciplinas que dou), e acabo fazendo boa parte dos trabalhos junto com a turma. Apresento, então, algumas das vacas cujas texturas gerei proceduralmente, usando os módulos de Perlin Noise, Voronoi, Cilindrical, Spheres e Billow, variando seus parâmetros principais aleatoriamente (pode-se guardar a seed para regerar):
Se você quiser brincar de gerar mais vacas aleatoriamente, estou disponibilizando o executável da versão do programa que fiz em OpenGL –>AQUI!!<–. Os códigos eu não posso liberar ainda, pois nem todo mundo me entregou o trabalho 😉 Fiz também uma integração na OSG (pois eu estou voltando a usá-la), mas a versão em OpenGL é mais enxuta para disponibilizar. Interessados, entrem em contato.
E por hoje é isso. Mu.