Pessoal, implementei no nosso framework um carregador de arquivos BSP, que sao usados no Quake 3 para descrever os cenarios. Ficou muito bonito e rapido. Vejam as imagens. O BSP guarda informacoes para voce calcular facilmente as faces que sao potencialmente visiveis dada uma certa posicao da camera. Essa informacao e chamada de PVS (potentially visible set). Alem de eliminar objetos que estao fora desse conjunto, tambem descarto as faces que estao fora do frustum de visao da camera. Dessa forma, apenas o necessario e enviado para desenho.Abracos!Marco Depois do recesso de fim de ano, retornamos as aulas nessa terca, dia 17/1.A aula 13 foi dedicada a Unity3D. A fim de aprendermos o funcionamento basico dessa ferramenta, refizemos o jogo de Pong feito anteriormente na aula 7 com o nosso framework. Entre outros detalhes da Unity, vimos basicamente como criar e organizar GameObjects usando "prefabs"; usar hierarquias de GameObjects (obtendo efeito semelhante ao grafo de cena ja implementado no framework); adicionar diferentes componentes a um GameObject (rigid body, collider, mesh render, scripts...); criar e usar scripts em C#; tratar input de teclado; adicionar skybox; adicionar fontes de luz; tratar colisao de forma personalizada; etc.Aos que desejam usar a Unity3D para fazer o projeto final, recomendo comecarem o quanto antes. Aproveitem e tragam duvidas para as proximas aulas.Na proxima aula, voltaremos a usar nosso framework para rever algoritmos e estruturas de dados usadas no processo de deteccao de colisao. Vimos como acelerar o processo de deteccao de colisao entre duas malhas complexas de triangulos via BVH (bounding volumes hierarchy).A aplicacao de teste usada consiste num bule que colide com um coelho. Os triangulos que se intersectam sao pintados de amarelo em wireframe, conforme mostrado na figura abaixo.Dada a grande quantidade de triangulos envolvidos, o resultado obtido e bastante satisfatorio. A figura a seguir destaca a BVH envolvendo o coelho. O bule tambem possui uma estrutura semelhante associada. Isso foi feito em aulas anteriores, mas esqueci de comentar aqui no blog.Nosso framework suporta ler dados de entrada do Kinect. Abstracoes como "hand tracker" foram criadas para esconder chamadas as funcoes do OpenNI, tornando o uso mais facil e intuitivo.Foram criadas duas aplicacoes de teste. Na primeira, com uma mao, o usuario pode controlar uma esfera, fazendo-a colidir com outros objetos na cena. Com duas maos, o usuario pode rotacionar e transladar a camera virtual.A outra aplicacao e uma adaptacao do jogo "acerte os coelhos" que fizemos em aulas anteriores. Ao inves de usar o mouse para clicar na tela e lancar esferas, o usuario pode usar apenas as maos.Usamos a interface do OpenNI para C++ com o middleware NITE da PrimeSense. Mais detalhes em: www.openni.org E interessante notar como e feita a iluminacao em nossos cenarios BSP. A tecnica usada e conhecida como lighmapping. Toda iluminacao e previamente calculada e salva como uma textura (primeira parte da imagem abaixo). Cada face a ser desenhada tambem possui uma textura do material sem iluminacao (segunda parte). Essas duas texturas sao mescladas em tempo de execucao para obter a cor final de cada face (terceira parte). Primeira