Você está na página 1de 112

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 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

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 2


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 Visualização Cientifíca - Introdução ao VTK 4


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.

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 5


O que é o VTK?

Nível de aplicação (C++,Tcl/Tk, ...) Interface para as linguagens


interpretadas: Tcl/Tk, Java,
Python
VTK
Biblioteca de
classes C++
Biblioteca Gráfica (openGL) (compilada)

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.

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 Visualização Cientifíca - Introdução ao VTK 8


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 Visualização Cientifíca - Introdução ao VTK 10


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 Visualização Cientifíca - Introdução ao VTK 12


Recursos sobre o VTK
„ Sistema de ajuda, distribuído em conjunto com o código
fonte, compilado (MS Windows).

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 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 Visualização Cientifíca - Introdução ao VTK 14


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 VTK-
XX-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 Visualização Cientifíca - Introdução ao VTK 16


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 Visualização Cientifíca - Introdução ao VTK 18


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 Visualização Cientifíca - Introdução ao VTK 20


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 Visualização Cientifíca - Introdução ao VTK 22


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 Visualização Cientifíca - Introdução ao VTK 24


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 Visualização Cientifíca - Introdução ao VTK 26


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 Visualização Cientifíca - Introdução ao VTK 28


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 Visualização Cientifíca - Introdução ao VTK 30


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 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

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 33


Exemplos de aplicação do VTK
Visualização Médica C.F.D G.I.S

Visualização de fluxo Visualização Tensorial Renderização de volumes


J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 34
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 Visualização Cientifíca - Introdução ao VTK 36


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 Visualização Cientifíca - Introdução ao VTK 38


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 Extract Plane


countour

Line Contour
Renderer

Superfícies de contorno Planos extraídos Linhas de contorno

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 40


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: Filtros/classes vtk:


vtkProbeFilter e vtkContourFilter vtkCutter e vtkWarpVectors
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 42
Exemplos de aplicação do VTK (algoritmos)
Fluxo do sangue numa artéria

Filtros/classe vtk: vtkHedgeHog Filtros/classes vtk: vtkContourFilter,


vtkStreamLines e vtkTubeFilter
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 43
Exemplos de aplicação do VTK (algoritmos)
Escoamento em torno de um elemento Modelo CAD de um motor

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++

Bibliotecas e includes Código fonte de todas


(ficheiros dll, bin e .h) as classes (pode levar
Interpreter ou horas a compilar)
(ficheiros .a e .h)

C++ Instalação Binária: para utilizar Instalação do código


core as classes no desenvolvimento
de uma aplicação
fonte: para estender o
VTK

J. Tavares / J. Barbosa 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) Visualização Gráficos

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 46


Modelos do VTK
Modelo de Visualização
Source
Dados
(Procedural) Modelo Gráfico
Criação de
novos dados
Representação
Processamento
Source Mapper
Leitura (Reader) Transformação
dos dados em
Filter primitivas
gráficas

Mapper
(Writer)
Escrita

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 47


Modelos do VTK

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.

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 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.

entrada
Process A Process B Process C
saída

dataset A dataset B

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 50


Modelo de visualização do VTK
Objecto
Objectos process Process

Source Filter Mapper

Início do pipeline Processamento dos Fim do pipeline


•Leitura de dados externos; objectos dados •Gerar primitivas gráficas;
•Geração de novos dados. •Recebe uma ou mais •Comunicação com o
entradas; modulo gráfico.
•Gera uma ou mais saídas.
nenhuma entrada ≥ 1 entrada ≥ 1 entrada

Source Filter Mapper

≥ 1 saída ≥ 1 saída nenhuma saída


J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 51
Modelo de visualização do VTK

Filtro Exemplo
Fonte

Objecto Objecto
data data
Modelo
Mapeador
gráfico

Fonte Filtro Filtro

Objecto Objecto Objecto


data data data

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 52


Modelo de visualização do VTK
Exemplo (Tcl)
vtkSphereSource sphere
sphere SetRadius 5 Source - Fonte
sphere SetThetaResolution 36
sphere SetPhiResolution 18
vtkPolyDataMapper isoMapper
isoMapper SetInput [sphere GetOutput] Mapper - Mapeador
isoMapper ScalarVisibilityOn
vtkActor isoActor
isoActor SetMapper isoMapper Actor
eval [isoActor GetProperty] SetColor 0.2 0.63 0.79
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 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)
„ Determina a forma do objecto (triangular, esférica, de malha,

etc.);
„ Invariável a certas transformações geométricas (translação,

rotação e escalamento);
„ Um objecto é composto por uma ou mais células.

„ Estrutura geométrica (lista de pontos)


„ Instância da estrutura topológica;

„ Coordenadas dos pontos que constituem as células (vértices).

„ Atributos
„ Informação complementar associada aos pontos e às células

(ex. temperatura num ponto, massa de uma células, etc.)


J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 54
Modelo de imagem do VTK
„ Pipeline de imagem – um caso especial do pipeline de
visualização;
„ Desenhado apenas para suportar dados do tipo
vtkStructuredPoints (pontos estruturados);
„ Um conjunto de pontos estruturados são dados distribuídos
regularmente num array alinhado com o sistema de eixos;
„ Conjunto de pontos 2D – imagens, mapas de pixéis (pixmaps) e
mapas de bits (bitmaps);
„ Conjunto de pontos 3D – volumes (uma pilha “stack” de
imagens 2D - slices);
„ Os filtros envolvidos têm sempre à entrada e à saída conjuntos
de pontos estruturados;
„ Devido à natureza regular dos dados:
„ Os dados podem ser “divididos em parcelas rectangulares”;
„ O pipeline de imagem pode ser multithreaded.

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 55


Pipeline de execução do VTK

Direcção do método Update()


Render
Modelo de Visualização Modelo Gráfico

Source Filter Mapper Actor

Direcção do fluxo de dados


(geração dos dados através do método ExecuteData())

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 56


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 Luz

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 58


Modelo gráfico do VTK

O objectivo é renderizar a geometria (volume) no ecrã.


Classes VTK

vtkCamera vtkActor
vtkLight
•vtkProperty
vtkRenderWindow •vtkMapper
•vtkTransform

vtkRenderWindowInteractor
vtkRenderer

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 59


Modelo gráfico do VTK
Exemplo
1 vtkRenderWindow

vtkCamera
2 vtkRenderer vtkLight
vtkActor
(property, geometry (mapper), transformation, etc.)

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 60


Modelo gráfico do VTK
Exemplo Render Window

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

„ 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 Visualização Cientifíca - Introdução ao VTK 62
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.
Actor: o objecto visível Luz: representa e
manipula a
Câmara: determina a iluminação da cena
projecção da geometria (em 3D)
3D numa imagem 2D

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 64


Modelo gráfico do VTK
Classe vtkRenderer
„ Métodos
„ Adicionar / remover actores e luzes:
„ AddActor (vtkActor) / RemoveActor (vtkActor)

„ AddLight (vtkLight) / RemoveLight (vtkLight)

„ Determinar a câmara a utilizar na renderização:


„ SetActiveCamera (vtkCamera)

„ Criar as imagens resultantes da renderização:


„ Render

„ Conversão de coordenadas:
„ ViewToWorld (float, float, float) / WorldToView (float, float, float)

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 ()

„ 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 Visualização Cientifíca - Introdução ao VTK 66


Modelo gráfico do VTK
Classe vtkCamera
„ Métodos
„ Definir / obter a posição da câmara em coordenadas mundo:
„ SetPosition (float ,float ,float ) / GetPosition ()

„ Definir / obter a posição do ponto focal da câmara:


„ SetFocalPoint (float ,float ,float ) / GetFocalPoint ()

„ Calcular a distância entre a posição da câmara e o seu ponto


focal: Plano posterior
de clipping
„ ComputeDistance ()

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

„ 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 Visualização Cientifíca - Introdução ao VTK 68


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:
„ SetMapper (vtkMapper) / GetMapper ()

„ Definir a matriz de transformação que determina a escala,


a posição e a orientação do actor:
„ 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 Visualização Cientifíca - Introdução ao VTK 70


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 Visualização Cientifíca - Introdução ao VTK 72


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 Escalamento Rotação

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 74


Modelo gráfico do VTK
Classe Transform

Translação Escalamento Rotação

⎡ x' ⎤ ⎡1 0 0 tx⎤ ⎡ x ⎤ ⎡sx 0 0 0⎤ ⎡1 0 0 0⎤


⎢ y' ⎥ ⎢0 1 0 ty⎥ ⎢ y⎥ ⎢ 0 sy 0 0⎥ ⎢ ⎥
⎢ ⎥=⎢ ⎥•⎢ ⎥ ⎢0 cosθ − sinθ 0⎥
⎢ z' ⎥ ⎢0 0 1 tz ⎥ ⎢ z ⎥ Ts = ⎢ ⎥ TRx =
⎢0 sinθ cosθ 0⎥
⎢ 0 0 sz 0⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣w'⎦ ⎣0 0 0 1 ⎦ ⎣ 1⎦
0 0 0 1 ⎣0 0 0 1⎦
⎣ ⎦
Translação (tx,ty,tz) Escalamento (sx,sy,sz) Rotação θ em torno
de x
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 75
Modelo gráfico do VTK
Classe vtkTransform
„ Métodos
„ Criar uma matriz identidade:
„ Identity ()

„ Criar uma matriz rotação e combina-la com a matriz de


transformação corrente:
„ RotateX (float), RotateY (float ), RotateZ (float )

„ Escalar a matriz de transformação corrente:


„ Scale (float , float , float )

„ Transladar a matriz de transformação corrente:


„ Translate (float , float , float )

„ Transpor matriz de transformação corrente:


„ Transpose ()

„ Inverter a matriz de transformação corrente:


„ Inverse ()

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 76


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 Visualização Cientifíca - Introdução ao VTK 78


Pipeline de visualização do VTK
PseudoPrograma Exemplo

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

J. Tavares / J. Barbosa 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 Visualização Cientifíca - Introdução ao VTK 80
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

Render
Props Renderer Window

Props
(ex. Actor/Volume)
vtkCamera, vtkRenderWindowInteractor
vtkLight
(São criados
por defeito)
vtkProperty

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 82


Pipeline de visualização do VTK
Exemplo: Criação de uma isosuperfície de uma proteína
C++ Tcl
//Create the RenderWindow and Renderer #Create the RenderWindow, Renderer
vtkRenderer *ren = vtkRenderer::New(); vtkRenderer ren

vtkRenderWindow *renWin = vtkRenderWindow renWin


vtkRenderWindow::New();

renWin->AddRenderer(ren); renWin AddRenderer ren

//Read in the Data # Read in the Data


vtkStructuredPointsReader *reader = vtkStructuredPointsReader reader
vtkStructuredPointsReader::New();

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 # Setup the pipeline
vtkContourFilter *iso = vtkContourFilter iso
vtkContourFilter::New();

iso->SetInput(reader->GetOutput()); iso SetInput [reader GetOutput]


iso->SetValue(0, 128.0f); iso SetValue 0 128

vtkPolyDataMapper *isoMapper = vtkPolyDataMapper isoMapper


vtkPolyDataMapper::New();

isoMapper->SetInput(iso->GetOutput()); isoMapper SetInput [iso GetOutput]


isoMapper->ScalarVisibilityOff(); isoMapper ScalarVisibilityOff

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 84


Pipeline de visualização do VTK
...Exemplo: Criação de uma isosuperfície de uma proteína
C++ Tcl
//Terminate the pipeline # Terminate the pipeline
vtkActor *isoActor = vtkActor::New(); vtkActor isoActor

isoActor->SetMapper(isoMapper); isoActor SetMapper isoMapper

//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

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 86


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 Visualização Cientifíca - Introdução ao VTK 88


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 Visualização Cientifíca - Introdução ao VTK 90


Pipeline de visualização do VTK
vtkSphereSource sphere
sphere SetRadius 5 Source
sphere SetThetaResolution 36
sphere SetPhiResolution 18
Exemplo (Tcl):

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

„ Átomos que constituem um conjunto de dados;


„ Uma célula é uma organização topológica de
pontos (coordenadas x, y, z);
„ Definidas por:
„ Tipo; 3 6
7
Tetraedro 5
„ Lista ordenada 4 Hexaedro
2 1 3 2
de pontos. 0 0 1

Objecto Malha = lista de triângulos


Célula Triângulo = lista de pontos

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 92


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 Visualização Cientifíca - Introdução ao VTK 94


Dados suportados no VTK: Conjuntos de dados

Pontos estruturados Grelha rectangular Pontos não estruturados


(Structured Points) (Rectilinear Grid) (Unstructured Points)

Grelha estruturada Dados poligonais Grelha não estruturada


(Structured Grid) (Polygonal Data) (Unstructured Grid)

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 95


Dados suportados no VTK: Conjuntos de dados
Pontos estruturados Grelha rectangular
vtkStructuredPoints vtkRectilinearGrid
Imagens 2D e 3D Malha rectangular

Grelha estruturada Dados poligonais


vtkStructuredGrid
vtkPolyData
Malha 2D
Pontos, linhas,
Grelha não estruturada polígonos
vtkUnstructuredGrid
Malhas 2D/3D não estruturadas
(classes vtk para conjuntos de
dados e exemplos de utilização)
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 96
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 Visualização Cientifíca - Introdução ao VTK 98


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 Visualização Cientifíca - Introdução ao VTK 100


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 Visualização Cientifíca - Introdução ao VTK 102


Dados suportados no VTK: Exemplos de
malhas

„ As células podem ter diferentes formas e tamanhos:


„ 2D : triângulos, quadriláteros, ...
„ 3D : tetraedros, hexaedros, pirâmides, …
„ As malhas podem conter um ou mais tipo de células.
J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 103
Dados suportados no VTK: Tipos de atributos
associados aos pontos e às células
Escalar Vector Normal
Valor simples Norma e Direcção (3D)
s
(u,v,w) direcção (3D) (nx,ny,nz)
|n| = 1

Coordenadas de textura Tensor


t a11 a12 a13
Correspondência Matriz (n x n)
2D: (u,v) entre um índice e a21 a22 a23
3D: (u,v,w) uma tabela de a31 a32 a33
s texturas
Tabela de dados
Array 0 Array 1 ... Array n-1
Tabela de arrays
Cada array pode ser
de tipo diferente

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 104


Dados suportados no VTK: Tipos de atributos
associados aos pontos e às células
„ 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 Visualização Cientifíca - Introdução ao VTK 106


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 Visualização Cientifíca - Introdução ao VTK 108
Formato de ficheiros do VTK
# vtk DataFile Version 3.0
vtk output
ASCII
DATASET POLYDATA
POINTS 119 float
Exemplo

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
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

J. Tavares / J. Barbosa Visualização Cientifíca - Introdução ao VTK 110


Formato de ficheiros do VTK
# vtk DataFile Version 2.0
A Simple Matrix of values
ASCII
DATASET STRUCTURED_POINTS
Exemplo

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

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 Visualização Cientifíca - Introdução ao VTK 112

Você também pode gostar