Pandora's Box Graphics Engine - USP · 2016. 2. 18. · Pandora's Box Graphics Engine Uma engine...

Post on 13-Sep-2020

30 views 0 download

Transcript of Pandora's Box Graphics Engine - USP · 2016. 2. 18. · Pandora's Box Graphics Engine Uma engine...

Pandora's Box Graphics Engine

Uma engine gráfica com aplicações em visualização científica

Andrew T. N. Kurauchi Victor K. Harada

Orientador: Prof. Dr. Marcel Parolin Jackowski

● Construir uma engine de fácil aprendizado e utilização

● Aplicar técnicas avançadas de computação gráfica

● Desenvolver um visualizador da representação elipsoidal de campos tensoriais

Objetivos

● Uma especificação aberta de interface de software para o hardware gráfico (GPU)

● Máquina de estados

OpenGL - O que é?

● Gerenciamento de janelas

● Tratamento de arquivos

OpenGL - O que ele não faz

● Criação de formas a partir de primitivas (pontos, retas e polígonos)

● Mapeamento de primitivas (3D) para um buffer (2D)

OpenGL - O que ele faz

Pipeline

Wrappers para os objetos do OpenGL

● Buffer● Texture1D● Texture2D● TextureBuffer● VertexBuffer ● Shader● Program

Para poder lidar com estruturas de cenas complexas a Pandora's Box utiliza um grafo de cena.

Grafo de cena

● Update pass (único passo obrigatório)

● Processamento de cena (Informações sobre a câmera estão acessíveis)

● Pós-processamento da cena (Informações sobre a câmera não são mais acessíveis)

Renderizador

Exemplo de código

Exemplo de aplicação simples usando a engine

Campo de grama

IRM = Imagem de Ressonância Magnética

● Imagens em três dimensões

● Difusão da água (tecidos vivos)

● Informações da difusão média da água em cada ponto representada por tensores

IRM sensíveis a difusão

Conceitos

Para que serve?

Representação elipsoidal

Autovalores e autovetores do tensor

Cérebro

Visualização da representação elipsoidal do campo de tensores de difusão de um cérebro humano

Técnicas - Depth Peeling

Técnicas - Depth Peeling

Técnicas - Depth Peeling

Técnicas - Depth Peeling

Técnicas - Geometry Instancing

model = new Model;for(id = 0; id < instances; id++) { drawInstance(model, id);}

● Aprimorar o framework de shaders para utilizar o conceito de injeção de dependências

● Separar o contexto de renderização da classe GraphicAPI

● Criar proxies para os objetos internos

● Executar o renderizador em uma thread própria

Trabalho futuro

Referências

● cplusplus.com - the c++ resources network. http://www.cplusplus.com/. Acessado em agosto de 2011.

● Peter B. Kingsley. Introduction to diffusion tensor imaging mathematics: Part I. Tensors, rotations, and eigenvectors. Concepts in Magnetic Resonance Part A, 28A(2):101–122, March 2006.

● Opengl 4.1 reference pages. http://www.opengl.org/sdk/docs/man4. Acessado em junho de 2011.

● SHREINER, Dave. OpenGL Programming Guide. 7. ed. Addison-Wesley, 2010. 885p.

Dúvidas?

Código disponível em:https://github.com/victorkendy/PandoraBox

Obrigado!