• Heimdall
  • Heimdall
  • Heimdall
2009 | Heimdall
2009
Heimdall

Objetivos

Desenvolvimento de uma arquitetura flexível, fácil de integrar e com características de desenvolvimento progressivo, destinada à geração de imagens de grande qualidade (realistas), em tempo real. Esta arquitetura é baseada em OpenGL, poderá ser utilizada em diferentes plataformas informáticas disponíveis no mercado e é capaz de ler um conjunto de dados (modelos 3D, texturas, materiais, configurações de luzes, configuração do ambiente, etc.) e usar a tecnologia disponível para gerar a cena o mais realisticamente possível em tempo real.

 

Algumas características

A qualidade dos resultados finais é obtida através da utilização de recentes algoritmos e tecnologias de suporte à geração e visualização interativa de modelos realistas, como por exemplo das áreas da geração sintética de materiais, geração de modelos realistas, iluminação e sombras. No desenvolvimento foram considerados gestores de interação com o sistema.

Entre outras, podem ser referidas as seguintes características diferenciadoras do Heimdall:

  • Utilização do “deferred shading” em vez do “forward render” que permite separar o desenho da geometria da acumulação dos resultados do cálculo de cada luz, utilizando buffers temporários. Com isto, é possível usar um número quase ilimitado de luzes numa dada cena.
  • Utilização de “texturas virtuais”, técnica de streaming de texturas para o GPU, à medida que vão sendo necessárias, e com a resolução adequada.
  • Desenvolvimento em C++ usando OpenGL 2.0 como API de desenho e GLSL como linguagem de shaders.
  • Modelo de iluminação baseado em bump mapping, com luzes do tipo direcionais, omnidirecionais e/ou spotlights, totalmente dinâmicos.
  • Modelo de iluminação dinâmico com projeção de sombras.
  • Modelo próprio para guardar geometria e respetivas animações.
  • Suporte a som (emissores) espalhados numa dada cena usando OpenAL.
  • Manipulação de uma cena através de scripts escritos em Lua.
  • Ferramentas de debug de cenas (visualizar normais, buffers temporários, etc.).
Left
Right