Lattibol - Sistema interativo de visualização de dados volumétricos para simulador de microfluídica baseado no método das Redes de Boltzmann

Esta página apresenta o projeto da disicplina IA369E - Tópicos em Engenharia de Computação VI, que teve como tema a visualização interativa de dados volumétricos, e foi ministrada pela Profª. Drª. Wu Shin Ting no 2º semestre de 2013, na Faculdade de Engenharia Elétrica e da Computação (FEEC) da Universidade Estadual de Campinas (UNICAMP).

Esse projeto foi desenvolvido pelos alunos Fabíola Martins Campos de Oliveira e Lucas Monteiro Volpe, ambos alunos regulares de mestrado da Faculdade de Engenharia Mecânica (FEM) da UNICAMP.O projeto teve como objetivo implementar um sistema interativo de visualização de dados volumétricos, que foi desenvolvido para visualizar simulações da área de microfluídica.

O simulador de microfluídica Lattibol faz parte do projeto de mestrado dos alunos e já havia sido implementado em linguagem CUDA C++, criada pela NVIDIA para desenvolvimento de programas de propósito geral executados em suas placas de vídeo. O simulador é baseado no método das Redes de Boltzmann, que é um método baseado em partículas para simulação de escoamentos fluídicos.


Desenvolvimento

O sistema de visualização foi desenvolvido em linguagem C++ com uso das bibliotecas OpenGL (Open Graphics Library) e Qt 5.1 e GLSL (GL Shading Language) para implementação dos shaders para uso do fluxo programável da placa de vídeo. Abaixo pode-se ver o resultado final da interface gráfica do simulador Lattibol.

        A ténica de visualização utilizada foi a texturização 3D, um algoritmo para interoperabilidade entre CUDA e OpenGL foi usado e diversas funções de interação foram implementadas, tais como: 

            funções para lidar com o objeto texturizado: ampliação/redução do objeto (zoom), movimento do objeto (pan), rotação do objeto usando a técnica Arcball, normalização de velocidades e densidades e corte nos três eixos;

            funções para alterar parâmetros da simulação: execução, pausa e interrupção da simulação, importação de dados de entrada da simulação, salvamento de dados de saída da simulação, velocidade nos eixos x, y e z, densidade de saída e viscosidade e taxa de atualização de quadros; e

            informações sobre a simulação: quantidade de placas de vídeo, dimensões do domínio, parâmetro de relaxação, quantidade de MLUPS (milhões de operações por unidade de rede por segundo), tempo da simulação em segundos e quantidade de quadros por segundo.

Interface lattibol