Espaço para divulgação de trabalhos e ideias criados durante o curso de Jogos e Entretenimento Digital (Jogos Digitais) - UNISINOS.

segunda-feira, 12 de julho de 2010

Terreno e SkyDome

Trabalho implementado para a disciplina de Técnicas Avançadas de Computação Gráfica (UNISINOS), de 2010/1, com a professora Rossana Queiroz.
Heightmap com LOD através de ROAM (implementado com Binary Triangle Tree) e SkyDome.

O heightmap é criado a partir de imagem.
Para a representação de terrenos, foi utilizada a técnica de Heightmap, ou mapa de alturas, uma estrutura de dados (matriz representando a largura e comprimento do terreno - XZ) que armazena a altura (Y) do terreno em cada coordenada do plano XZ. 
    O algoritmo base é de autoria de Bryan Turner, que apresenta uma forma de se renderizar grandes terrenos utilizando a técnica de LOD (Level of Detail), técnica que aumenta o nível de detalhe da malha de vértices em pontos próximos ao observador, e diminui em pontos distantes, através de ROAM (Real-Time Optimally Adapting Meshes), técnica para manipular a malha de vértices do terreno em tempo real, que por sua vez é possível utilizando-se BTT (Binary Triangle Tree), árvore binária de triângulos que possui vários níveis de profundidade, e durante a renderização, a profundidade que será executada varia da distância do ponto em questão ao observador e o limite de exploração árvore adentro a cada frame. A malha de vértices não é alterada, o processo de Tesselation, efetuado a cada frame antes da renderização, apenas monta os polígonos com vértices selecionados para formar uma malha aproximada à original, diminuindo drasticamente o número de vértices utilizados e polígonos desenhados.
A textura é um ponto que precisa ser melhorado, pois tive que utilizar uma textura para todo o terreno, com resolução limitada (máximo de 4096x4096).
Resultados: terrenos de 1024x1024 ou maiores, consegue-se 60fps com tranquilidade (isso com um Athlon 64 X2 Dual Core, com 2.6GHz por core).

Utilizado:
  • OpenGL;
  • Glut;
  • SDL_Image (inicialmente DevIL, mas migrei pra SDL pela documentação e funcionalidades);
  • Lua.

Video:

0 comentários:

Postar um comentário