Buscar

aulas vtk

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 18 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

VTK - Visualization Toolkit
Prof. Roge´rio Eduardo da Silva
2005
Suma´rio
1 Conceitos Ba´sicos 2
1.1 O que e´ o VTK? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Instanciamento de Objetos com VTK . . . . . . . . . . . . . . . . . . . 3
1.2 Pipeline de Visualizac¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Surface Rendering e Volume Rendering . . . . . . . . . . . . . . . . . . 4
1.3 Instalando o VTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 A partir dos Arquivos Fontes . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 A partir dos Arquivos Bina´rios Pre´-Compilados . . . . . . . . . . . . . 6
1.4 Criando a Primeira Aplicac¸a˜o VTK . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.1 Desenvolvendo uma Aplicac¸a˜o Console . . . . . . . . . . . . . . . . . . 6
2 Transformac¸o˜es Geome´tricas 11
3 Rendering 12
4 Modelagem Geome´trica 13
5 Animac¸o˜es Computacionais 14
i
Lista de Figuras
1.1 Pipeline de Visualizac¸a˜o do VTK . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Tipos de Rendering - (a) Surface Rendering (b) Volume Rendering . . . . . . . 4
1.3 Interface CMake 2.2 beta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Assistente de Instalac¸a˜o para Windows . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Primeira Aplicac¸a˜o com VTK . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Criando um Projeto Console em MSVC 6.0 . . . . . . . . . . . . . . . . . . . . 9
1.7 Criando um novo arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.8 Configurac¸o˜es de Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
ii
Apresentac¸a˜o
Esta apostila foi elaborada para servir como material de apoio para desenvolvimento dos
trabalhos pra´ticos nas disciplinas do curso de Cieˆncia da Computac¸a˜o da UDESC; principal-
mente para Computac¸a˜o Gra´fica (CGR), Modelagem Geome´trica (MOG) e Processamento
Digital de Imagens (PDI), podendo ser extens´ıvel a outras disciplinas.
O material aqui apresentado e´ retirado de diversas fontes (que sera˜o citadas no decorrer
do texto) na˜o devendo servir como u´nica fonte de refereˆncia do acadeˆmico. Uma boa
refereˆncia inicial e´ o livro oficial da ferramenta VTK [Schroeder, Martin e Lorensen 2003].
O enfoque apresentado e´ o de tutoriais (programa exemplo) seguindo a mesma ordem do
conteu´do programa´tico da disciplina de computac¸a˜o gra´fica.
Os co´digos fonte apresentados nesta apostila podem ser encontrados no seguinte site:
http://www.joinville.udesc.br/portal/professores/rogerio. Tais programas foram
testados e compilados utilizando a ferramenta Microsoft Visual Studio (MSVC++ 6.0). Ou-
tra refereˆncia importante para o acadeˆmico e´ o pro´prio site do desenvolvedor do VTK:
Kitware, dispon´ıvel em http://www.kitware.com e da pro´pria biblioteca VTK dispon´ıvel
em http://www.vtk.org. Neste u´ltimo URL, o acadeˆmico pode ainda se cadastrar no fo´rum
de e-mails (em ingleˆs) da Kitware, composta atualmente por milhares de desenvolvedores
do mundo todo, para onde podem ser submetidas du´vidas que (geralmente) sa˜o respondidas
rapidamente pela comunidade acadeˆmica.
O material e´ dividido em 5 cap´ıtulos:
1. Conceitos Ba´sicos
2. Transformac¸o˜es geome´tricas
3. Rendering
4. Modelagem Geome´trica
5. Animac¸o˜es Computacionais
Bons Estudos!
Prof. Roge´rio
1
Cap´ıtulo 1
Conceitos Ba´sicos
Neste cap´ıtulo sera˜o apresentados conceitos introduto´rios sobre a ferramenta Visualization
Toolkit - VTK. Ao final do cap´ıtulo o estudante sera´ capaz de:
• Entender o que e´ o VTK?
• Entender a estrutura de funcionamento e a hierarquia de classes da biblioteca
• Criar um projeto ba´sico para desenvolvimento de aplicac¸o˜es console com VTK
• Criar um projeto WIN32 para desenvolvimento de aplicac¸o˜es Windows 9x
• Criar um projeto MFC (Microsoft Foundation Class) para aplicac¸o˜es com interface
gra´fica usando VTK
• Criar um projeto Java para desenvolvimento de aplicac¸o˜es Web
• Criar uma aplicac¸a˜o com VTK utilizando a linguagem script Tcl/Tk
Todos os exemplos apresentados neste material funcionam em qualquer uma das verso˜es de
desenvolvimento de aplicac¸o˜es apresentadas anteriormente, desta forma cabe ao leitor escolher
a melhor ferramenta de desenvolvimento segundo suas necessidades.
1.1 O que e´ o VTK?
VTK e´ o acroˆnimo para Visualization Toolkit , ou seja, e´ uma biblioteca desenvolvida
no paradigma orientado a objetos que implementa diversas func¸o˜es gra´ficas de computac¸a˜o
gra´fica e visualizac¸a˜o. Pode-se desenvolver aplicac¸o˜es com VTK em C++, TCL/TK ou Java,
tanto para o sistema operacional Microsoft Windows quanto para Linux.
O paradigma de programac¸a˜o orientado a objetos (OO) difere da programac¸a˜o estruturada
convencional pois esta cria uma abstrac¸a˜o apenas para os dados, enquanto que na OO a
abstrac¸a˜o engloba os dados e as operac¸o˜es aplica´veis a estes.
Para efeito de entendimento dos tutoriais apresentados neste material, supo˜e-se que o
leitor seja familiarizado com os preceitos de programac¸a˜o orientada a objetos. Se este na˜o for
o caso, sugere-se a leitura de livros de programac¸a˜o antes de tentar esta apostila.
2
1.1.1 Instanciamento de Objetos com VTK
Em VTK tudo sa˜o objetos. As principais funcionalidades da ferramenta esta˜o desenvolvidas
em hierarquia de classes que, para serem utilizadas, devem ser previamente instanciadas em
objetos e parametrizados seus atributos (os quais a maoria das vezes ja´ apresentam valores
iniciais).
O processo de instanciac¸a˜o de um objeto e´ sempre realizado por um me´todo pro´prio
denominado New(), que e´ uma func¸a˜o esta´tica necessa´ria para a criac¸a˜o de qualquer ob-
jeto. Assim por exemplo, para se criar um objeto da classe vtkActor, utiliza-se o comando
vtkActor::New(), conforme e´ apresentado no exemplo a seguir:
vtkActor * ator = vtkActor::New();
1.2 Pipeline de Visualizac¸a˜o
O processo de visualizac¸a˜o de objetos (chamado de rendering1) em VTK consiste da criac¸a˜o
de um pipeline de visualizac¸a˜o que define a “espinha dorsal” de todo processo de gerac¸a˜o
de imagens. Um pipeline de visualizac¸a˜o usual consiste dos seguintes passos:
Modelagem especificac¸a˜o da origem dos dados que descrevem os objetos que compo˜em a
cena a ser visualizada
Mapeamento especificac¸a˜o da func¸o˜es de mapeamento da geometria de um objeto
Atores um ator e´ um objeto renderiza´vel na cena. E´ definido a partir de uma dada func¸a˜o
de mapeamento de geometria
Renderizador um renderizador e´ responsa´vel por transformar um objeto (ou conjunto de
objetos) em uma imagem atrave´s das te´cnicas tradicionais de computac¸a˜o gra´fica
Janela de Visualizac¸a˜o uma janela de visualizac¸a˜o e´ (geralmente) um formula´rio onde o
renderizador ira´ reproduzir o resultado do processo de rendering
Agente de Interac¸a˜o responsa´vel por receber e tratar interac¸o˜es (eventos) do usua´rio, como
cliques de mouse, teclas pressionadas, etc., na janela de visualizac¸a˜o.
O objeto agente de interac¸a˜o na˜o e´ necessariamente obrigato´rio; apenas nas aplicac¸o˜es
onde se deseja ter um modo de acesso ra´pido a ac¸o˜es do usua´rio. Existem outras formas de se
acessar tais entradas, como por exemplo criar uma aplicac¸a˜o utilizando os recursos da pro´pria
API - Application Programming Interface conforme sera´ descrito na sec¸a˜o ???.
1O termo rendering engloba um conjunto de te´cnicas responsa´veis por transformar de dados em imagens
2D ou 3D
3
Origem dos
Dados
Mapeador Ator Renderizador
Janela de
Renderização
Agente de
Interação
Figura 1.1: Pipeline de Visualizac¸a˜o do VTK
1.2.1 Surface Rendering e Volume Rendering
Existem duas classes de te´cnicas de rendering suportadas pelo VTK: surface rendering
(figura 1.2(a))onde os objetos que compo˜em a cena a ser renderizada sa˜o descritos a partir
de superf´ıcies (geralmente malhas poligonais) ocas (sem informac¸a˜o acerca do interior dos
objetos). Esta te´cnica e´ interessante em aplicac¸o˜es cujo objetivo principalmente e´ apresentar
objetos (sua apareˆncia), tais como: animac¸o˜es e jogos computacionais. Ja´ a te´cnica volume
rendering (figura 1.2(b)), representa cada objeto como um conjunto de pontos de um volume
tridimensional qualquer. Essa te´cnica e´ mais complexa computacionalmente por armazenar
uma grande quantidade de informac¸a˜o acerca de cada objeto, pore´m e´ u´til em aplicac¸o˜es onde
o conteu´do interno dos objetos e´ uma informac¸a˜o importante como em aplicac¸o˜es me´dicas
(ana´lise de tomografias computadorizadas, p.ex.) e simulac¸o˜es cient´ıficas.
(a) (b)
Figura 1.2: Tipos de Rendering - (a) Surface Rendering (b) Volume Rendering
Este material apresentara´ exemplos em ambas as te´cnicas de rendering, pore´m o enfoque
para a grande maioria dos tutoriais sera´ para aplicac¸o˜es de real-time rendering utilizando a
te´cnica surface rendering.
A pro´xima sec¸a˜o apresenta as diferentes formas de instalac¸a˜o do VTK.
1.3 Instalando o VTK
1.3.1 A partir dos Arquivos Fontes
O processo de instalac¸a˜o do VTK a partir dos arquivos fontes segue os seguintes passos:
1. Efetuar o download do arquivos fontes na pa´gina do VTK
(http://www.vtk.org/get-software.php)
4
2. Descompactar os arquivos fontes em uma pasta de sua prefereˆncia
3. Efetuar o download em http://www.cmake.org/HTML/Download.html, do sistema de
compilac¸a˜o de bibliotecas CMake para a plataforma desejada: Windows, Linux, etc.
4. Executar o programa CMake2 (figura 1.3) e preencha os dados solicitados:
(a) Em “Where is the source code” digite o caminho onde foram instalados os co´digos
fontes do VTK (no passo 2) ou clique no bota˜o Browse e selecione o caminho.
(b) Em “Where to build the binaries” digite o caminho onde devem ser gerados os
arquivos compilados (se este na˜o existir o CMake ira´ cria´-lo) ou clique no bota˜o
Browse e selecione o caminho.
(c) Clique no bota˜o Configure e na janela de selec¸a˜o da ferramenta de compilac¸a˜o
desejada (ver figura menor em detalhe) clique em OK. Sera˜o criadas as diretivas
de compilac¸a˜o segundo em func¸a˜o da ferramenta escolhida.
(d) Altere o valor das diretivas (se desejar) e clique novamente no bota˜o Configure
(e) Clique no bota˜o OK para gerar o arquivo de compilac¸a˜o (makefile).
(f) Compile o arquivo gerado (ele esta´ no direto´rio especificado no passo 4b), p.ex.:
vtk.sln para o MS Visual Studio .NET.
Figura 1.3: Interface CMake 2.2 beta
DICA: Nas pa´ginas oficiais do VTK e CMake na internet, podem ser encontradas ins-
truc¸o˜es mais detalhadas caso seja necessa´rio.
2A interface pode variar em func¸a˜o da versa˜o e/ou sistema operacional escolhidos
5
1.3.2 A partir dos Arquivos Bina´rios Pre´-Compilados
O processo de instalac¸a˜o do VTK a partir dos arquivos bina´rios pre´-compilados e´ um processo
mais ra´pido (pois elimina-se o tempo de compilac¸a˜o da biblioteca), pore´m ate´ o momento esta´
dispon´ıvel apenas para Windows (para MS Visual Studio). Segue os seguintes passos:
1. Efetuar o download do arquivo de instalac¸a˜o (vtk42-LastestRelease.exe) na pa´gina
do VTK (http://www.vtk.org/get-software.php)
2. Execute o arquivo de instalac¸a˜o
3. O assistente de instalac¸a˜o ira´ guia´-lo no processo de instalac¸a˜o (figura 1.4).
Figura 1.4: Assistente de Instalac¸a˜o para Windows
1.4 Criando a Primeira Aplicac¸a˜o VTK
A primeira aplicac¸a˜o completa com VTK a ser apresentada ira´ respeitar o pipeline de vi-
sualizac¸a˜o apresentado em 1.2. Apesar de o VTK permitir o desenvolvimento de aplicac¸o˜es
em diferentes linguagens de programac¸a˜o: C++, Java, Tcl/Tk, Python, etc., iremos adotar
o C++ para os exemplos dessa apostila. No manual da documentac¸a˜o do VTK e´ poss´ıvel
encontrar exemplos de codificac¸a˜o nas outras linguagens.
A aplicac¸a˜o exemplo cone.cpp consiste simplesmente de um cone cinza claro em um fundo
preto e o agente de interac¸a˜o dispon´ıvel, conforme e´ apresentado na figura 1.5.
1.4.1 Desenvolvendo uma Aplicac¸a˜o Console
O desenvolvimento de uma aplicac¸a˜o console consiste de todos os passos apresentados na
sec¸a˜o 1.2. Sa˜o utilizados os seguintes comandos para tal:
6
Figura 1.5: Primeira Aplicac¸a˜o com VTK
vtkRenderer objeto que implementa as te´cnidas tradicionais de rendering da computac¸a˜o
gra´fica
vtkRenderWindow objeto de criac¸a˜o e manipulac¸a˜o de janelas (onde sera´ renderizada a
cena definida no objeto vtkRenderer)
vtkRenderWindowInteractor objeto de interac¸a˜o com o usua´rio. Captura eventos do
usua´rio (como cliques de mouse, teclas pressionadas. etc) e responde atualizando
paraˆmetros nos objetos da cena
vtkConeSource objeto que define a origem de dados para uma primitiva gra´fica cone
vtkPolyDataMapper define um objeto que mapeia uma dada origem de dados para uma
malha de pol´ıgonos
vtkActor objeto ator a ser renderizado. E´ definido a partir de um certo mapeador de
pol´ıgonos.
O co´digo fonte que ilustra esse pipeline e´ apresentado a seguir:
/*
VTK1.CPP
Criac¸~ao do framework de visualizac¸~ao do VTK em modo console
Seque^ncia do pipeline de visualizac¸~ao:
CubeSource -> PolyDataMapper -> Actor -> Renderer -> RenderWindow <- RenderWindowInteractor
Outubro, 2005
Roge´rio Eduardo da Silva
*/
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkConeSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
7
void main(void)
{
vtkRenderer * rdr = vtkRenderer :: New();
rdr->SetBackground(0.0f,0.0f,0.0f); // cor de fundo: preto
vtkRenderWindow * rw = vtkRenderWindow :: New();
rw->AddRenderer(rdr); // conecta Renderer -> RenderWindow
rw->SetSize(500,500); // tamanho da janela de visualizac¸~ao
vtkRenderWindowInteractor * rwi = vtkRenderWindowInteractor::New();
rwi->SetRenderWindow(rw); // conecta RenderWindowInteractor -> RenderWindow
vtkConeSource * cone = vtkConeSource::New(); // define um cone
cone->SetRadius(2); // raio
cone->SetHeight(3); // altura
cone->SetResolution(10); // resoluc¸~ao da base
vtkPolyDataMapper * mapaCone = vtkPolyDataMapper::New();
mapaCone->SetInput(cone->GetOutput()); // cria malha poligonal a partir do cone gerado
vtkActor * ator = vtkActor::New();
ator->SetMapper(mapaCone); // conecta mapper -> actor
ator->SetPosition(-5,0,0); // coordenadas do centro do ator (SRU)
rdr->AddActor(ator); // conecta Actor -> Renderer
rwi->Initialize(); // inicializa interactor
rwi->Start(); // executa interactor
// desaloca memo´ria dos objetos criados anteriormente
cone->Delete();
mapaCone->Delete();
ator->Delete();
rdr->Delete();
rw->Delete();
rwi->Delete();
}
Compilando um Projeto em MS-Visual Studio 6.0
O processo de criac¸a˜o de um projeto console na ferramenta Microsoft Visual Studio 6.0 e´:
1. Selecione o menu File | New e escolha Projects | Win32 Console Application
(conforme a figura 1.6(a))
2. Em “Project Name” escolha um nome para o projeto e em “Location” escolha o ca-
minho onde o projeto sera´ criado. Clique em OK.
3. A seguir escolha o tipo de aplicac¸a˜o que deseja criar (figura 1.6(b)). Escolha “An empty
project” para criar uma aplicac¸a˜o vazia (nenhum arquivo pre´-definido). Clique em
Finish.
4. Finalizando, na janela apresentada em 1.6(c) confirme a criac¸a˜o do novo projeto console
solicitado clicando no bota˜o OK.
5. O novo projeto esta´ criado.
8
(a) (b) (c)
Figura 1.6: Criando um Projeto Console em MSVC 6.0
Uma vez criado um projeto, pode-se acrescentar arquivos ao mesmo de duas formas:
• Selecione o menu Project | Add Files to Project | Files ... para adicionar ar-quivos pre´ existentes ou
• Criando um novo arquivo em branco atrave´s do menu File | New e selecionando Files
| C++ Source File (conforme a figura 1.7). Em “File name” digite o nome desejado
para o novo arquivo e em “Location” selecione o caminho onde sera´ criado o arquivo
(usualmente utiliza-se o mesmo direto´rio do projeto criado anteriormente). Por fim,
clique em OK.
Figura 1.7: Criando um novo arquivo
Apo´s o projeto e os arquivos fontes terem sido criados, e´ necessa´rio configurar os paraˆme-
tros de compilac¸a˜o do projeto, conforme os seguintes passos:
1. No menu Tools | Options, selecione a guia Directories (figura 1.8)
2. Selecione em “Show directories for” a opc¸a˜o Include files
3. Inclua na sec¸a˜o Directories a linha “<caminho>/include/vtk”, onde <caminho> in-
dica o caminho onde o VTK foi instalado em seu computador3
3Usualmente C:\ARQUIVOS DE PROGRAMAS\VTK42\
9
4. No menu Projects | Settings escolha a guia Link e em Category escolha General
5. Na opc¸a˜o “Object/library modules” acrescente a lista de arquivos lib necessa´rios a
sua aplicac¸a˜o4. Clique em OK.
6. No menu Build | Build project (tecla F7) compile e execute o projeto.
Figura 1.8: Configurac¸o˜es de Projeto
4Os arquivos necessa´rios dependem de quais objetos do VTK foram utilizados. Os programas mais simples
utilizam: vtkCommon.lib vtkRendering.lib vtkGraphics.lib e vtkImaging.lib. A lista completa esta´
dispon´ıvel na pasta lib da instalac¸a˜o do VTK
10
Cap´ıtulo 2
Transformac¸o˜es Geome´tricas
11
Cap´ıtulo 3
Rendering
12
Cap´ıtulo 4
Modelagem Geome´trica
13
Cap´ıtulo 5
Animac¸o˜es Computacionais
14
Refereˆncias Bibliogra´ficas
[Schroeder, Martin e Lorensen 2003]SCHROEDER, W.; MARTIN, K.; LORENSEN, B. The
Visualization Toolkit - An Object-Oriented Approach to 3D Graphics. 2a edic¸a˜o. [S.l.]: Pren-
tice Hall, 2003.
15

Outros materiais