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

Visualização Científica – Introdução ao VTK