Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução ao VTK
url: http://www.fe.up.pt/~tavares/ensino/VISCI/visci.html
Sumário
1. Bibliografia 11. Modelo gráfico do VTK
2. O que é o VTK 12. Pipeline de visualização do
3. Recursos sobre o VTK VTK
4. Obter o VTK 13. Dados suportados no VTK:
5. Características técnicas do VTK
Células
6. Exemplos de aplicação do VTK
14. Dados suportados no VTK:
Conjuntos de dados
7. Arquitectura do sistema VTK
15. Dados suportados no VTK:
8. Modelo de visualização do VTK Tipos de atributos associados
9. Modelo de imagem do VTK aos pontos e às células
10. Pipeline de execução do VTK 16. Formato de ficheiros do VTK
Sistema Orientado
para Objectos
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 6
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.
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
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);
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.
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);
...
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;
...
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 Visualização Cientifíca - Introdução ao VTK 32
Exemplos de aplicação do VTK
Área Financeira
Simulação
Modelamento
Área Médica
CT / MRI / Ultrasound
Modelamento
Mapeamento
Geofísico
Renderização de volumes
Software
Dados
Hardware
Extracção de Iso-superfícies
Visualização de campos
vectoriais
Line Contour
Renderer
Filtros/classes vtk:
Filtros/classes vtk: vtkStreamLines, vtkPolyDataMapper
vtkTubeFilter, vtkDataSetMapper e vtkTextureThreshold
e vtkCutter
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 44
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 •Fonte Tcl/Tk
•Interpretador Java •Java JDK
•Interpretador Python •Fonte Python
Núcleo C++
Mapper
(Writer)
Escrita
Exemplo:
amostragem
f(x,y,z)
Transformação
(visualização)
Representação
computacional Representação
gráfica
(renderização)
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 48
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.
entrada
Process A Process B Process C
saída
dataset A dataset B
Filtro Exemplo
Fonte
Objecto Objecto
data data
Modelo
Mapeador
gráfico
etc.);
Invariável a certas transformações geométricas (translação,
rotação e escalamento);
Um objecto é composto por uma ou mais células.
Atributos
Informação complementar associada aos pontos e às células
Light
Camera
Actor
Property
Transform
Mapper
Câmara
Actor Luz
vtkCamera vtkActor
vtkLight
•vtkProperty
vtkRenderWindow •vtkMapper
•vtkTransform
vtkRenderWindowInteractor
vtkRenderer
vtkCamera
2 vtkRenderer vtkLight
vtkActor
(property, geometry (mapper), transformation, etc.)
Renderer : Camera
Light
Actor : Property
Viewport Transform
Mapper
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 61
Modelo gráfico do VTK
Render Windows Renderer
Conversão de coordenadas:
ViewToWorld (float, float, float) / WorldToView (float, float, float)
y y
Mundo Vista
x x
J. Tavares / J. Barbosa
z 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 ()
Direcção de
Ponto focal 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
Mapper
Transform
SetRepresentationToWireframe ()
SetRepresentationToSurface ()
etc.
Definição da cor dos nodos (vértices).
Faz referência a uma palete de cores.
ImmediateModeRenderingOff ()
Main() { Window
create a window;
create a renderer; give the renderer
to the window; Renderer
create procedural geometry;
create a mapper; give the geometry
to the mapper; Actor
create an actor; give the mapper to
the actor;
Mapper
give the actor to the renderer;
window->render();
} Geometry
vtkGlyph3D
vtkPolyDataMapper vtkPolyDataMapper
(2 actores)
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 80
Pipeline de visualização do VTK
File Output
Props
vtkDataSet vtkDataSet
(continua...)
Uma source/filter pode ser ligada a mais do que um filter/mapper.
Props
Render
Props Renderer Window
Props
(ex. Actor/Volume)
vtkCamera, vtkRenderWindowInteractor
vtkLight
(São criados
por defeito)
vtkProperty
C++ Tcl
//Setup the pipeline # Setup the pipeline
vtkContourFilter *iso = vtkContourFilter iso
vtkContourFilter::New();
//Set the color of the Actor # Set the color of the Actor
vtkProperty *prop = vtkProperty prop
isoActor->GetProperty();
set prop [isoActor GetProperty]
prop->SetColor(1, 0, 0);
prop SetColor 1 0 0
//Add the Actor to the renderer
# Add the Actor the the renderer
ren->AddActor(isoActor);
ren AddActor isoActor
//Render the image
# Render the image
renWin->Render();
renWin Render
J. Tavares / J. Barbosa 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
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();
// create an actor…
vtkActor * actor = vtkActor::New();
Actor->SetMapper(mapper);
interactor->SetRenderWindow(renderWindow);
interactor->Start();
vtkPolyDataMapper isoMapper
isoMapper SetInput [sphere GetOutput] Mapper
isoMapper ScalarVisibilityOn
vtkActor isoActor
isoActor SetMapper isoMapper Actor
eval [isoActor GetProperty] SetColor 0 0 0.8
vtkRenderer ren1
ren1 AddActor isoActor Renderer
ren1 SetBackground 1 1 1
vtkRenderWindow renWin
renWin AddRenderer ren1 Render Window
renWin SetSize 500 500
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
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
Utilizada para
arrays de dados de
determinado tipo.
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
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 -
Exemplo
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
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
# vtk DataFile Version 1.0
Line representation of vtk
ASCII
DATASET POLYDATA
POINTS 12 float
Exemplo
LINES 5 17
3012
234
256
278
3 9 10 11