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

Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

Embed Size (px)

Citation preview

Page 1: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

João Manuel R. S. TavaresJorge Gomes Barbosa

url: http://www.fe.up.pt/~tavares/ensino/VISCI/visci.html

Page 2: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Sumário

1. Bibliografia2. O que é o VTK3. Recursos sobre o VTK4. Obter o VTK5. Características técnicas do VTK6. Exemplos de aplicação do VTK7. Arquitectura do sistema VTK8. Modelo de visualização do VTK9. Modelo de imagem do VTK10. Pipeline de execução do VTK

11. Modelo gráfico do VTK12. Pipeline de visualização do

VTK13. Dados suportados no VTK:

Células14. Dados suportados no VTK:

Conjuntos de dados15. Dados suportados no VTK:

Tipos de atributos associados aos pontos e às células

16. Formato de ficheiros do VTK

Page 3: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Bibliografia

The Visualization Toolkit (3rd Edition)Will Schroeder, Ken Martin, Bill LorensenISBN 1-930934-07-6Kitware, Inc. publishersVTK User’s Guide (VTK 4.2)Will Schroeder, Ken MartinISBN 1-930934-08-4Kitware, Inc publishersMastering CMake (CMake 1.8)Ken Martin, Bill HoffmanISBN 1-930934-09-2Kitware, Inc publishers

Disponíveis para compra on-line em: http://www.vtk.org/buy-books.php

Page 4: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

O que é o VTK?

O VTK – The Visualization ToolKit é um sistema de software aberto para computação gráfica 3D, processamento de imagem e visualização.O VTK inclui uma biblioteca de classes C++ e várias interfaces de interpretação, incluindo para as linguagens Tcl/Tk, Java, e Python.O VTK tem vindo a ser implementado em plataformas Unix, MS Windows (95/98/NT/2000/XP) e Mac (OSX Jaguar).A arquitectura e o desenvolvimento dabiblioteca têm sido fortemente influenciadospelos princípios do desenvolvimento /programação orientado para objectos.

Page 5: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

O que é o VTK?

O modelo gráfico do VTK está num nível de abstracção mais elevado quando comparado com os modelos das bibliotecas de renderização como a OpenGL ou a PEX. Tal significa que é muito mais fácil desenvolver aplicações gráficas e de visualização.Com o VTK as aplicações podem ser implementadas indiferentemente emC++, Tcl, Java, ou Python.

Page 6: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

O que é o VTK?

Biblioteca de classes C++

(compilada)

Interface para as linguagens interpretadas: Tcl/Tk, Java,

Python

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

VTK

Biblioteca Gráfica (openGL)

Sistema Orientado para Objectos

Page 7: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

O que é o VTK?

A biblioteca VTK é um verdadeiro sistema de visualização, pois não permite apenas a representação da geometria dos objectos.O VTK suporta uma ampla variedade de algoritmos de visualização, incluindo: métodos escalares, vectoriais, tensoriais, de textura e volumétricos; e técnicas de modelamento avançado como o modelamento implícito, a redução poligonal, a suavização de malhas, o corte, a definição de contornos e a triangulação de Delaunay. Estão também integrados dezenas de algoritmos de processamento de imagem, de tal forma que é possível “combinar” algoritmos de imagem e algoritmos gráficos.

Page 8: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

O que é o VTK?

A biblioteca VTK é utilizada por estudantes, académicos, programadores, analistas de dados, utilizadores e investigadores de computação gráfica e visualização, engenheiros, cientistas, investigadores, etc.Apesar do VTK ser disponibilizado livremente, o suporte comercial é assegurado pela empresa Kitware.Dezenas de empresas utilizam o VTK no desenvolvimento dos seus programas comerciais.O VTK também é muito utilizado em ambiente académico, em investigação e em cursos de computação gráfica e de visualização.

Page 9: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Recursos sobre o VTK

LivrosThe Visualization Toolkit, An Object-OrientedApproach to 3D Graphics (Third Edition)Will Schroeder, Ken Martin and Bill LorensenKitware, Inc., ISBN 1-930934-07-6 http://www.kitware.com/products/vtktextbook.html

The VTK User's Guide (VTK 4.2 Edition)Kitware, Inc.ISBN 1-930934-08-4 http://www.kitware.com/products/vtkguide.html

Page 10: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Recursos sobre o VTK

Página web oficialhttp://www.vtk.org

Software (http://public.kitware.com/VTK/files/);FAQ’s (http://public.kitware.com/cgi-bin/vtkfaq);Lista de discussão (http://public.kitware.com/mailman/listinfo/vtkusers);Motor de procura (http://www.kitware.com/search.html);Documentação on-line (http://www.vtk.org/doc/nightly/html/);Exemplos de programas(http://www.vtk.org/example-code.php);Exemplos de utilização(http://www.kitware.com/case/vtkinuse.html);Ficheiros de dados (http://public.kitware.com/VTK/files/);Links (http://www.vtk.org/links.php);etc.

Page 11: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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

Page 12: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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, em html.

Page 13: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Recursos sobre o VTK

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

Page 14: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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.phpftp://public.kitware.com/pub/vtkhttp://public.kitware.com/VTK/files/

Existem diferentes versões disponíveis:VTK 4.X (versão oficial);VTK Nightly Release (versão diária – não oficial)VTK CVS (últimas modificações – não oficial)

Verificar a estado da versão CVS (estável ou não)

Page 15: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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.exeExecutar o CMake e configurar o projecto VTKExtrair, e compilar o projecto (compilador necessário, por exemplo o Microsoft VC++ 6.0)

Page 16: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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 andDesign de Rumbaugh et al da Prentice-Hall).Mais de 215,000 linhas geradas automaticamente para a interface Tcl (e também para Python e Java)....

Page 17: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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.

Page 18: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Interacção e GUIIntegração pacifica com uma vasta variedade de sistemas windows incluindo: Qt, FLTK, wxWindows, Tcl/Tk, Python/Tk, Java, X11, Motif, Windows, Cocoa e CARBON.Suporta uma grande variedade de estilos de interacção, incluindo os modos trackball e joystickpara as câmaras e para os actores. Os estilos de interacção podem ser configurados e novos estilos podem ser facilmente adicionados....

Page 19: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Interacção e GUI...Implementa um mecanismo de gestão de eventos de comando/observação. Os objectos podem interrogar outros objectos por um evento particular e evocar rechamadas quando apropriadas. Os eventos podem ter prioridades associadas e ser abortados. As classes do VTK definem uma vasta gama de eventos evocados através do sistema.Inclui um conjunto extenso de objectos 3D predefinidos, incluindo: ponto, linha, plano, planoimplícito, caixa, esfera, cone, barra escalar, plano de imagem, e spline.

Page 20: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Computação Gráfica 3DRenderização de superfícies.Renderização de volumes (suporta textura e combinação de superfícies opacas com volumes).Primitivas de renderização: pontos, linhas, polígonos, faixas de triângulos, volumes.Renderização interactiva....

Page 21: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Computação Gráfica 3D...Propriedades: cor ambiente, cor difusa, cor especular, cor das luzes e dos objectos, transparência, mapeamento de textura, sombreado - flat/Gouraud, luz anterior.Luzes: infinitas, pontuais.Câmaras: projecção paralela e perspectiva, controlo do azimute, do zoom e da elevação, reset.Criação automática de câmaras e de luzes....

Page 22: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Computação Gráfica 3D...A programação é independente do tipo do renderizador (definido automaticamente em função da plataforma computacional).Modelo Gráfico: luzes iluminam a cena, câmaras definem o ponto de vista e o nível de zoom, actores definem a geometria e as propriedades –“semelhante a Hollywood”. ...

Page 23: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Computação Gráfica 3D...Modelo Gráfico: ... possibilidade de geração automática ou manual do nível de detalhe dos actores, de forma a suportar renderização interactiva mesmo com grandes modelos; possibilidade de criação de grupos de actores; os mapeadores (Mappers), fazem a ligação da geometria com o pipeline de visualização; os renderizadores, coordenam as luzes, as câmaras e os actores de forma a criar imagens; volumes, são um tipo particular de actores, com propriedades especiais. Outras características: janelas e pontos de vista múltiplos; gravação de imagens em vários formatos (incluindo png, jpeg, tiff, bmp e ppm).

Page 24: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

VisualizaçãoTipos de dados: poligonais (pontos, linhas, polígonos, faixas de triângulos), imagens e volumes (conjuntos de pontos estruturados), grelhas estruturadas, grelhas não estruturadas, pontos não estruturados, grelhas rectangulares.Tipos de células (2D/3D): vértice, polivértice, triângulo, faixa de triângulos, pixel, quadrilátero, polígono, tetraedro, voxel, hexaedro, cunha, pirâmide....

Page 25: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Visualização...Tipos de atributos: escalares, vectores, tensores (3x3), normais, coordenadas de textura.Algoritmos escalares: mapeamento colorido, isocontorno, binarização, geração de escalares a partir de outros dados....

Page 26: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Visualização...Alguns algoritmos vectoriais incluídos: hedgehogs, streamlines, dashed streamlines, stream points, stream surfaces, streampolygon, displacementplots/warping.Alguns algoritmos tensoriais incluídos: tensor ellipsoids, tensor glyphs, hyper-streamlines....

Page 27: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Visualização...Visualização de informação (coordenadas paralelas, redução dimensional, etiquetas programáveis).Algoritmos de modelamento incluídos: esferas, cones, cilindros, cubos, linhas, planos, ..., eixos, cursores, texto, modelamento implícito, decimização, binarização, operações booleanas, etiquetas, corte, geração das normais, conectividade, geração de faixas de triângulos, extrusão linear e de rotação, varrimento de superfícies e de volumes, ...

Page 28: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Visualização... visualização de pontos não estruturados, acrescentar, fundir e filtrar dados, triangulação 2D/3D de Delaunay, suavização de malhas, reconstrução de superfícies.Importação e exportação de dados em vários formatos: stereo-lithography, MOVIE.BYU, Cyberware, Inventor, 3D Studio, PLOT3D, PNM, RIB, SLC, TIFF , VRML, Wavefront.Visualização de anotações: texto 2D/3D, barras escalares, gráficos x-y.

Page 29: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Imagem Pode ser utilizado com grandes volumes de dados.A maior parte dos filtros são de implementação paralela (transparente ao utilizador).Integração total com o pipeline gráfico.Tipos de filtros de imagem incluídos: difusão, Butterworth, dilatação, erosão, esquelitização, convolução, diferença, aritmético, magnitude, divergência, gradiente, média, distância, FFT, Fourier, Gaussian, Sobel, histograma, binarização, permutação, conversão.

Page 30: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

VantagensGratuito;Facilmente criam-se aplicações gráficas, de processamento de imagem ou de visualização;Código fonte C++ disponibilizado;Facilmente derivam-se novas classes;Possibilidade de prototipagem ou desenvolvimento de aplicações utilizando linguagens interpretativas (Tcl, Python, e Java);...

Page 31: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Vantagens...Interfaces podem ser criadas rapidamente com bibliotecas adequadas para o desenvolvimento de interfaces, por exemplo, Tk ou Java;Biblioteca de renderização independente da plataforma (MS Windows, Unix, Mac);Vários algoritmos úteis e avançados incluídos;Sistema integrado de software;Permite a conversão de dados em imagens;...

Page 32: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Características técnicas do VTK

Vantagens...Filosofia orientada para objectos;Fortemente testado em aplicações reais;Elevado suporte disponível;Suporte comercial existente.

DesvantagensUm motor gráfico não “super rápido”;Código C++;Pesado, é preciso um sistema “decente” para o utilizar com eficácia.

Page 33: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK

Área FinanceiraSimulação

Área MédicaCT / MRI / Ultrasound

Modelamento

Page 34: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK

G.I.SC.F.DVisualização Médica

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

Page 35: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTKImagem Médica

Modelamento

Page 36: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK

Mapeamento Geofísico

Visualização do fluxo de componentes

Page 37: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK

Renderização de volumes

Software

HardwareDados

Page 38: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK

Extracção de Iso-superfícies

Page 39: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK

Visualização de campos vectoriais

Page 40: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK (algoritmos)

Sample F(x,y,z) Point Array

Extract Plane

Line ContourRenderer

Surfacecountour

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

Page 41: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK (algoritmos)

CT Scan de uma cabeça humana

Filtros/classes vtk: vtkContourFilter e vtkCutter

Page 42: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK (algoritmos)

Energia e densidade de fluxo numa câmara de combustão

Filtros/classes vtk:vtkProbeFilter e vtkContourFilter

Filtros/classes vtk:vtkCutter e vtkWarpVectors

Page 43: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK (algoritmos)

Fluxo do sangue numa artéria

Filtros/classes vtk: vtkContourFilter,vtkStreamLines e vtkTubeFilter

Filtros/classe vtk: vtkHedgeHog

Page 44: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Exemplos de aplicação do VTK (algoritmos)

Modelo CAD de um motor

Filtros/classes vtk:vtkPolyDataMapper

e vtkTextureThreshold

Escoamento em torno de um elemento

Filtros/classes vtk: vtkStreamLines,vtkTubeFilter, vtkDataSetMapper

e vtkCutter

Page 45: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Arquitectura do sistema VTK

O VTK é composto por um núcleo (core) compilado (escrito em linguagem C++) com as devidas interfaces para várias linguagens interpretadas.

C++

core

Interpreter

Interpreted Wrapper (Tcl, Java, Python)

Núcleo C++

Instalação Binária: para utilizaras classes no desenvolvimentode uma aplicação

Instalação do código fonte: para estender o VTK

•Fonte Tcl/Tk•Java JDK•Fonte Python

Código fonte de todasas classes (pode levarhoras a compilar)

Bibliotecas e includes(ficheiros dll, bin e .h)ou(ficheiros .a e .h)

•Tcl/Tk shell•Interpretador Java•Interpretador Python

Page 46: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelos do VTK

Modelo Gráfico - criação da cena;Modelo de Visualização - transformação da informação em dados gráficos.

Objectos Gráficos: Renderização (rendering);Objectos de Visualização: Geração da Geometria.

Sistema do fluxo de dados: pipeline de execução

Dados (fonte) Visualização Gráficos

Page 47: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelos do VTK

Modelo de Visualização

Modelo GráficoDados

ProcessamentoSource(Reader)

Source(Procedural)

Filter

Mapper(Writer)

MapperLeitura

Criação denovos dados

Escrita

Transformação dos dados em

primitivas gráficas

Representação

Page 48: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelos do VTK

Exemplo:

f(x,y,z)

Representaçãocomputacional

Transformação(visualização)

amostragem

Representaçãográfica

(renderização)

Page 49: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo de visualização do VTK

Objectivos:Transformar os dados em primitivas gráficas;Construir a representação geométrica dos objectos a representar.

Baseado numa filosofia de pipelineA transformação dos dados é decomposta em módulos;Cada módulo realiza uma operação precisa sobre os dados (transformação);Os módulos são ligados entre si de forma a formarem uma saída do pipeline;Os dados fluem no interior do pipeline, passando de um módulo para outro.

Page 50: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo de visualização do VTK

Dois tipos de objectos:Objectos data (dados)

Dados que fluem no interior do pipeline;Designados por datasets (conjuntos de dados).

Objectos process (processos)Módulos ou composições algorítmicas do pipeline.

Process A

dataset A dataset B

Process B Process C

saída

entrada

Page 51: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo de visualização do VTK

Objecto Process

Source

Início do pipeline•Leitura de dados externos;•Geração de novos dados.

Filter

Processamento dos objectos dados•Recebe uma ou mais entradas;•Gera uma ou mais saídas.

Mapper

Fim do pipeline•Gerar primitivas gráficas;•Comunicação com o modulo gráfico.

Source

nenhuma entrada

≥ 1 saída

Mapper

≥ 1 entrada

nenhuma saída

Objectos process

Filter

≥ 1 entrada

≥ 1 saída

Page 52: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo de visualização do VTK

Fonte

Objectodata

Filtro

Objectodata

Fonte

Objectodata

Filtro

Objectodata

Filtro

Objectodata

Mapeador Modelo gráfico

Exemplo

Page 53: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo de visualização do VTKExemplo (Tcl)

vtkSphereSource spheresphere SetRadius 5sphere SetThetaResolution 36sphere SetPhiResolution 18

vtkPolyDataMapper isoMapperisoMapper SetInput [sphere GetOutput]isoMapper ScalarVisibilityOn

vtkActor isoActorisoActor SetMapper isoMappereval [isoActor GetProperty] SetColor 0.2 0.63 0.79

vtkRenderer ren1ren1 AddActor isoActorren1 SetBackground 1 1 1

vtkRenderWindow renWinrenWin AddRenderer ren1renWin SetSize 500 500

vtkRenderWindowInteractor ireniren SetRenderWindow renWiniren Initialize

Source - Fonte

Mapper - Mapeador

Actor

Renderer

Render Window

Page 54: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo de visualização do VTK

Um dataset (conjunto de dados) é constituído por:Estrutura topológica (lista de células)

Determina a forma do objecto (triangular, esférica, de malha, etc.);Invariável a certas transformações geométricas (translação, rotação e escalamento);Um objecto é composto por uma ou mais células.

Estrutura geométrica (lista de pontos)Instância da estrutura topológica;Coordenadas dos pontos que constituem as células (vértices).

AtributosInformação complementar associada aos pontos e às células (ex. temperatura num ponto, massa de uma células, etc.)

objecto dataou dataset

Objectos data ou dataset

Page 55: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo de imagem do VTK

Pipeline de imagem – um caso especial do pipeline de visualização;Desenhado apenas para suportar dados do tipo vtkStructuredPoints (pontos estruturados);Um conjunto de pontos estruturados são dados distribuídos regularmente num array alinhado com o sistema de eixos;Conjunto de pontos 2D – imagens, mapas de pixéis (pixmaps) e mapas de bits (bitmaps);Conjunto de pontos 3D – volumes (uma pilha “stack” de imagens 2D - slices);Os filtros envolvidos têm sempre à entrada e à saída conjuntos de pontos estruturados;Devido à natureza regular dos dados:

Os dados podem ser “divididos em parcelas rectangulares”;O pipeline de imagem pode ser multithreaded.

Page 56: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de execução do VTK

Direcção do método Update()

Source Filter Mapper Actor

RenderModelo de Visualização Modelo Gráfico

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

Page 57: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

ObjectivoTransformar dados gráficos em imagens e representar no ecrã.

Reagrupa as características de um sistema gráfico 3D.Principais classes do modelo gráfico do VTK:

Render WindowRenderer

LightCameraActor

PropertyTransformMapper

Page 58: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

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

CâmaraLuzActor

Ecrã

Page 59: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

vtkRenderWindow

vtkCameravtkLightvtkActor

•vtkProperty•vtkMapper•vtkTransform

vtkRenderervtkRenderWindowInteractor

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

Page 60: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

1 vtkRenderWindow

vtkCamera2 vtkRenderer vtkLight

vtkActor(property, geometry (mapper), transformation, etc.)

Exemplo

Page 61: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Render Window

Renderer :

Actor : PropertyTransformMapper

CameraLight

Exemplo

Viewport

Page 62: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Gere a(s) janela(s) na qual serãorepresentados as imagens ou osobjectos gráficos;Assegura as funcionalidades pordefeito de uma janela windows; Independente dos dispositivos gráficos (hardware);Gere o agrupamento dos renders contidos na janela:

Vários renders podem ser agrupados numa mesma janela (render window) de forma a criar uma cena (imagem final).

Renderer

Modelo gráfico do VTK

Render Windows

Page 63: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Classe vtkRenderWindowMétodos:

Adicionar / remover um renderer:AddRenderer (vtkRenderer)RemoveRenderer (vtkRenderer)

Configuração do ecrã:FullScreenOn () / FullScreenOff ()BordersOn () / BordersOff ()

Page 64: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

RendererCoordena a(s) fonte(s) de luz, a câmara e os actores de forma a gerar a imagem de uma cena.Um cena é composta:

Pelo menos por um actor, uma câmara e uma fonte de luz;Se os objectos câmara e luz não são definidos, então são criados automaticamente pelo renderer.

Actor: o objecto visível

Câmara: determina a projecção da geometria 3D numa imagem 2D

Luz: representa e manipula a iluminação da cena (em 3D)

Page 65: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

MétodosAdicionar / remover actores e luzes:

AddActor (vtkActor) / RemoveActor (vtkActor)AddLight (vtkLight) / RemoveLight (vtkLight)

Determinar a câmara a utilizar na renderização:SetActiveCamera (vtkCamera)

Criar as imagens resultantes da renderização:Render

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

x

y

zx

y

Mundo Vista

Modelo gráfico do VTK

Classe vtkRenderer

Page 66: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Classe vtkLightMé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 ()

Page 67: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

MétodosDefinir / obter a posição da câmara em coordenadas mundo:

SetPosition (float ,float ,float ) / GetPosition ()Definir / obter a posição do ponto focal da câmara:

SetFocalPoint (float ,float ,float ) / GetFocalPoint ()Calcular a distância entre a posição da câmara e o seu ponto focal:

ComputeDistance ()

Direcção de projecçãoPonto focal

Posição

Plano anterior de clipping

Plano posterior de clipping

Modelo gráfico do VTK

Classe vtkCamera

Page 68: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

O objecto representado por umrenderer numa cena.Um actor não representadirectamente a sua geometrianem a sua aparência.

Tais características são definidasutilizando os objectos:

PropertyMapperTransform

ActorActor

Page 69: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Classe vtkActorMé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 *)

Page 70: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Classe vtkActorGeralmente, as propriedades e as transformações não são definidas explicitamente. Os seus valores são determinados durante a criação do actor.

Page 71: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

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 )

Property

Page 72: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

MapperLiga o modelo de visualização e o modelo gráfico.

Determina a geometria do actor.Combinação de pontos (nodos), linhas, polígonos, etc.

Definição da cor dos nodos (vértices).Faz referência a uma palete de cores.

Todos os actores devem ter um objecto mapperassociado de forma a serem representados no ecrã. Classes VTK : vtkMapper, vtkPolyDataMapper, vtkDataSetMapper.

Page 73: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Classe vtkPolyDataMapperMé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.)

Page 74: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

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

Page 75: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Classe Transform

Translação

Translação (tx,ty,tz)

xyzw

txtytz

xyz

''''

⎢⎢⎢⎢

⎥⎥⎥⎥

=

⎢⎢⎢⎢

⎥⎥⎥⎥

⎢⎢⎢⎢

⎥⎥⎥⎥

1 0 00 1 00 0 10 0 0 1 1

Escalamento

Escalamento (sx,sy,sz)

Ts

sxsy

sz=

⎢⎢⎢⎢

⎥⎥⎥⎥

0 0 00 0 00 0 00 0 0 1

Rotação

⎣ ⎦

TRx=−

⎡⎢⎢⎢⎢

⎤⎥⎥⎥⎥

1 0 0 00 00 00 0 0 1

cos sinsin cos

θ θθ θ

Rotação θ em torno de x

Page 76: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Modelo gráfico do VTK

Classe vtkTransformMé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 ()

Page 77: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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)

Page 78: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

ConexõesOs 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]

Page 79: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

PseudoPrograma Exemplo

Window

Renderer

Actor

Mapper

Geometry

Main() { create a window; create a renderer; give the renderer

to the window;create procedural geometry; create a mapper; give the geometry

to the mapper; create an actor; give the mapper to

the actor;

give the actor to the renderer; window->render();

}

Page 80: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

Exemplo de pipeline

Mace.tclvtkSphereSource

vtkPolyDataMapper

vtkConeSource

vtkGlyph3D

vtkPolyDataMapper(2 actores)

Page 81: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

Sources Filters Mappers

File Output

Props

vtkDataSet vtkDataSet

Uma source/filter pode ser ligada a mais do que um filter/mapper.

(continua...)

Page 82: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

Renderer RenderWindow

vtkCamera,vtkLight

(São criadospor defeito)

Props(ex. Actor/Volume)

Props

Props

vtkRenderWindowInteractor

vtkProperty

(...continuação)

Page 83: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

//Create the RenderWindow and RenderervtkRenderer *ren = vtkRenderer::New();

vtkRenderWindow *renWin = vtkRenderWindow::New();

renWin->AddRenderer(ren);

//Read in the DatavtkStructuredPointsReader *reader =

vtkStructuredPointsReader::New();

reader->SetFileName(“ironProt.vtk”);

#Create the RenderWindow, RenderervtkRenderer ren

vtkRenderWindow renWin

renWin AddRenderer ren

# Read in the DatavtkStructuredPointsReader reader

reader SetFileName “ironProt.vtk”

C++ Tcl

Exemplo: Criação de uma isosuperfície de uma proteína

Page 84: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

//Setup the pipelinevtkContourFilter *iso =

vtkContourFilter::New();

iso->SetInput(reader->GetOutput());iso->SetValue(0, 128.0f);

vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New();

isoMapper->SetInput(iso->GetOutput());isoMapper->ScalarVisibilityOff();

# Setup the pipelinevtkContourFilter iso

iso SetInput [reader GetOutput]iso SetValue 0 128

vtkPolyDataMapper isoMapper

isoMapper SetInput [iso GetOutput]isoMapper ScalarVisibilityOff

Page 85: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

//Terminate the pipelinevtkActor *isoActor = vtkActor::New();

isoActor->SetMapper(isoMapper);

//Set the color of the ActorvtkProperty *prop =

isoActor->GetProperty();prop->SetColor(1, 0, 0);

//Add the Actor to the rendererren->AddActor(isoActor);

//Render the imagerenWin->Render();

# Terminate the pipelinevtkActor isoActor

isoActor SetMapper isoMapper

# Set the color of the ActorvtkProperty prop

set prop [isoActor GetProperty]prop SetColor 1 0 0

# Add the Actor the the rendererren AddActor isoActor

# Render the imagerenWin Render

C++ Tcl...Exemplo: Criação de uma isosuperfície de uma proteína

Page 86: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK... Exemplo: Criação de uma isosuperfície de uma proteína

Imagem resultante

Page 87: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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

Page 88: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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

Page 89: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

Interacção com o utilizadorA classe vtkRenderWindowInteractor permite que o utilizador interaja com os objectos gráficos; por exemplo:

Teclas pressionadas: w: modo wireframe;s: modo surface;r: reset da transformação;3: comutar para modo stereo; c/o: modo câmera ou modo objecto;j/t: modo joystick ou modo trackball; e: sair da aplicação.Botões do rato:botão 3 (dir.): zoom; botão 2: pan; botão 1 (esq.): rotate.

Page 90: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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

Page 91: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Pipeline de visualização do VTK

vtkSphereSource spheresphere SetRadius 5sphere SetThetaResolution 36sphere SetPhiResolution 18

vtkPolyDataMapper isoMapperisoMapper SetInput [sphere GetOutput]isoMapper ScalarVisibilityOn

vtkActor isoActorisoActor SetMapper isoMappereval [isoActor GetProperty] SetColor 0 0 0.8

vtkRenderer ren1ren1 AddActor isoActorren1 SetBackground 1 1 1

vtkRenderWindow renWinrenWin AddRenderer ren1renWin SetSize 500 500

vtkRenderWindowInteractor ireniren SetRenderWindow renWiniren Initialize

Source

Mapper

Actor

Renderer

Render Window

Exem

plo

(Tcl

):

Page 92: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Células

Átomos que constituem um conjunto de dados;Uma célula é uma organização topológica de pontos (coordenadas x, y, z); Definidas por:

Tipo;Lista ordenadade pontos.

Malha = lista de triângulos

Triângulo = lista de pontos

ObjectoCélula

0

1

3

2

TetraedroHexaedro

0 1

34

5

67

2

Page 93: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Tipos de células

Vertex

Polyvertex

Line

Polyline

Triangle

Triangle Strip

Quadrilateral

Pixel

Polygon

Tetrahedron

Hexahedron

Voxel

Page 94: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Tipos de células

Classe vtkCell definida no VTK 4.2

Page 95: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Conjuntos de dados

Grelha rectangular(Rectilinear Grid)

Pontos estruturados(Structured Points)

Pontos não estruturados(Unstructured Points)

Grelha não estruturada(Unstructured Grid)

Grelha estruturada(Structured Grid)

Dados poligonais(Polygonal Data)

Page 96: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Conjuntos de dados

vtkStructuredPointsImagens 2D e 3D

Pontos estruturados Grelha rectangularvtkRectilinearGridMalha rectangular

vtkStructuredGridMalha 2D

Grelha estruturada Dados poligonaisvtkPolyDataPontos, linhas,polígonos

vtkUnstructuredGridMalhas 2D/3D não estruturadas

Grelha não estruturada

(classes vtk para conjuntos de dados e exemplos de utilização)

Page 97: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Conjuntos de dados

Classe vtkDataSet definida no VTK 4.2

Page 98: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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

Page 99: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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.

Page 100: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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.

Page 101: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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

Page 102: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

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.

Page 103: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Exemplos de malhas

As células podem ter diferentes formas e tamanhos:2D : triângulos, quadriláteros, ...3D : tetraedros, hexaedros, pirâmides, …

As malhas podem conter um ou mais tipo de células.

Page 104: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Escalars Norma e

direcção (3D)

Vector

(u,v,w)Direcção (3D)

Normal

(nx,ny,nz)|n| = 1

Valor simples

Correspondência entre um índice e uma tabela de texturas

Coordenadas de textura

s

t2D: (u,v)3D: (u,v,w)

Matriz (n x n)

Tensor

a11 a12 a13a21 a22 a23a31 a32 a33

Tabela de dados

Tabela de arraysCada array pode serde tipo diferente

Array 0 Array 1 Array n-1. . .

Page 105: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Tipos de atributos associados aos pontos e às células

Informação associada a cada vértice de uma célula:

Escalares (scalars): por exemplo, temperatura, pressão, ...;Vectores (vector): por exemplo, velocidades, acelerações, ...;Normais (normals): vectores normais àsuperfície;Coordenadas de textura (texture coordinates): gráficos específicos;Tensores (tensors): matrizes.

Page 106: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Tipos de atributos associados aos pontos e às célulasClasses vtkFieldDataSet e vtkDataSetAtributes definidas no VTK 4.2

Page 107: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Dados suportados no VTK: Tipos de atributos associados aos pontos e às célulasClasse vtkDataArraydefinida no VTK 4.2

Utilizada para arrays de dados de determinado tipo.

Page 108: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Formato de ficheiros do VTK

# vtk DataFile Version X.0 HeaderCool data TitleASCI I BINARY Data TypeDATASET type Geometry

type is one of:STRUCTURED_POINTSSTRUCTURED_GRIDRECTILINEAR_GRIDUNSTRUCTURED_GRIDPOLYDATAFIELD

POINT_DATA n Dataset attributes…CELL_DATA n… (Ver o documento VTK File Format em

http://www.vtk.org/pdf/file-formats.pdf)

Page 109: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Formato de ficheiros do VTK

# vtk DataFile Version 3.0vtk outputASCIIDATASET POLYDATAPOINTS 119 float197 192 53 196 186 53 201 188 51 161 192 55 168 192 45 165 197 39 ...POLYGONS 219 8763 0 1 2 3 3 4 5 3 6 7 8 ...

POINT_DATA 119SCALARS scalars floatLOOKUP_TABLE default53 53 51 55 45 39 71 69 76 61 68 58 40 62 37 40 65 36 ...

Exem

plo

Page 110: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Formato de ficheiros do VTK# vtk DataFile Version 3.0vtk outputASCIIDATASET POLYDATAPOINTS 16 float0.367063 0 0.333333 0.350198 0.040716 0.333333 0.259553 0.259553 0.333333 0.218837 0.276418 0.333333 -1.60449e-008 0.367063 0.333333 -0.040716 0.350198 0.333333 -0.259553 0.259553 0.333333 -0.276418 0.218837 0.333333 -0.367063 -3.20897e-008 0.333333 -0.350198 -0.040716 0.333333 -0.259553 -0.259553 0.333333 -0.218837 -0.276418 0.333333 4.37719e-009 -0.367063 0.333333 0.040716 -0.350198 0.333333 0.259553 -0.259553 0.333333 0.276418 -0.218837 0.333333 LINES 16 482 0 1 2 1 2 2 2 3 2 3 4 2 4 5 2 5 6 2 6 7 2 7 8 2 8 9 2 9 10 2 10 11 2 11 12 2 12 13 2 13 14 2 14 15 2 15 0

POINT_DATA 16SCALARS scalars floatLOOKUP_TABLE default0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333

Exem

plo

Page 111: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Formato de ficheiros do VTK

# vtk DataFile Version 2.0A Simple Matrix of valuesASCIIDATASET STRUCTURED_POINTSDIMENSIONS 10 5 1ORIGIN 0 0 0SPACING 1 1 1

POINT_DATA 50SCALARS values floatLOOKUP_TABLE default0 0 0 0 0 0 0 0 0 00 1 1 0 0 0 0 0 0 00 1 1 1 0 0 0 0 0 00 0 1 1 1 1 1 0 0 00 0 0 0 0 0 0 0 0 0

Exem

plo

Page 112: Introdução ao VTK - paginas.fe.up.ptpaginas.fe.up.pt/~tavares/ensino/VISCI/Downloads/Apontamentos... · linguagens Tcl/Tk, Java, e Python. ... modelamento avançado como o modelamento

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

Formato de ficheiros do VTK# vtk DataFile Version 1.0Line representation of vtkASCII

DATASET POLYDATAPOINTS 12 float0.0 2.0 0.01.0 0.0 0.02.0 2.0 0.03.0 0.0 0.03.0 3.0 0.02.5 2.0 0.03.5 2.0 0.04.0 0.0 0.04.0 3.0 0.05.0 2.0 0.04.0 1.0 0.05.0 0.0 0.0

LINES 5 173 0 1 22 3 42 5 62 7 83 9 10 11

Exem

plo