visualization toolkit (vtk) part iguanw/course/vtk1.pdfvtk/imaging – image processing filters...

26
RHPCS, ABB 131-G RHPCS, ABB 131-G Email: [email protected] Email: [email protected] Phone: 905-525-9140 x 22540 Phone: 905-525-9140 x 22540 Visualization ToolKit (VTK) Visualization ToolKit (VTK) Part I Part I Weiguang Guan Weiguang Guan

Upload: others

Post on 09-Oct-2020

41 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

RHPCS, ABB 131-GRHPCS, ABB 131-GEmail: [email protected]: [email protected]: 905-525-9140 x 22540Phone: 905-525-9140 x 22540

Visualization ToolKit (VTK)Visualization ToolKit (VTK)Part IPart I

Weiguang GuanWeiguang Guan

Page 2: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

OutlineOutline

■ OverviewOverview■ InstallationInstallation■ Typical structure of a VTK Typical structure of a VTK

applicationapplication■ Visualization pipelineVisualization pipeline■ VTK sceneVTK scene

Page 3: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

OverviewOverview

■ Higher-level visualization library or Higher-level visualization library or APIAPI

■ Open source – Open source – www.vtk.orgwww.vtk.org■ Major contributorsMajor contributors

◆ Kitware incKitware inc◆ GEGE◆ Sandia National LabSandia National Lab◆ Los Alamos National LabLos Alamos National Lab

■ Thousands users from industry and Thousands users from industry and research institutesresearch institutes

Page 4: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

OverviewOverview

■ Multiple platforms – Unix, MacOs, Multiple platforms – Unix, MacOs, WindowsWindows

■ 1130 C++ classes1130 C++ classes■ Java, Python, Tcl wrappersJava, Python, Tcl wrappers

◆ Performance compared with using Performance compared with using VTK’s C++ interfaceVTK’s C++ interface

◆ Faster development cycleFaster development cycle◆ Fast prototypingFast prototyping

■ Last release 5.0.2Last release 5.0.2

Page 5: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

OverviewOverview

■ ArchitectureArchitecture

VTK Core

Compiled C++ classes

Interpreted

WrapperFor Java

InterpretedWrapper

for PythonInterpretedWrapperFor Tcl

C++ code

Python script

Tcl script

Java script

Page 6: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

OverviewOverview

■ DocumentationDocumentation◆ Online manual: Online manual:

www.vtk.org/doc/release/5.0/html/www.vtk.org/doc/release/5.0/html/◆ The Visualization Toolkit User’s GuideThe Visualization Toolkit User’s Guide◆ The Visualization Toolkiit, An Object-The Visualization Toolkiit, An Object-

Oriiented Approach To 3D GraphicsOriiented Approach To 3D Graphics◆ Mailing list: Mailing list: [email protected]@vtk.org◆ VTK wiki: VTK wiki: www.vtk.org/Wiki/VTKwww.vtk.org/Wiki/VTK◆ Professional supports from Kitware inc Professional supports from Kitware inc

Page 7: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

OverviewOverview

■ Related softwareRelated software◆ ITK: ITK: www.itk.orgwww.itk.org◆ CMake: CMake: www.cmake.orgwww.cmake.org◆ ParaView: ParaView: www.paraview.orgwww.paraview.org

Page 8: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

InstallationInstallation

■ VTK Source directoryVTK Source directory◆ VTK/Common – Core classesVTK/Common – Core classes◆ VTK/Filtering – Pipeline implementation VTK/Filtering – Pipeline implementation

superclassessuperclasses◆ VTK/GenericFiltering – Adaptor VTK/GenericFiltering – Adaptor

frameworkframework◆ VTK/Graphics – Filter classes that VTK/Graphics – Filter classes that

process 3D dataprocess 3D data◆ VTK/Hybrid – Complex classes VTK/Hybrid – Complex classes

depending on graphics & imagingdepending on graphics & imaging◆ VTK/Imaging – Image processing filtersVTK/Imaging – Image processing filters◆ VTK/IO – Reading/Writing dataVTK/IO – Reading/Writing data

Page 9: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

InstallationInstallation

◆ VTK/Paralell – Paralell processingVTK/Paralell – Paralell processing◆ VTK/Rendering – Rendering geometric VTK/Rendering – Rendering geometric

datadata◆ VTK/Utilities – Utility librariesVTK/Utilities – Utility libraries◆ VTK/VolumeRendering – Rendering VTK/VolumeRendering – Rendering

volume datavolume data◆ VTK/Widgets – Interactive graphical VTK/Widgets – Interactive graphical

objectsobjects◆ VTK/Wrapping – Script language binderVTK/Wrapping – Script language binder

Page 10: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

InstallationInstallation

■ CMake: CMake: www.cmake.orgwww.cmake.org◆ Cross-platformCross-platform◆ Open SourceOpen Source◆ Out-of-place build Out-of-place build

■ CMake configure for VTKCMake configure for VTK◆ Wrapper for Java, Python, TclWrapper for Java, Python, Tcl◆ Shared or static libShared or static lib◆ Specify C/C++ compilersSpecify C/C++ compilers◆ Specify path include paths and libs Specify path include paths and libs

Page 11: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

InstallationInstallation

Page 12: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

InstallationInstallation

■ Usage: Usage: ◆ cd build_dircd build_dir◆ ccmake source_dirccmake source_dir◆ Configure VTK build with cmakeConfigure VTK build with cmake◆ make make ◆ make installmake install

Page 13: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

Typical StructureTypical Structure

package require vtkvtkConeSource conecone SetHeight 3.0

vtkPolyDataMapper coneMapperconeMapper SetInputConnection [cone

GetOutputPort]

vtkActor coneActorconeActor SetMapper coneMapper

vtkRenderer ren1 ren1 AddActor coneActor

vtkRenderWindow renWinrenWin AddRenderer ren1renWin SetSize 300 300

vtkRenderWindowInteractor ireniren SetRenderWindow renWiniren Initialize

Page 14: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

Typical StructureTypical Structure

Tcl script:

package require vtk

vtkConeSource cone

cone SetHeight 3.0

vtkPolyDataMapper coneMapper

coneMapper SetInputConnection

[cone GetOutputPort]

vtkActor coneActor

coneActor SetMapper coneMapper

vtkRenderer ren1

ren1 AddActor coneActor

vtkRenderWindow renWin

renWin AddRenderer ren1

renWin SetSize 300 300

vtkRenderWindowInteractor ireniren SetRenderWindow renWin

iren Initialize

C++ code:

#include “vtkConeSource.h”

#include “vtkPolyDataMapper.h”

#include “vtkActor.h”

#include “vtk

vtkConeSource *cone = vtkConeSource::New();

Cone->SetHeight(3.0);

vtkPolyDataMapper *coneMapper;

coneMapper = vtkPolyDataMapper::New();coneMapper->SetInputConnection

(cone->GetOutputPort());

……

……

Page 15: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

Visualization PipelineVisualization Pipeline

■ DataData◆ Dimensions: 2D, 3D, 4D …Dimensions: 2D, 3D, 4D …◆ Type: Type:

✦ Geometric data (points, lines, polygons)Geometric data (points, lines, polygons)✦ Discrete data (samplings of properties in n-Discrete data (samplings of properties in n-

D space)D space)

◆ Data properties:Data properties:✦ Scalar (density, temperature, etc)Scalar (density, temperature, etc)✦ Vector (velocity, momentum, etc)Vector (velocity, momentum, etc)✦ TensorTensor

Page 16: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

Visualization PipelineVisualization Pipeline

◆ Topology and geometry of sampling data Topology and geometry of sampling data

irregularirregularirregularirregularpartially partially regularregular

regularregularGeometrGeometryy

irregularirregularregularregularregularregularregularregularTopologyTopology

UnstructureUnstructuredd

CurvilineaCurvilinearr

RectilineaRectilinearr

Image Image datadata

Page 17: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

Visualization PipelineVisualization Pipeline

■ Dataset is a viewable itemDataset is a viewable item■ Processing modulesProcessing modules

◆ Source – data file reader or graphical Source – data file reader or graphical primitivesprimitives

◆ Filter – processing moduleFilter – processing module

Filter Input data Output data

Source Output data

Page 18: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

Visualization PipelineVisualization Pipeline

■ Visualization pipeline: Visualization pipeline: Source Source Filter#1 Filter#1 Filter#2 Filter#2 ……

Filter#NFilter#N

Filter_1->SetInputConnection(Source-Filter_1->SetInputConnection(Source-> GetOutputPort());> GetOutputPort());

Filter_2->SetInputConnection(Filter_1-Filter_2->SetInputConnection(Filter_1-> GetOutputPort());> GetOutputPort());

…………

Data0

Rendering

Data1

Rendering

Data

Rendering

Page 19: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ VTK components VTK components

vtkRenderWindow

vtkRenderer #1

vtkRenderer #2

vtkActor #1

vtkActor #2……

vtkMapper

……

vtkAlgorithm vtkAlgorithm ……

vtkRenderWindowInteractor

Page 20: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ vtkRenderWindowInteractorvtkRenderWindowInteractor◆ Set render windowSet render window◆ Set interactor styleSet interactor style◆ Set desired still/interactive refresh Set desired still/interactive refresh

ratesrates◆ Control cursorControl cursor

Page 21: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ vtkRenderWindowvtkRenderWindow◆ Add/Remove renderersAdd/Remove renderers◆ Set window size/positionSet window size/position◆ Control stereo settingControl stereo setting◆ Enable/Disable anti-aliasingEnable/Disable anti-aliasing◆ Control cursorControl cursor◆ Set desired still/interactive refresh Set desired still/interactive refresh

ratesrates

Page 22: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ vtkRenderervtkRenderer◆ Add/Remove actorsAdd/Remove actors◆ Add/Remove lightsAdd/Remove lights◆ Set active cameraSet active camera◆ Enabel/Disable storing rendered image Enabel/Disable storing rendered image

for updatefor update

Page 23: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ vtkProp (superclass of vtkActor2D vtkProp (superclass of vtkActor2D and vtkProp3D)and vtkProp3D)◆ Set mapperSet mapper◆ Set visibilitySet visibility◆ Set orientation/location/scalingSet orientation/location/scaling◆ Set display styleSet display style◆ Set surface propertySet surface property

Page 24: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ vtkAbstractMapper3DvtkAbstractMapper3D◆ SubclassesSubclasses

✦ vtkPolyDataMapper: for polygonal datavtkPolyDataMapper: for polygonal data✦ vtkVolumeMapper: for rectilinear vtkVolumeMapper: for rectilinear

volumetric datavolumetric data✦ vtkUnstructuredGridVolumeMapper: for vtkUnstructuredGridVolumeMapper: for

unstructured dataunstructured data

◆ Map input data into graphics primitivesMap input data into graphics primitives

Page 25: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ vtkAlgorithmvtkAlgorithm◆ Number of inputs/outputsNumber of inputs/outputs

✦ Source: 0 input, >1 outputsSource: 0 input, >1 outputs★ Procedural objects (cube, cone, cylinder…)Procedural objects (cube, cone, cylinder…)★ From data filesFrom data files

✦ Filter: >1 inputs, >1 outputsFilter: >1 inputs, >1 outputs★ Polygonal Polygonal Polygonal Polygonal

★ Polygonal Polygonal Volumetric Volumetric

★ Volumetric Volumetric Polygonal Polygonal

★ Volumetric Volumetric Volumetric Volumetric

✦ Writer: >1 inputs, 0 outputWriter: >1 inputs, 0 output★ To data filesTo data files

Page 26: Visualization ToolKit (VTK) Part Iguanw/course/vtk1.pdfVTK/Imaging – Image processing filters VTK/IO – Reading/Writing data Installation VTK/Paralell – Paralell processing VTK/Rendering

VTK SceneVTK Scene

■ ExamplesExamples◆ Tutorial/Step5/Tcl/Cone5.tclTutorial/Step5/Tcl/Cone5.tcl◆ VolumeRendering/Tcl/SimpleRaycast.tcVolumeRendering/Tcl/SimpleRaycast.tc

ll