Proposta de Monografia
Voltar para o topo
O desenvolvimento de programas de computação gráfica em tempo real exige a aplicação de um vasto conjunto de técnicas de otimização que são recorrentes em diversas aplicações. Por esse motivo são desenvolvidas engines gráficas como OpenSceneGraph[4] e Ogre3D[5]. Entretanto, tais engines evoluíram de tal forma que o tempo de aprendizagem é longo. O intuito desse trabalho é desenvolver uma engine gráfica que implemente técnicas básicas de computação gráfica e que seja fácil de ser aprendida e utilizada.
O estudo de tensores e campos tensoriais é de importância fundamental para diversas áreas do conhecimento. São encontradas aplicações no estudo de fenômenos sísmicos[1], estruturas eletrônicas[2] e imagens de ressonância magnética sensíveis a difusão[3]. A visualização de tais campos é, portanto, de grande relevância para o avanço do conhecimento. Por esse motivo uma das aplicações desenvolvidas com o auxílio da engine será um programa que permita tais visualizações. Serão utilizados para testes a visualização da representação elipsoidal de campos tensoriais provenientes de imagens de ressonância magnética sensíveis a difusão e campos representativos de deformações físicas em 3 dimensões
Voltar para o topo
Com o Pandora's Box Graphic Engine visa-se atingir os seguintes objetivos:
- Construir uma engine gráfica de fácil utilização e aprendizado com a linguagem C++
- Criar uma ferramenta para a visualização em tempo real da representação elipsoidal de campos tensoriais em 3 dimensões
Voltar para o topo
As seguintes atividades já foram desenvolvidas:
- Estudo inicial sobre tensores e visualização de campos tensoriais
-
Codificação da estrutura geral da engine:
- Renderizador
- Grafo de cena
- Gerenciador de janelas
- Câmera
- Transformações lineares
- Modelos
- Luzes
- Suporte a shaders customizados
- Leitura de campos tensoriais representados em arquivos no formato Analyze®[6]
- Cálculo dos autovalores e autovetores dos tensores e renderização da representação elipsoidal de tensores
Voltar para o topo
Janeiro de 2011 | Definição e criação dos nós do grafo de cena que serão inicialmente suportados |
Fevereiro de 2011 | Implementação do buffer de vértices e do renderizador do grafo de cena |
Março de 2011 | Implementação da classe responsável por gerenciar os shaders e criação de modelos geométricos básicos |
Abril de 2011 | Suporte inicial a texturas e criação de métodos que calculam autovalores e autovetores de matrizes 3x3 |
Maio de 2011 | Suporte a renderização eficiente de várias instâncias de um mesmo modelo (renderização instanciada) e a arquivos Analyze® (representação de campos tensoriais) e versão inicial da visualização do campo |
Junho de 2011 | Implementação da técnica de renderização em texturas e iniciar modificações na engine para utilizar a técnica de iluminação deferida e aplicação das técnicas de renderização instanciada e outras otimizações na visualização do campo tensorial |
Julho de 2011 | Continuação da implementação do suporte a iluminação deferida e adicionar suporte a pós-processamento da cena renderizada e implementação de um jogo simples como exemplo de utilização genérica da engine |
Agosto de 2011 | Desenvolvimento de mais exemplos de uso e implementação de frustum culling na engine |
Setembro de 2011 | Limpeza de código e, se houver disponibilidade de tempo, adicionar suporte a modelos translúcidos |
Voltar para o topo
Introdução
Apresentação de engines gráficas alternativas existentes e os motivos para a criação de mais uma alternativa. Importância da visualização de campos tensoriais e como uma engine gráfica pode auxiliar o desenvolvimento de aplicações com tal propósito.
Conceitos e tecnologias estudadas
Conceitos utilizados na implementação da engine, assim como tensores e suas formas de visualização. Além de uma breve introdução ao OpenGL e C++.
Atividades realizadas
Idéias aplicadas na solução dos problemas.
Resultados e produtos obtidos
Trechos de código relevantes e resultados obtidos.
Conclusões
Considerações e futuro do projeto desenvolvido.
Bibliografia
Referências bibliográficas utilizadas ao longo do desenvolvimento da engine.