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