visualização científica – introdução ao vtktavares/ensino/visci/downloads/apontamentos... ·...
TRANSCRIPT
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 1
Visualização Científica –Introdução ao VTK
João Manuel R. S. TavaresJorge Gomes Barbosa
url: http://www.fe.up.pt/~tavares/ensino/VISCI/visci.html
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 2
Sumário
1. Bibliografia2. O que é o VTK3. Recursos sobre o VTK4. Obter o VTK5. Características técnicas do VTK6. Exemplos de aplicação do VTK7. Arquitectura do sistema VTK8. Modelo de visualização do VTK9. Modelo de imagem do VTK10. Pipeline de execução do VTK
11. Modelo gráfico do VTK12. Pipeline de visualização do
VTK13. Dados suportados no VTK:
Células14. Dados suportados no VTK:
Conjuntos de dados15. Dados suportados no VTK:
Tipos de atributos associados aos pontos e às células
16. Formato de ficheiros do VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 2
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 3
Bibliografia
The Visualization Toolkit (3rd Edition)Will Schroeder, Ken Martin, Bill LorensenISBN 1-930934-07-6Kitware, Inc. publishersVTK User’s Guide (VTK 4.2)Will Schroeder, Ken MartinISBN 1-930934-08-4Kitware, Inc publishersMastering CMake (CMake 1.8)Ken Martin, Bill HoffmanISBN 1-930934-09-2Kitware, 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 4
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 dabiblioteca têm sido fortemente influenciadospelos princípios do desenvolvimento /programação orientado para objectos.
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 3
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 5
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 emC++, Tcl, Java, ou Python.
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 6
Biblioteca de classes C++
(compilada)
Interface para as linguagens interpretadas: Tcl/Tk, Java,
Python
Nível de aplicação (C++,Tcl/Tk, ...)
VTK
Biblioteca Gráfica (openGL)
Sistema Orientado para Objectos
O que é o VTK?
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 4
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 7
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 8
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.
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 5
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 9
Recursos sobre o VTK
LivrosThe Visualization Toolkit, An Object-OrientedApproach to 3D Graphics (Third Edition)Will Schroeder, Ken Martin and Bill LorensenKitware, 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 10
Página web oficialhttp://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.
Recursos sobre o VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 6
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 11
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).
Recursos sobre o VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 12
Sistema de ajuda, distribuído em conjunto com o código fonte, em html.
Recursos sobre o VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 7
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 13
Sistema de ajuda, distribuído em conjunto com o código fonte, compilado (MS Windows).
Recursos sobre o VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 14
A partir dos CD’s que acompanham os livros da Kitware sobre o VTK;Fazendo o download:
http://public.kitware.com/VTK/get-software.phpftp://public.kitware.com/pub/vtkhttp://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)
Obter o VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 8
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 15
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 VTK-XX-LatestRelease.zip)Descarregar o CMake: CMSetupXXX.exeExecutar o CMake e configurar o projecto VTKExtrair, e compilar o projecto (compilador necessário, por exemplo o Microsoft VC++ 6.0)
Obter o VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 16
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 andDesign 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)....
Características técnicas do VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 9
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 17
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.
Características técnicas do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 18
Características técnicas do VTK
Interacção e GUIIntegraçã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 joystickpara as câmaras e para os actores. Os estilos de interacção podem ser configurados e novos estilos podem ser facilmente adicionados....
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 10
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 19
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, planoimplícito, caixa, esfera, cone, barra escalar, plano de imagem, e spline.
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 20
Características técnicas do VTK
Computação Gráfica 3DRenderizaçã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....
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 11
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 21
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 22
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”. ...
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 12
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 23
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 24
Características técnicas do VTK
VisualizaçãoTipos 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....
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 13
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 25
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 26
Características técnicas do VTK
Visualização...Alguns algoritmos vectoriais incluídos: hedgehogs, streamlines, dashed streamlines, stream points, stream surfaces, streampolygon, displacementplots/warping.Alguns algoritmos tensoriais incluídos: tensor ellipsoids, tensor glyphs, hyper-streamlines....
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 14
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 27
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 28
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.
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 15
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 29
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 30
Características técnicas do VTK
VantagensGratuito;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);...
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 16
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 31
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 32
Características técnicas do VTK
Vantagens...Filosofia orientada para objectos;Fortemente testado em aplicações reais;Elevado suporte disponível;Suporte comercial existente.
DesvantagensUm motor gráfico não “super rápido”;Código C++;Pesado, é preciso um sistema “decente” para o utilizar com eficácia.
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 17
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 33
Simulação
Área MédicaCT / MRI / Ultrasound
Área Financeira
Modelamento
Exemplos de aplicação do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 34
Visualização Médica G.I.SC.F.D
Visualização de fluxo Visualização Tensorial Renderização de volumes
Exemplos de aplicação do VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 18
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 35
Exemplos de aplicação do VTK
Modelamento
Imagem Médica
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 36
Exemplos de aplicação do VTK
Mapeamento Geofísico
Visualização do fluxo de componentes
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 19
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 37
Software
HardwareDados
Renderização de volumes
Exemplos de aplicação do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 38
Exemplos de aplicação do VTK
Extracção de Iso-superfícies
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 20
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 39
Exemplos de aplicação do VTK
Visualização de campos vectoriais
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 40
Exemplos de aplicação do VTK (algoritmos)
Superfícies de contorno Planos extraídos Linhas de contorno
Sample F(x,y,z) Point Array
Extract Plane
Line ContourRenderer
Surfacecountour
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 21
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 41
Filtros/classes vtk: vtkContourFilter e vtkCutter
CT Scan de uma cabeça humana
Exemplos de aplicação do VTK (algoritmos)
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 42
Filtros/classes vtk:vtkProbeFilter e vtkContourFilter
Filtros/classes vtk:vtkCutter e vtkWarpVectors
Energia e densidade de fluxo numa câmara de combustão
Exemplos de aplicação do VTK (algoritmos)
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 22
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 43
Filtros/classe vtk: vtkHedgeHog Filtros/classes vtk: vtkContourFilter,vtkStreamLines e vtkTubeFilter
Fluxo do sangue numa artéria
Exemplos de aplicação do VTK (algoritmos)
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 44
Escoamento em torno de um elemento
Filtros/classes vtk: vtkStreamLines,vtkTubeFilter, vtkDataSetMapper
e vtkCutter
Modelo CAD de um motor
Filtros/classes vtk:vtkPolyDataMapper
e vtkTextureThreshold
Exemplos de aplicação do VTK (algoritmos)
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 23
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 45
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.
C++
core
Interpreter
Interpreted Wrapper (Tcl, Java, Python)
Núcleo C++
Instalação Binária: para utilizaras classes no desenvolvimentode uma aplicação
Instalação do código fonte: para estender o VTK
•Fonte Tcl/Tk•Java JDK•Fonte Python
Código fonte de todasas classes (pode levarhoras a compilar)
Bibliotecas e includes(ficheiros dll, bin e .h)ou(ficheiros .a e .h)
•Tcl/Tk shell•Interpretador Java•Interpretador Python
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 46
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.
Dados (fonte) Visualização Gráficos
Sistema do fluxo de dados: pipeline de execução
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 24
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 47
Modelos do VTK
Modelo de Visualização
Modelo GráficoDados
ProcessamentoSource(Reader)
Source(Procedural)
Filter
Mapper(Writer)
MapperLeitura
Criação denovos dados
Escrita
Transformação dos dados em
primitivas gráficas
Representação
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 48
Modelos do VTK
Exemplo:
f(x,y,z)
Representaçãocomputacional
Transformação(visualização)
amostragem
Representaçãográfica
(renderização)
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 25
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 49
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 pipelineA 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.
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 50
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
dataset A dataset B
Process B Process C
saída
entrada
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 26
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 51
Modelo de visualização do VTK
Objecto Process
Source
Início do pipeline•Leitura de dados externos;•Geração de novos dados.
Filter
Processamento dos objectos dados•Recebe uma ou mais entradas;•Gera uma ou mais saídas.
Mapper
Fim do pipeline•Gerar primitivas gráficas;•Comunicação com o modulo gráfico.
Source
nenhuma entrada
≥ 1 saída
Mapper
≥ 1 entrada
nenhuma saída
Objectos process
Filter
≥ 1 entrada
≥ 1 saída
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 52
Modelo de visualização do VTK
Fonte
Objectodata
Filtro
Objectodata
Fonte
Objectodata
Filtro
Objectodata
Filtro
Objectodata
Mapeador Modelo gráfico
Exemplo
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 27
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 53
Modelo de visualização do VTKExemplo (Tcl)
vtkSphereSource spheresphere SetRadius 5sphere SetThetaResolution 36sphere SetPhiResolution 18
vtkPolyDataMapper isoMapperisoMapper SetInput [sphere GetOutput]isoMapper ScalarVisibilityOn
vtkActor isoActorisoActor SetMapper isoMappereval [isoActor GetProperty] SetColor 0.2 0.63 0.79
vtkRenderer ren1ren1 AddActor isoActorren1 SetBackground 1 1 1
vtkRenderWindow renWinrenWin AddRenderer ren1renWin SetSize 500 500
vtkRenderWindowInteractor ireniren SetRenderWindow renWiniren Initialize
Source - Fonte
Mapper - Mapeador
Actor
Renderer
Render Window
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 54
Um dataset (conjunto de dados) é constituído por:Estrutura topológica (lista de células)
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.
Estrutura geométrica (lista de pontos)Instância da estrutura topológica;Coordenadas dos pontos que constituem as células (vértices).
AtributosInformação complementar associada aos pontos e às células (ex. temperatura num ponto, massa de uma células, etc.)
objecto dataou dataset
Objectos data ou dataset
Modelo de visualização do VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 28
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 55
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.
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 56
Pipeline de execução do VTK
Direcção do fluxo de dados(geração dos dados através do método ExecuteData())
Direcção do método Update()
Source Filter Mapper Actor
RenderModelo de Visualização Modelo Gráfico
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 29
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 57
Modelo gráfico do VTK
ObjectivoTransformar 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 WindowRenderer
LightCameraActor
PropertyTransformMapper
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 58
Modelo gráfico do VTK
O objectivo é renderizar a geometria (volume) no ecrã.
CâmaraLuzActor
Ecrã
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 30
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 59
Modelo gráfico do VTK
vtkRenderWindow
vtkCameravtkLightvtkActor
•vtkProperty•vtkMapper•vtkTransform
vtkRenderervtkRenderWindowInteractor
O objectivo é renderizar a geometria (volume) no ecrã.Classes VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 60
Modelo gráfico do VTK
1 vtkRenderWindow
vtkCamera2 vtkRenderer vtkLight
vtkActor(property, geometry (mapper), transformation, etc.)
Exemplo
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 31
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 61
Modelo gráfico do VTK
Render Window
Renderer :
Actor : PropertyTransformMapper
CameraLight
Viewport
Exemplo
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 62
Gere a(s) janela(s) na qual serãorepresentados as imagens ou osobjectos gráficos;Assegura as funcionalidades pordefeito 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).
Renderer
Modelo gráfico do VTK
Render Windows
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 32
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 63
Métodos:Adicionar / remover um renderer:
AddRenderer (vtkRenderer)RemoveRenderer (vtkRenderer)
Configuração do ecrã:FullScreenOn () / FullScreenOff ()BordersOn () / BordersOff ()
Modelo gráfico do VTK
Classe vtkRenderWindow
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 64
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.
Actor: o objecto visível
Câmara: determina a projecção da geometria 3D numa imagem 2D
Luz: representa e manipula a iluminação da cena (em 3D)
Modelo gráfico do VTK
Renderer
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 33
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 65
MétodosAdicionar / remover actores e luzes:
AddActor (vtkActor) / RemoveActor (vtkActor)AddLight (vtkLight) / RemoveLight (vtkLight)
Determinar a câmara a utilizar na renderização:SetActiveCamera (vtkCamera)
Criar as imagens resultantes da renderização:Render
Conversão de coordenadas:ViewToWorld (float, float, float) / WorldToView (float, float, float)
x
y
zx
y
Mundo Vista
Modelo gráfico do VTK
Classe vtkRenderer
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 66
MétodosDefinir / 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 ()
Modelo gráfico do VTK
Classe vtkLight
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 34
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 67
MétodosDefinir / obter a posição da câmara em coordenadas mundo:
SetPosition (float ,float ,float ) / GetPosition ()Definir / obter a posição do ponto focal da câmara:
SetFocalPoint (float ,float ,float ) / GetFocalPoint ()Calcular a distância entre a posição da câmara e o seu ponto focal:
ComputeDistance ()
Direcção de projecçãoPonto focal
Posição
Plano anterior de clipping
Plano posterior de clipping
Modelo gráfico do VTK
Classe vtkCamera
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 68
O objecto representado por umrenderer numa cena.Um actor não representadirectamente a sua geometrianem a sua aparência.
Tais características são definidasutilizando os objectos:
PropertyMapperTransform
Actor
Modelo gráfico do VTK
Actor
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 35
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 69
MétodosAssociar / 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:
SetMapper (vtkMapper) / GetMapper ()Definir a matriz de transformação que determina a escala,a posição e a orientação do actor:
SetUserMatrix (vtkMatrix4x4 *)
Modelo gráfico do VTK
Classe vtkActor
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 70
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.
Modelo gráfico do VTK
Classe vtkActor
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 36
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 71
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 )
Modelo gráfico do VTK
Property
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 72
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 mapperassociado de forma a serem representados no ecrã. Classes VTK : vtkMapper, vtkPolyDataMapper, vtkDataSetMapper.
Modelo gráfico do VTK
Mapper
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 37
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 73
MétodosEspecificar 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 ()
Modelo gráfico do VTK
Classe vtkPolyDataMapper
(Usada para estruturas poligonais.)
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 74
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.
Modelo gráfico do VTK
Classe Transform
Translação Escalamento Rotação
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 38
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 75
Translação
Translação (tx,ty,tz)
xyzw
txtytz
xyz
''''
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
=
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
•
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
1 0 00 1 00 0 10 0 0 1 1
Escalamento
Escalamento (sx,sy,sz)
Ts
sxsy
sz=
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
0 0 00 0 00 0 00 0 0 1
Rotação
⎣ ⎦
TRx=−
⎡⎢⎢⎢⎢
⎤⎥⎥⎥⎥
1 0 0 00 00 00 0 0 1
cos sinsin cos
θ θθ θ
Rotação θ em torno de x
Modelo gráfico do VTK
Classe Transform
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 76
MétodosCriar uma matriz identidade:
Identity ()Criar uma matriz rotação e combina-la com a matriz de transformação corrente:
RotateX (float), RotateY (float ), RotateZ (float )Escalar a matriz de transformação corrente:
Scale (float , float , float )Transladar a matriz de transformação corrente:
Translate (float , float , float )Transpor matriz de transformação corrente:
Transpose ()Inverter a matriz de transformação corrente:
Inverse ()
Modelo gráfico do VTK
Classe vtkTransform
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 39
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 77
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)
Pipeline de visualização do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 78
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]
Pipeline de visualização do VTK
Conexões
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 40
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 79
Main() { 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();
}
Window
Renderer
Actor
Mapper
Geometry
PseudoPrograma Exemplo
Pipeline de visualização do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 80
Pipeline de visualização do VTK
vtkSphereSource
vtkPolyDataMapper
vtkConeSource
vtkGlyph3D
vtkPolyDataMapper
Mace.tcl
Exemplo de pipeline
(2 actores)
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 41
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 81
Sources Filters Mappers
File Output
Props
vtkDataSet vtkDataSet
Uma source/filter pode ser ligada a mais do que um filter/mapper.
Pipeline de visualização do VTK
(continua...)
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 82
Renderer RenderWindow
vtkCamera,vtkLight
(São criadospor defeito)
Props(ex. Actor/Volume)
Props
Props
vtkRenderWindowInteractor
vtkProperty
Pipeline de visualização do VTK(...continuação)
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 42
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 83
//Create the RenderWindow and RenderervtkRenderer *ren = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren);
//Read in the DatavtkStructuredPointsReader *reader =
vtkStructuredPointsReader::New();
reader->SetFileName(“ironProt.vtk”);
#Create the RenderWindow, RenderervtkRenderer ren
vtkRenderWindow renWin
renWin AddRenderer ren
# Read in the DatavtkStructuredPointsReader reader
reader SetFileName “ironProt.vtk”
C++ Tcl
Exemplo: Criação de uma isosuperfície de uma proteína
Pipeline de visualização do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 84
//Setup the pipelinevtkContourFilter *iso =
vtkContourFilter::New();
iso->SetInput(reader->GetOutput());iso->SetValue(0, 128.0f);
vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New();
isoMapper->SetInput(iso->GetOutput());isoMapper->ScalarVisibilityOff();
# Setup the pipelinevtkContourFilter iso
iso SetInput [reader GetOutput]iso SetValue 0 128
vtkPolyDataMapper isoMapper
isoMapper SetInput [iso GetOutput]isoMapper ScalarVisibilityOff
C++ Tcl
...Exemplo: Criação de uma isosuperfície de uma proteína
Pipeline de visualização do VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 43
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 85
//Terminate the pipelinevtkActor *isoActor = vtkActor::New();
isoActor->SetMapper(isoMapper);
//Set the color of the ActorvtkProperty *prop =
isoActor->GetProperty();prop->SetColor(1, 0, 0);
//Add the Actor to the rendererren->AddActor(isoActor);
//Render the imagerenWin->Render();
# Terminate the pipelinevtkActor isoActor
isoActor SetMapper isoMapper
# Set the color of the ActorvtkProperty prop
set prop [isoActor GetProperty]prop SetColor 1 0 0
# Add the Actor the the rendererren AddActor isoActor
# Render the imagerenWin Render
C++ Tcl...Exemplo: Criação de uma isosuperfície de uma proteína
Pipeline de visualização do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 86
Pipeline de visualização do VTK
Imagem resultante
... Exemplo: Criação de uma isosuperfície de uma proteína
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 44
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 87
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();
Pipeline de visualização do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 88
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);
Pipeline de visualização do VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 45
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 89
Interacção com o utilizadorA 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.
Pipeline de visualização do VTK
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 90
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();
Pipeline de visualização do VTK
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 46
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 91
Pipeline de visualização do VTK
vtkSphereSource spheresphere SetRadius 5sphere SetThetaResolution 36sphere SetPhiResolution 18
vtkPolyDataMapper isoMapperisoMapper SetInput [sphere GetOutput]isoMapper ScalarVisibilityOn
vtkActor isoActorisoActor SetMapper isoMappereval [isoActor GetProperty] SetColor 0 0 0.8
vtkRenderer ren1ren1 AddActor isoActorren1 SetBackground 1 1 1
vtkRenderWindow renWinrenWin AddRenderer ren1renWin SetSize 500 500
vtkRenderWindowInteractor ireniren SetRenderWindow renWiniren Initialize
Source
Mapper
Actor
Renderer
Render Window
Exem
plo
(Tcl
):
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 92
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 ordenadade pontos.
Malha = lista de triângulos
Triângulo = lista de pontos
ObjectoCélula
0
1
3
2
TetraedroHexaedro
0 1
34
5
67
2
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 47
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 93
Dados suportados no VTK: Tipos de células
Vertex
Polyvertex
Line
Polyline
Triangle
Triangle Strip
Quadrilateral
Pixel
Polygon
Tetrahedron
Hexahedron
Voxel
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 94
Dados suportados no VTK: Tipos de células
Classe vtkCell definida no VTK 4.2
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 48
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 95
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 96
Dados suportados no VTK: Conjuntos de dados
vtkStructuredPointsImagens 2D e 3D
Pontos estruturados Grelha rectangularvtkRectilinearGridMalha rectangular
vtkStructuredGridMalha 2D
Grelha estruturada Dados poligonaisvtkPolyDataPontos, linhas,polígonos
vtkUnstructuredGridMalhas 2D/3D não estruturadas
Grelha não estruturada
(classes vtk para conjuntos de dados e exemplos de utilização)
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 49
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 97
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 98
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).
Dados suportados no VTK: Conjuntos de dados
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 50
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 99
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.
Dados suportados no VTK: Conjuntos de dados
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 100
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.
Dados suportados no VTK: Conjuntos de dados
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 51
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 101
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).
Dados suportados no VTK: Conjuntos de dados
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 102
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.
Dados suportados no VTK: Conjuntos de dados
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 52
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 103
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.
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 104
Dados suportados no VTK: Tipos de atributos associados aos pontos e às células
Valor simplesEscalar
s Norma edirecção (3D)
Vector
(u,v,w)Direcção (3D)
Normal
(nx,ny,nz)|n| = 1
Correspondência entre um índice e uma tabela de texturas
Coordenadas de textura
s
t2D: (u,v)3D: (u,v,w)
Matriz (n x n)
Tensor
a11 a12 a13a21 a22 a23a31 a32 a33
Tabela de dados
Tabela de arraysCada array pode serde tipo diferente
Array 0 Array 1 Array n-1. . .
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 53
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
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 106
Dados suportados no VTK: Tipos de atributos associados aos pontos e às célulasClasses vtkFieldDataSet e vtkDataSetAtributes definidas no VTK 4.2
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 54
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 107
Dados suportados no VTK: Tipos de atributos associados aos pontos e às célulasClasse vtkDataArraydefinida no VTK 4.2
Utilizada para arrays de dados de determinado tipo.
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 108
Formato de ficheiros do VTK
# vtk DataFile Version X.0 HeaderCool data TitleASCI I BINARY Data TypeDATASET type Geometry
type is one of:STRUCTURED_POINTSSTRUCTURED_GRIDRECTILINEAR_GRIDUNSTRUCTURED_GRIDPOLYDATAFIELD
POINT_DATA n Dataset attributes…CELL_DATA n… (Ver o documento VTK File Format em
http://www.vtk.org/pdf/file-formats.pdf)
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 55
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 109
Formato de ficheiros do VTK
# vtk DataFile Version 3.0vtk outputASCIIDATASET POLYDATAPOINTS 119 float197 192 53 196 186 53 201 188 51 161 192 55 168 192 45 165 197 39 ...POLYGONS 219 8763 0 1 2 3 3 4 5 3 6 7 8 ...
POINT_DATA 119SCALARS scalars floatLOOKUP_TABLE default53 53 51 55 45 39 71 69 76 61 68 58 40 62 37 40 65 36 ...
Exem
plo
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 110
# vtk DataFile Version 3.0vtk outputASCIIDATASET POLYDATAPOINTS 16 float0.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 482 0 1 2 1 2 2 2 3 2 3 4 2 4 5 2 5 6 2 6 7 2 7 8 2 8 9 2 9 10 2 10 11 2 11 12 2 12 13 2 13 14 2 14 15 2 15 0
POINT_DATA 16SCALARS scalars floatLOOKUP_TABLE default0.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
Formato de ficheiros do VTK
Exem
plo
Visualização Cientifíca - Introdução ao VTK J. Tavares / J. Barbosa
MMCCE - 2004/2005 56
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 111
# vtk DataFile Version 2.0A Simple Matrix of valuesASCIIDATASET STRUCTURED_POINTSDIMENSIONS 10 5 1ORIGIN 0 0 0SPACING 1 1 1
POINT_DATA 50SCALARS values floatLOOKUP_TABLE default0 0 0 0 0 0 0 0 0 00 1 1 0 0 0 0 0 0 00 1 1 1 0 0 0 0 0 00 0 1 1 1 1 1 0 0 00 0 0 0 0 0 0 0 0 0
Formato de ficheiros do VTKEx
empl
o
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 112
# vtk DataFile Version 1.0Line representation of vtkASCII
DATASET POLYDATAPOINTS 12 float0.0 2.0 0.01.0 0.0 0.02.0 2.0 0.03.0 0.0 0.03.0 3.0 0.02.5 2.0 0.03.5 2.0 0.04.0 0.0 0.04.0 3.0 0.05.0 2.0 0.04.0 1.0 0.05.0 0.0 0.0
LINES 5 173 0 1 22 3 42 5 62 7 83 9 10 11
Formato de ficheiros do VTK
Exem
plo