Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Visualização Científica – Introdução ao VTK João Manuel R. S. Tavares Jorge Gomes Barbosa url: http://www.fe.up.pt/~tavares/ensino/VISCI/visci.html Sumário 1. Bibliografia 2. O que é o VTK 3. Recursos sobre o VTK 4. Obter o VTK 5. Características técnicas do VTK 6. Exemplos de aplicação do VTK 7. Arquitectura do sistema VTK 8. Modelo de visualização do VTK 9. Modelo de imagem do VTK 10. Pipeline de execução do VTK J. Tavares / J. Barbosa MMCCE - 2004/2005 11. Modelo gráfico do VTK 12. Pipeline de visualização do 13. 14. 15. 16. VTK Dados suportados no VTK: Células Dados suportados no VTK: Conjuntos de dados Dados suportados no VTK: Tipos de atributos associados aos pontos e às células Formato de ficheiros do VTK Visualização Cientifíca - Introdução ao VTK 2 1 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Bibliografia The Visualization Toolkit (3rd Edition) Will Schroeder, Ken Martin, Bill Lorensen ISBN 1-930934-07-6 Kitware, Inc. publishers VTK User’s Guide (VTK 4.2) Will Schroeder, Ken Martin ISBN 1-930934-08-4 Kitware, Inc publishers Mastering CMake (CMake 1.8) Ken Martin, Bill Hoffman ISBN 1-930934-09-2 Kitware, Inc publishers Disponíveis para compra on-line em: http://www.vtk.org/buy-books.php J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 3 O que é o VTK? O VTK – The Visualization ToolKit é um sistema de software aberto para computação gráfica 3D, processamento de imagem e visualização. O VTK inclui uma biblioteca de classes C++ e várias interfaces de interpretação, incluindo para as linguagens Tcl/Tk, Java, e Python. O VTK tem vindo a ser implementado em plataformas Unix, MS Windows (95/98/NT/2000/XP) e Mac (OSX Jaguar). A arquitectura e o desenvolvimento da biblioteca têm sido fortemente influenciados pelos princípios do desenvolvimento / programação orientado para objectos. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 4 2 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa O que é o VTK? O modelo gráfico do VTK está num nível de abstracção mais elevado quando comparado com os modelos das bibliotecas de renderização como a OpenGL ou a PEX. Tal significa que é muito mais fácil desenvolver aplicações gráficas e de visualização. Com o VTK as aplicações podem ser implementadas indiferentemente em C++, Tcl, Java, ou Python. Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 5 O que é o VTK? Nível de aplicação (C++,Tcl/Tk, ...) Interface para as linguagens interpretadas: Tcl/Tk, Java, Python VTK Biblioteca Gráfica (openGL) Biblioteca de classes C++ (compilada) Sistema Orientado para Objectos J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 6 3 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa O que é o VTK? A biblioteca VTK é um verdadeiro sistema de visualização, pois não permite apenas a representação da geometria dos objectos. O VTK suporta uma ampla variedade de algoritmos de visualização, incluindo: métodos escalares, vectoriais, tensoriais, de textura e volumétricos; e técnicas de modelamento avançado como o modelamento implícito, a redução poligonal, a suavização de malhas, o corte, a definição de contornos e a triangulação de Delaunay. Estão também integrados dezenas de algoritmos de processamento de imagem, de tal forma que é possível “combinar” algoritmos de imagem e algoritmos gráficos. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 7 O que é o VTK? A biblioteca VTK é utilizada por estudantes, académicos, programadores, analistas de dados, utilizadores e investigadores de computação gráfica e visualização, engenheiros, cientistas, investigadores, etc. Apesar do VTK ser disponibilizado livremente, o suporte comercial é assegurado pela empresa Kitware. Dezenas de empresas utilizam o VTK no desenvolvimento dos seus programas comerciais. O VTK também é muito utilizado em ambiente académico, em investigação e em cursos de computação gráfica e de visualização. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 8 4 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Recursos sobre o VTK Livros The Visualization Toolkit, An Object-Oriented Approach to 3D Graphics (Third Edition) Will Schroeder, Ken Martin and Bill Lorensen Kitware, Inc., ISBN 1-930934-07-6 http://www.kitware.com/products/vtktextbook.html The VTK User's Guide (VTK 4.2 Edition) Kitware, Inc. ISBN 1-930934-08-4 http://www.kitware.com/products/vtkguide.html J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 9 Recursos sobre o VTK Página web oficial http://www.vtk.org Software (http://public.kitware.com/VTK/files/); FAQ’s (http://public.kitware.com/cgi-bin/vtkfaq); Lista de discussão (http://public.kitware.com/mailman/listinfo/vtkusers); Motor de procura (http://www.kitware.com/search.html); Documentação on-line (http://www.vtk.org/doc/nightly/html/); Exemplos de programas (http://www.vtk.org/example-code.php); Exemplos de utilização (http://www.kitware.com/case/vtkinuse.html); Ficheiros de dados (http://public.kitware.com/VTK/files/); Links (http://www.vtk.org/links.php); etc. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 10 5 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Recursos sobre o VTK Exemplos distribuídos em conjunto com o código fonte (...VTK\Examples). Vários testes distribuídos em conjunto com o código fonte (por exemplo, ...VTK\Graphics\Testing\Tcl, ...VTK\Graphics\Testing\Cxx). Sistemas de ajuda distribuídos em conjunto com o código fonte: em html (...vtkhtml\html\index.html) e em documentação compilada (MS Windows) (...vtkhtml\VTK4.2Documentation.chm). Páginas de utilizadores com vários recursos disponíveis, por exemplo, http://www.barre.nom.fr/vtk). J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 11 Recursos sobre o VTK Sistema de ajuda, distribuído em conjunto com o código fonte, em html. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 12 6 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Recursos sobre o VTK Sistema de ajuda, distribuído em conjunto com o código fonte, compilado (MS Windows). Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 13 Obter o VTK A partir dos CD’s que acompanham os livros da Kitware sobre o VTK; Fazendo o download: http://public.kitware.com/VTK/get-software.php ftp://public.kitware.com/pub/vtk http://public.kitware.com/VTK/files/ Existem diferentes versões disponíveis: VTK 4.X (versão oficial); VTK Nightly Release (versão diária – não oficial) VTK CVS (últimas modificações – não oficial) Verificar a estado da versão CVS (estável ou não) J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 14 7 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Obter o VTK Ficheiros a obter (sistemas Windows): Instalação dos executáveis (Binary) Descarregar as versões executáveis: Núcleo: vtkXXCore.exe (ou vtkXX-LatestRelease.exe) Suporte para linguagens interpretadas: vtkXXTcl.exe, vtkXXJava.exe, vtkXXPython.exe Executar vtkXXXCore.exe, vtkXXTcl.exe, ... Instalação do código fonte Descarregar as fontes do VTK: vtkXXSrc.zip (ou VTKXX-LatestRelease.zip) Descarregar o CMake: CMSetupXXX.exe Executar o CMake e configurar o projecto VTK Extrair, e compilar o projecto (compilador necessário, por exemplo o Microsoft VC++ 6.0) J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 15 Características técnicas do VTK Software: Mais de 700 classes C++ . Mais de 350,000 linhas de código C++ (110,000 linhas executáveis). Arquitectura orientada para objectos (baseada na proposta no livro Object-Oriented Modelling and Design de Rumbaugh et al da Prentice-Hall). Mais de 215,000 linhas geradas automaticamente para a interface Tcl (e também para Python e Java). ... J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 16 8 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Software: ... Documentação in-line (no código e em páginas do manual em html ou compiladas - MS Windows). Código C++ fácil de entender. Desenhado para ser expandido. Inclusão de vários exemplos: aplicações, casos de teste e vários conjuntos de dados. Suporta multithreading e memória distribuída para algoritmos paralelos. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 17 Características técnicas do VTK Interacção e GUI Integração pacifica com uma vasta variedade de sistemas windows incluindo: Qt, FLTK, wxWindows, Tcl/Tk, Python/Tk, Java, X11, Motif, Windows, Cocoa e CARBON. Suporta uma grande variedade de estilos de interacção, incluindo os modos trackball e joystick para as câmaras e para os actores. Os estilos de interacção podem ser configurados e novos estilos podem ser facilmente adicionados. ... J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 18 9 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Interacção e GUI ... Implementa um mecanismo de gestão de eventos de comando/observação. Os objectos podem interrogar outros objectos por um evento particular e evocar rechamadas quando apropriadas. Os eventos podem ter prioridades associadas e ser abortados. As classes do VTK definem uma vasta gama de eventos evocados através do sistema. Inclui um conjunto extenso de objectos 3D predefinidos, incluindo: ponto, linha, plano, plano implícito, caixa, esfera, cone, barra escalar, plano de imagem, e spline. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 19 Características técnicas do VTK Computação Gráfica 3D Renderização de superfícies. Renderização de volumes (suporta textura e combinação de superfícies opacas com volumes). Primitivas de renderização: pontos, linhas, polígonos, faixas de triângulos, volumes. Renderização interactiva. ... J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 20 10 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Computação Gráfica 3D ... Propriedades: cor ambiente, cor difusa, cor especular, cor das luzes e dos objectos, transparência, mapeamento de textura, sombreado - flat/Gouraud, luz anterior. Luzes: infinitas, pontuais. Câmaras: projecção paralela e perspectiva, controlo do azimute, do zoom e da elevação, reset. Criação automática de câmaras e de luzes. ... J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 21 Características técnicas do VTK Computação Gráfica 3D ... A programação é independente do tipo do renderizador (definido automaticamente em função da plataforma computacional). Modelo Gráfico: luzes iluminam a cena, câmaras definem o ponto de vista e o nível de zoom, actores definem a geometria e as propriedades – “semelhante a Hollywood”. ... J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 22 11 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Computação Gráfica 3D ... Modelo Gráfico: ... possibilidade de geração automática ou manual do nível de detalhe dos actores, de forma a suportar renderização interactiva mesmo com grandes modelos; possibilidade de criação de grupos de actores; os mapeadores (Mappers), fazem a ligação da geometria com o pipeline de visualização; os renderizadores, coordenam as luzes, as câmaras e os actores de forma a criar imagens; volumes, são um tipo particular de actores, com propriedades especiais. Outras características: janelas e pontos de vista múltiplos; gravação de imagens em vários formatos (incluindo png, jpeg, tiff, bmp e ppm). J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 23 Características técnicas do VTK Visualização Tipos de dados: poligonais (pontos, linhas, polígonos, faixas de triângulos), imagens e volumes (conjuntos de pontos estruturados), grelhas estruturadas, grelhas não estruturadas, pontos não estruturados, grelhas rectangulares. Tipos de células (2D/3D): vértice, polivértice, triângulo, faixa de triângulos, pixel, quadrilátero, polígono, tetraedro, voxel, hexaedro, cunha, pirâmide. ... J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 24 12 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Visualização ... Tipos de atributos: escalares, vectores, tensores (3x3), normais, coordenadas de textura. Algoritmos escalares: mapeamento colorido, isocontorno, binarização, geração de escalares a partir de outros dados. ... J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 25 Características técnicas do VTK Visualização ... Alguns algoritmos vectoriais incluídos: hedgehogs, streamlines, dashed streamlines, stream points, stream surfaces, streampolygon, displacement plots/warping. Alguns algoritmos tensoriais incluídos: tensor ellipsoids, tensor glyphs, hyper-streamlines. ... J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 26 13 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Visualização ... Visualização de informação (coordenadas paralelas, redução dimensional, etiquetas programáveis). Algoritmos de modelamento incluídos: esferas, cones, cilindros, cubos, linhas, planos, ..., eixos, cursores, texto, modelamento implícito, decimização, binarização, operações booleanas, etiquetas, corte, geração das normais, conectividade, geração de faixas de triângulos, extrusão linear e de rotação, varrimento de superfícies e de volumes, ... J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 27 Características técnicas do VTK Visualização ... visualização de pontos não estruturados, acrescentar, fundir e filtrar dados, triangulação 2D/3D de Delaunay, suavização de malhas, reconstrução de superfícies. Importação e exportação de dados em vários formatos: stereo-lithography, MOVIE.BYU, Cyberware, Inventor, 3D Studio, PLOT3D, PNM, RIB, SLC, TIFF , VRML, Wavefront. Visualização de anotações: texto 2D/3D, barras escalares, gráficos x-y. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 28 14 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Imagem Pode ser utilizado com grandes volumes de dados. A maior parte dos filtros são de implementação paralela (transparente ao utilizador). Integração total com o pipeline gráfico. Tipos de filtros de imagem incluídos: difusão, Butterworth, dilatação, erosão, esquelitização, convolução, diferença, aritmético, magnitude, divergência, gradiente, média, distância, FFT, Fourier, Gaussian, Sobel, histograma, binarização, permutação, conversão. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 29 Características técnicas do VTK Vantagens Gratuito; Facilmente criam-se aplicações gráficas, de processamento de imagem ou de visualização; Código fonte C++ disponibilizado; Facilmente derivam-se novas classes; Possibilidade de prototipagem ou desenvolvimento de aplicações utilizando linguagens interpretativas (Tcl, Python, e Java); ... J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 30 15 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Características técnicas do VTK Vantagens ... Interfaces podem ser criadas rapidamente com bibliotecas adequadas para o desenvolvimento de interfaces, por exemplo, Tk ou Java; Biblioteca de renderização independente da plataforma (MS Windows, Unix, Mac); Vários algoritmos úteis e avançados incluídos; Sistema integrado de software; Permite a conversão de dados em imagens; ... J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 31 Características técnicas do VTK Vantagens ... Filosofia orientada para objectos; Fortemente testado em aplicações reais; Elevado suporte disponível; Suporte comercial existente. Desvantagens Um motor gráfico não “super rápido”; Código C++; Pesado, é preciso um sistema “decente” para o utilizar com eficácia. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 32 16 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplos de aplicação do VTK Área Financeira Simulação Modelamento Área Médica CT / MRI / Ultrasound J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 33 Exemplos de aplicação do VTK Visualização Médica Visualização de fluxo J. Tavares / J. Barbosa MMCCE - 2004/2005 C.F.D G.I.S Visualização Tensorial Renderização de volumes Visualização Cientifíca - Introdução ao VTK 34 17 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplos de aplicação do VTK Imagem Médica Modelamento J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 35 Exemplos de aplicação do VTK Mapeamento Geofísico Visualização do fluxo de componentes J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 36 18 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplos de aplicação do VTK Renderização de volumes Software Dados Hardware J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 37 Exemplos de aplicação do VTK Extracção de Iso-superfícies J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 38 19 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplos de aplicação do VTK Visualização de campos vectoriais J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 39 Exemplos de aplicação do VTK (algoritmos) Sample F(x,y,z) Point Array Surface countour Extract Plane Line Contour Renderer Superfícies de contorno J. Tavares / J. Barbosa MMCCE - 2004/2005 Planos extraídos Linhas de contorno Visualização Cientifíca - Introdução ao VTK 40 20 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplos de aplicação do VTK (algoritmos) CT Scan de uma cabeça humana Filtros/classes vtk: vtkContourFilter e vtkCutter J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 41 Exemplos de aplicação do VTK (algoritmos) Energia e densidade de fluxo numa câmara de combustão Filtros/classes vtk: vtkProbeFilter e vtkContourFilter J. Tavares / J. Barbosa MMCCE - 2004/2005 Filtros/classes vtk: vtkCutter e vtkWarpVectors Visualização Cientifíca - Introdução ao VTK 42 21 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplos de aplicação do VTK (algoritmos) Fluxo do sangue numa artéria Filtros/classe vtk: vtkHedgeHog J. Tavares / J. Barbosa Filtros/classes vtk: vtkContourFilter, vtkStreamLines e vtkTubeFilter Visualização Cientifíca - Introdução ao VTK 43 Exemplos de aplicação do VTK (algoritmos) Escoamento em torno de um elemento Filtros/classes vtk: vtkStreamLines, vtkTubeFilter, vtkDataSetMapper e vtkCutter J. Tavares / J. Barbosa MMCCE - 2004/2005 Modelo CAD de um motor Filtros/classes vtk: vtkPolyDataMapper e vtkTextureThreshold Visualização Cientifíca - Introdução ao VTK 44 22 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Arquitectura do sistema VTK O VTK é composto por um núcleo (core) compilado (escrito em linguagem C++) com as devidas interfaces para várias linguagens interpretadas. Interpreted Wrapper (Tcl, Java, Python) •Tcl/Tk shell •Interpretador Java •Interpretador Python •Fonte Tcl/Tk •Java JDK •Fonte Python Núcleo C++ Bibliotecas e includes Código fonte de todas (ficheiros dll, bin e .h) as classes (pode levar horas a compilar) ou (ficheiros .a e .h) Interpreter C++ core Instalação Binária: para utilizar as classes no desenvolvimento de uma aplicação J. Tavares / J. Barbosa Instalação do código fonte: para estender o VTK Visualização Cientifíca - Introdução ao VTK 45 Modelos do VTK Modelo Gráfico - criação da cena; Modelo de Visualização - transformação da informação em dados gráficos. Objectos Gráficos: Renderização (rendering); Objectos de Visualização: Geração da Geometria. Sistema do fluxo de dados: pipeline de execução Dados (fonte) J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Gráficos Visualização Cientifíca - Introdução ao VTK 46 23 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelos do VTK Modelo de Visualização Source (Procedural) Dados Modelo Gráfico Criação de novos dados Leitura Source (Reader) Processamento Representação Mapper Transformação dos dados em primitivas gráficas Filter Mapper (Writer) Escrita Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 47 Modelos do VTK Exemplo: amostragem f(x,y,z) Transformação (visualização) Representação computacional J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK Representação gráfica (renderização) 48 24 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo de visualização do VTK Objectivos: Transformar os dados em primitivas gráficas; Construir a representação geométrica dos objectos a representar. Baseado numa filosofia de pipeline A transformação dos dados é decomposta em módulos; Cada módulo realiza uma operação precisa sobre os dados (transformação); Os módulos são ligados entre si de forma a formarem uma saída do pipeline; Os dados fluem no interior do pipeline, passando de um módulo para outro. Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 49 Modelo de visualização do VTK Dois tipos de objectos: Objectos data (dados) Dados que fluem no interior do pipeline; Designados por datasets (conjuntos de dados). Objectos process (processos) Módulos ou composições algorítmicas do pipeline. Process A entrada Process B Process C saída dataset A J. Tavares / J. Barbosa MMCCE - 2004/2005 dataset B Visualização Cientifíca - Introdução ao VTK 50 25 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo de visualização do VTK Objecto Process Objectos process Source Filter Início do pipeline •Leitura de dados externos; •Geração de novos dados. Processamento dos objectos dados •Recebe uma ou mais entradas; •Gera uma ou mais saídas. nenhuma entrada Source Mapper Fim do pipeline •Gerar primitivas gráficas; •Comunicação com o modulo gráfico. ≥ 1 entrada ≥ 1 entrada Filter ≥ 1 saída Mapper ≥ 1 saída nenhuma saída Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 51 Modelo de visualização do VTK Fonte Filtro Objecto data Objecto data Exemplo Mapeador Fonte Filtro Filtro Objecto data Objecto data Objecto data J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK Modelo gráfico 52 26 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo de visualização do VTK Exemplo (Tcl) vtkSphereSource sphere sphere SetRadius 5 sphere SetThetaResolution 36 sphere SetPhiResolution 18 Source - Fonte vtkPolyDataMapper isoMapper isoMapper SetInput [sphere GetOutput] isoMapper ScalarVisibilityOn Mapper - Mapeador vtkActor isoActor isoActor SetMapper isoMapper eval [isoActor GetProperty] SetColor 0.2 0.63 0.79 Actor vtkRenderer ren1 ren1 AddActor isoActor ren1 SetBackground 1 1 1 Renderer vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize 500 500 Render Window vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 53 Modelo de visualização do VTK Objectos data ou dataset objecto data ou dataset Um dataset (conjunto de dados) é constituído por: Estrutura topológica (lista de células) Estrutura geométrica (lista de pontos) Instância da estrutura topológica; Coordenadas dos pontos que constituem as células (vértices). Atributos J. Tavares / J. Barbosa MMCCE - 2004/2005 Determina a forma do objecto (triangular, esférica, de malha, etc.); Invariável a certas transformações geométricas (translação, rotação e escalamento); Um objecto é composto por uma ou mais células. Informação complementar associada aos pontos e às células (ex. temperatura num ponto, massa de uma células, etc.) Visualização Cientifíca - Introdução ao VTK 54 27 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo de imagem do VTK Pipeline de imagem – um caso especial do pipeline de visualização; Desenhado apenas para suportar dados do tipo vtkStructuredPoints (pontos estruturados); Um conjunto de pontos estruturados são dados distribuídos regularmente num array alinhado com o sistema de eixos; Conjunto de pontos 2D – imagens, mapas de pixéis (pixmaps) e mapas de bits (bitmaps); Conjunto de pontos 3D – volumes (uma pilha “stack” de imagens 2D - slices); Os filtros envolvidos têm sempre à entrada e à saída conjuntos de pontos estruturados; Devido à natureza regular dos dados: Os dados podem ser “divididos em parcelas rectangulares”; O pipeline de imagem pode ser multithreaded. Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 55 Pipeline de execução do VTK Direcção do método Update() Render Modelo de Visualização Source Filter Modelo Gráfico Mapper Actor Direcção do fluxo de dados (geração dos dados através do método ExecuteData()) J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 56 28 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Objectivo Transformar dados gráficos em imagens e representar no ecrã. Reagrupa as características de um sistema gráfico 3D. Principais classes do modelo gráfico do VTK: Render Window Renderer Light Camera Actor Property Transform Mapper J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 57 Modelo gráfico do VTK O objectivo é renderizar a geometria (volume) no ecrã. Ecrã Câmara Actor J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK Luz 58 29 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK O objectivo é renderizar a geometria (volume) no ecrã. Classes VTK vtkCamera vtkActor vtkRenderWindow vtkRenderer vtkRenderWindowInteractor J. Tavares / J. Barbosa vtkLight •vtkProperty •vtkMapper •vtkTransform Visualização Cientifíca - Introdução ao VTK 59 Modelo gráfico do VTK Exemplo 2 vtkRenderer 1 vtkRenderWindow vtkCamera vtkLight vtkActor (property, geometry (mapper), transformation, etc.) J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 60 30 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Exemplo Render Window Renderer : Camera Light Actor : Property Transform Mapper Viewport J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 61 Modelo gráfico do VTK Render Windows Gere a(s) janela(s) na qual serão representados as imagens ou os objectos gráficos; Assegura as funcionalidades por defeito de uma janela windows; Independente dos dispositivos gráficos (hardware); Gere o agrupamento dos renders contidos na janela: Vários renders podem ser agrupados numa mesma janela (render window) de forma a criar uma cena (imagem final). J. Tavares / J. Barbosa MMCCE - 2004/2005 Renderer Visualização Cientifíca - Introdução ao VTK 62 31 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Classe vtkRenderWindow Métodos: Adicionar / remover um renderer: AddRenderer (vtkRenderer) RemoveRenderer (vtkRenderer) Configuração do ecrã: FullScreenOn () / FullScreenOff () BordersOn () / BordersOff () J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 63 Modelo gráfico do VTK Renderer Coordena a(s) fonte(s) de luz, a câmara e os actores de forma a gerar a imagem de uma cena. Um cena é composta: Pelo menos por um actor, uma câmara e uma fonte de luz; Se os objectos câmara e luz não são definidos, então são criados automaticamente pelo renderer. Luz: representa e Actor: o objecto visível manipula a iluminação da cena Câmara: determina a (em 3D) projecção da geometria 3D numa imagem 2D J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 64 32 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Classe vtkRenderer Métodos Adicionar / remover actores e luzes: AddActor (vtkActor) / RemoveActor (vtkActor) AddLight (vtkLight) / RemoveLight (vtkLight) Determinar Criar as imagens resultantes da renderização: Render Conversão a câmara a utilizar na renderização: SetActiveCamera (vtkCamera) de coordenadas: ViewToWorld (float, float, float) / WorldToView (float, float, float) y y Mundo Vista x J. Tavares / J. Barbosa z x Visualização Cientifíca - Introdução ao VTK 65 Modelo gráfico do VTK Classe vtkLight Métodos Definir / obter a cor da iluminação: SetColor (float , float , float) / GetColor () Definir / obter a posição da fonte de luz: SetPosition (float , float , float ) / GetPosition () Definir / obter a intensidade (de 0 a 1): SetIntensity (float ) / GetIntensity () Ligar / Desligar uma fonte de luz: SwitchOn () / SwitchOff () J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 66 33 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Classe vtkCamera Métodos Definir / obter a posição da câmara em coordenadas mundo: Definir / obter a posição do ponto focal da câmara: SetPosition (float ,float ,float ) / GetPosition () SetFocalPoint (float ,float ,float ) / GetFocalPoint () Calcular a distância entre a posição da câmara e o seu ponto Plano posterior focal: de clipping ComputeDistance () Ponto focal Direcção de projecção Posição Plano anterior de clipping J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 67 Modelo gráfico do VTK Actor Actor O objecto representado por um renderer numa cena. Um actor não representa directamente a sua geometria nem a sua aparência. Tais características são definidas utilizando os objectos: Property Mapper Transform J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 68 34 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Classe vtkActor Métodos Associar / obter o objecto property que determina as propriedades de aparência do actor: SetProperty (vtkProperty) / GetProperty () Por defeito um objecto property é criado; Vários actores podem partilhar o mesmo objecto property. Associar / obter o objecto mapper que determina a geometria do actor: Definir a matriz de transformação que determina a escala, a posição e a orientação do actor: SetMapper (vtkMapper) / GetMapper () SetUserMatrix (vtkMatrix4x4 *) J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 69 Modelo gráfico do VTK Classe vtkActor Geralmente, as propriedades e as transformações não são definidas explicitamente. Os seus valores são determinados durante a criação do actor. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 70 35 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Property Determina a aparência da superfície do actor. Classe VTK : vtkProperty. Métodos Tipo de representação da geometria da superfície: SetRepresentationToPoints () SetRepresentationToWireframe () SetRepresentationToSurface () Definição da cor da superfície: SetColor (float , float , float ) Definir a transparência da superfície (0 - transparente, 1.0 - opaca): SetOpacity (float ) J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 71 Modelo gráfico do VTK Mapper Liga o modelo de visualização e o modelo gráfico. Determina a geometria do actor. Combinação de pontos (nodos), linhas, polígonos, etc. Definição da cor dos nodos (vértices). Faz referência a uma palete de cores. Todos os actores devem ter um objecto mapper associado de forma a serem representados no ecrã. Classes VTK : vtkMapper, vtkPolyDataMapper, vtkDataSetMapper. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 72 36 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Classe vtkPolyDataMapper Métodos Especificar os dados de entrada para o mapper (nodos): SetInput (vtkPolyData) Associar uma palete de cores: SetLookupTable (vtkLookupTable) Criar uma palete de cores por defeito: CreateDefaultLookupTable () Determinar se a renderização é de maneira imediata ou não: ImmediateModeRenderingOn () ImmediateModeRenderingOff () (Usada para estruturas poligonais.) J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 73 Modelo gráfico do VTK Classe Transform Guarda uma pilha de matrizes de transformação; Apenas uma matriz de transformação activa (corrente); Disponibiliza métodos para efectuar as operações de translação, escalamento e rotação. Translação J. Tavares / J. Barbosa MMCCE - 2004/2005 Escalamento Visualização Cientifíca - Introdução ao VTK Rotação 74 37 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Modelo gráfico do VTK Classe Transform Translação ⎡ x' ⎤ ⎡1 ⎢ y' ⎥ ⎢0 ⎢ ⎥=⎢ ⎢ z' ⎥ ⎢0 ⎢ ⎥ ⎢ ⎣w'⎦ ⎣0 0 0 tx⎤ ⎡ x ⎤ 1 0 ty⎥ ⎢ y⎥ ⎥•⎢ ⎥ 0 1 tz ⎥ ⎢ z ⎥ ⎥ ⎢ ⎥ 0 0 1 ⎦ ⎣ 1⎦ Rotação Escalamento ⎡sx 0 0 0⎤ ⎢ 0 sy 0 0⎥ ⎥ Ts = ⎢ ⎢ 0 0 sz 0⎥ ⎢ ⎥ ⎣ 0 0 0 1⎦ Translação (tx,ty,tz) ⎡1 0 0 ⎢ 0 cosθ − sinθ TRx = ⎢ ⎢0 sinθ cosθ ⎢ 0 ⎣0 0 Escalamento (sx,sy,sz) Rotação θ em torno de x Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 0⎤ ⎥ 0⎥ 0⎥ ⎥ 1⎦ 75 Modelo gráfico do VTK Classe vtkTransform Métodos Criar uma matriz identidade: Criar uma matriz rotação e combina-la com a matriz de transformação corrente: Escalar a matriz de transformação corrente: Transladar a matriz de transformação corrente: RotateX (float), RotateY (float ), RotateZ (float ) Scale (float , float , float ) Translate (float , float , float ) Transpor matriz de transformação corrente: Inverter a matriz de transformação corrente: J. Tavares / J. Barbosa MMCCE - 2004/2005 Identity () Transpose () Inverse () Visualização Cientifíca - Introdução ao VTK 76 38 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Pipeline de visualização do VTK O VTK utiliza o modelo funcional de um pipeline de visualização para transformar dados em imagens ou em geometria (ecrã/ficheiros). Source Objects Filter Objects Mapper Objects O pipeline é composto por: •Source Objects: interface para dados externos, ou dados devidamente gerados (ex. vtkPLOT3DReader) •Filter Objects: operam nos dados dos Source objects e geram a geometria e/ou as imagens (ex. vtkContourFilter) •Mapper Objects: transformam e processam os dados resultantes de um Filter Object de forma a serem representados no ecrã ou escritos num ficheiro (ex. vtkPolyDataMapper) J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 77 Pipeline de visualização do VTK Conexões Os elementos do pipeline de visualização são conectados em C++ com os comandos: Filter->SetInput(Source->GetOutput()); Define a saída de uma fonte como entrada de um filtro. Em tcl: Filter SetInput [Source GetOutput] J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 78 39 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Pipeline de visualização do VTK PseudoPrograma Exemplo Main() { Window create a window; create a renderer; give the renderer to the window; create procedural geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; } give the actor to the renderer; window->render(); J. Tavares / J. Barbosa Renderer Actor Mapper Geometry Visualização Cientifíca - Introdução ao VTK 79 Pipeline de visualização do VTK Exemplo de pipeline Mace.tcl vtkSphereSource vtkConeSource vtkGlyph3D vtkPolyDataMapper vtkPolyDataMapper (2 actores) J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 80 40 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Pipeline de visualização do VTK File Output Sources Filters Mappers Props vtkDataSet vtkDataSet (continua...) Uma source/filter pode ser ligada a mais do que um filter/mapper. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 81 Pipeline de visualização do VTK (...continuação) Props Props Renderer Render Window Props (ex. Actor/Volume) vtkProperty J. Tavares / J. Barbosa MMCCE - 2004/2005 vtkCamera, vtkRenderWindowInteractor vtkLight (São criados por defeito) Visualização Cientifíca - Introdução ao VTK 82 41 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Pipeline de visualização do VTK Exemplo: Criação de uma isosuperfície de uma proteína C++ Tcl //Create the RenderWindow and Renderer vtkRenderer *ren = vtkRenderer::New(); #Create the RenderWindow, Renderer vtkRenderer ren vtkRenderWindow *renWin = vtkRenderWindow::New(); vtkRenderWindow renWin renWin->AddRenderer(ren); renWin AddRenderer ren //Read in the Data vtkStructuredPointsReader *reader = vtkStructuredPointsReader::New(); # Read in the Data vtkStructuredPointsReader reader reader->SetFileName(“ironProt.vtk”); reader SetFileName “ironProt.vtk” J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 83 Pipeline de visualização do VTK ...Exemplo: Criação de uma isosuperfície de uma proteína C++ Tcl //Setup the pipeline vtkContourFilter *iso = vtkContourFilter::New(); # Setup the pipeline vtkContourFilter iso iso->SetInput(reader->GetOutput()); iso->SetValue(0, 128.0f); iso SetInput [reader GetOutput] iso SetValue 0 128 vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New(); vtkPolyDataMapper isoMapper isoMapper->SetInput(iso->GetOutput()); isoMapper->ScalarVisibilityOff(); isoMapper SetInput [iso GetOutput] isoMapper ScalarVisibilityOff J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 84 42 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Pipeline de visualização do VTK ...Exemplo: Criação de uma isosuperfície de uma proteína C++ Tcl //Terminate the pipeline vtkActor *isoActor = vtkActor::New(); # Terminate the pipeline vtkActor isoActor isoActor->SetMapper(isoMapper); isoActor SetMapper isoMapper //Set the color of the Actor vtkProperty *prop = isoActor->GetProperty(); prop->SetColor(1, 0, 0); # Set the color of the Actor vtkProperty prop //Add the Actor to the renderer ren->AddActor(isoActor); //Render the image renWin->Render(); J. Tavares / J. Barbosa set prop [isoActor GetProperty] prop SetColor 1 0 0 # Add the Actor the the renderer ren AddActor isoActor # Render the image renWin Render Visualização Cientifíca - Introdução ao VTK 85 Pipeline de visualização do VTK ... Exemplo: Criação de uma isosuperfície de uma proteína Imagem resultante J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 86 43 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Pipeline de visualização do VTK Exemplo (C++) // creating a rendering environment… vtkRenderer * renderer = vtkRenderer::New(); vtkRenderWindow * renderWindow = vtkRenderWindow::New(); renderWindow->AddRenderer(renderer); // creating an object ( source, mapper, actor )… vtkConeSource * cone = vtkConeSource::New(); vtkPolyDataMapper * coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInput(cone->GetOutput()); vtkActor * coneActor = vtkActor::New(); coneActor->SetMapper(coneMapper); // assign the object to the rendering environment, // and render the scene… renderer->AddActor(coneActor); renderWindow->Render(); J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 87 Pipeline de visualização do VTK Exemplo (aplicação de um filtro - C++) // creating a sphere object… vtkSphereSource * sphere = vtkSphereSource::New(); // and a filter to apply to the sphere… vtkElevationFilter * elevationFilter = vtkElevationFilter::New(); elevationFilter->SetInput((vtkDataSet *) sphere->GetOutput()); elevationFilter->SetLowPoint(0,0,-1); elevationFilter->SetHighPoint(0,0,1); // assign the filter to a mapper… vtkDataSetMapper * mapper = vtkDataSetMapper::New(); mapper->SetInput(elevationFilter->GetOutput()); // create an actor… vtkActor * actor = vtkActor::New(); Actor->SetMapper(mapper); J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 88 44 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Pipeline de visualização do VTK Interacção com o utilizador A classe vtkRenderWindowInteractor permite que o utilizador interaja com os objectos gráficos; por exemplo: Teclas pressionadas: w: modo wireframe; s: modo surface; r: reset da transformação; 3: comutar para modo stereo; c/o: modo câmera ou modo objecto; j/t: modo joystick ou modo trackball; e: sair da aplicação. Botões do rato: botão 3 (dir.): zoom; botão 2: pan; botão 1 (esq.): rotate. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 89 Pipeline de visualização do VTK Interacção com o utilizador exemplo (C++): vtkRenderWindowInteractor * interactor = vtkRenderWindowInteractor::New(); vtkRenderWindow * renderWindow = vtkRenderWindow::New(); vtkRenderer * renderer = vtkRenderer::New(); // creating an actor, and add it to the renderer… renderer->AddActor(actor); renderWindow->Render(); interactor->SetRenderWindow(renderWindow); interactor->Start(); J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 90 45 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplo (Tcl): Pipeline de visualização do VTK vtkSphereSource sphere sphere SetRadius 5 sphere SetThetaResolution 36 sphere SetPhiResolution 18 Source vtkPolyDataMapper isoMapper isoMapper SetInput [sphere GetOutput] isoMapper ScalarVisibilityOn Mapper vtkActor isoActor isoActor SetMapper isoMapper eval [isoActor GetProperty] SetColor 0 0 0.8 Actor vtkRenderer ren1 ren1 AddActor isoActor ren1 SetBackground 1 1 1 Renderer vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize 500 500 Render Window vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 91 Dados suportados no VTK: Células Átomos que constituem um conjunto de dados; Uma célula é uma organização topológica de pontos (coordenadas x, y, z); Definidas por: Tipo; Lista ordenada de pontos. J. Tavares / J. Barbosa MMCCE - 2004/2005 6 3 7 Tetraedro 4 3 1 2 0 5 0 2 Hexaedro 1 Objecto Malha = lista de triângulos Célula Triângulo = lista de pontos Visualização Cientifíca - Introdução ao VTK 92 46 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Tipos de células Vertex Pixel Polyvertex Polygon Line Tetrahedron Polyline Hexahedron Triangle Voxel Triangle Strip Quadrilateral J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 93 Dados suportados no VTK: Tipos de células Classe vtkCell definida no VTK 4.2 J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 94 47 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Conjuntos de dados Pontos estruturados (Structured Points) Grelha rectangular (Rectilinear Grid) Pontos não estruturados (Unstructured Points) Grelha estruturada (Structured Grid) Dados poligonais (Polygonal Data) Grelha não estruturada (Unstructured Grid) J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 95 Dados suportados no VTK: Conjuntos de dados Pontos estruturados vtkStructuredPoints Imagens 2D e 3D Grelha rectangular vtkRectilinearGrid Malha rectangular Grelha estruturada vtkStructuredGrid Malha 2D Dados poligonais vtkPolyData Pontos, linhas, polígonos Grelha não estruturada vtkUnstructuredGrid Malhas 2D/3D não estruturadas (classes vtk para conjuntos de dados e exemplos de utilização) J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 96 48 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Conjuntos de dados Classe vtkDataSet definida no VTK 4.2 J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 97 Dados suportados no VTK: Conjuntos de dados Structured Points (pontos estruturados) O formato mais regular para grelhas; O tipo de dado mais compacto – a geometria do conjunto de dados é definida com um reduzido número de linhas de pequeno comprimento; Ideal para imagens 1D, 2D e 3D envolvendo pixels e voxels (por exemplo de CTscans e outros dados amostrados de forma regular). J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 98 49 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Conjuntos de dados Rectilinear Grid (grelha rectangular) Topologia regular, geometria semiregular alinhada com os eixos de coordenadas x-y-z; Geometria especificada por 3 listas (x, y, z) de coordenadas com valor crescente. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 99 Dados suportados no VTK: Conjuntos de dados Structured Grid (grelha estruturada) Topologia regular, geometria irregular (por exemplo, uma “grelha curvilínea”); A lista dos pontos que definem o domínio dos dados é ordenada por coluna. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 100 50 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Conjuntos de dados Polygonal Data (dados poligonais) Combinações arbitrárias de primitivas gráficas de superfície; Uma lista de pontos seguida por uma ou mais listas descrevendo a geometria: colecções de vértices, linhas, polígonos ou faixas de triângulos; Este tipo de dados é derivado frequentemente das várias operações do visualização (como por exemplo, determinação de contornos). J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 101 Dados suportados no VTK: Conjuntos de dados Unstructured Grid (grelha não estruturada) Topologia irregular e geometria irregular; É necessária a lista dos vértices no domínio dos dados, assim como a lista das células devidamente indexadas na lista dos vértices de cada célula. Uma lista do tipo das células também é necessária. J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 102 51 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Exemplos de malhas As células podem ter diferentes formas e tamanhos: 2D : triângulos, quadriláteros, ... 3D : tetraedros, hexaedros, pirâmides, … As malhas podem conter um ou mais tipo de células. Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa 103 Dados suportados no VTK: Tipos de atributos associados aos pontos e às células Escalar s Vector Valor simples Norma e (u,v,w) direcção (3D) 2D: (u,v) 3D: (u,v,w) Correspondência entre um índice e uma tabela de s texturas Tabela de dados Array 0 J. Tavares / J. Barbosa MMCCE - 2004/2005 Direcção (3D) (nx,ny,nz) |n| = 1 Tensor Coordenadas de textura t Normal Array 1 ... a11 a12 a13 a21 a22 a23 a31 a32 a33 Array n-1 Visualização Cientifíca - Introdução ao VTK Matriz (n x n) Tabela de arrays Cada array pode ser de tipo diferente 104 52 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Tipos de atributos associados aos pontos e às células Informação associada a cada vértice de uma célula: Escalares (scalars): por exemplo, temperatura, pressão, ...; Vectores (vector): por exemplo, velocidades, acelerações, ...; Normais (normals): vectores normais à superfície; Coordenadas de textura (texture coordinates): gráficos específicos; Tensores (tensors): matrizes. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 105 Dados suportados no VTK: Tipos de atributos associados aos pontos e às células Classes vtkFieldDataSet e vtkDataSetAtributes definidas no VTK 4.2 J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 106 53 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Dados suportados no VTK: Tipos de atributos associados aos pontos e às células Classe vtkDataArray definida no VTK 4.2 Utilizada para arrays de dados de determinado tipo. J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 107 Formato de ficheiros do VTK # vtk DataFile Version X.0 Header Cool data Title ASCI I BINARY Data Type DATASET type Geometry type is one of: STRUCTURED_POINTS STRUCTURED_GRID RECTILINEAR_GRID UNSTRUCTURED_GRID POLYDATA FIELD POINT_DATA n Dataset attributes … CELL_DATA n … (Ver o documento VTK File Format em http://www.vtk.org/pdf/file-formats.pdf) J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 108 54 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplo Formato de ficheiros do VTK # vtk DataFile Version 3.0 vtk output ASCII DATASET POLYDATA POINTS 119 float 197 192 53 196 186 53 201 188 51 161 192 55 168 192 45 165 197 39 ... POLYGONS 219 876 3012 3345 3678 ... POINT_DATA 119 SCALARS scalars float LOOKUP_TABLE default 53 53 51 55 45 39 71 69 76 61 68 58 40 62 37 40 65 36 ... J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 109 Exemplo Formato de ficheiros do VTK # vtk DataFile Version 3.0 vtk output ASCII DATASET POLYDATA POINTS 16 float 0.367063 0 0.333333 0.350198 0.040716 0.333333 0.259553 0.259553 0.333333 0.218837 0.276418 0.333333 -1.60449e-008 0.367063 0.333333 -0.040716 0.350198 0.333333 -0.259553 0.259553 0.333333 -0.276418 0.218837 0.333333 -0.367063 -3.20897e-008 0.333333 0.350198 -0.040716 0.333333 -0.259553 -0.259553 0.333333 -0.218837 -0.276418 0.333333 4.37719e-009 -0.367063 0.333333 0.040716 0.350198 0.333333 0.259553 -0.259553 0.333333 0.276418 -0.218837 0.333333 LINES 16 48 201 212 223 234 245 256 267 278 289 2 9 10 2 10 11 2 11 12 2 12 13 2 13 14 2 14 15 2 15 0 POINT_DATA 16 SCALARS scalars float LOOKUP_TABLE default 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 110 55 Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa Exemplo Formato de ficheiros do VTK # vtk DataFile Version 2.0 A Simple Matrix of values ASCII DATASET STRUCTURED_POINTS DIMENSIONS 10 5 1 ORIGIN 0 0 0 SPACING 1 1 1 POINT_DATA 50 SCALARS values float LOOKUP_TABLE default 0000000000 0110000000 0111000000 0011111000 0000000000 J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 111 Formato de ficheiros do VTK Exemplo # vtk DataFile Version 1.0 Line representation of vtk ASCII DATASET POLYDATA POINTS 12 float 0.0 2.0 0.0 1.0 0.0 0.0 2.0 2.0 0.0 3.0 0.0 0.0 3.0 3.0 0.0 2.5 2.0 0.0 3.5 2.0 0.0 4.0 0.0 0.0 4.0 3.0 0.0 5.0 2.0 0.0 4.0 1.0 0.0 5.0 0.0 0.0 LINES 5 17 3012 234 256 278 3 9 10 11 J. Tavares / J. Barbosa MMCCE - 2004/2005 Visualização Cientifíca - Introdução ao VTK 112 56