VTK: The Visualiza.on Toolkit Part I: Overview and - - PowerPoint PPT Presentation

vtk the visualiza on toolkit
SMART_READER_LITE
LIVE PREVIEW

VTK: The Visualiza.on Toolkit Part I: Overview and - - PowerPoint PPT Presentation

VTK: The Visualiza.on Toolkit Part I: Overview and Graphics Models Han-Wei Shen The Ohio State University What is VTK? An open


slide-1
SLIDE 1

VTK: ¡The ¡Visualiza.on ¡Toolkit ¡

Part ¡I: ¡Overview ¡and ¡ ¡Graphics ¡Models ¡ Han-­‑Wei ¡Shen ¡ ¡ The ¡Ohio ¡State ¡University ¡

slide-2
SLIDE 2

What ¡is ¡VTK? ¡ ¡

  • An ¡open ¡source, ¡freely ¡available ¡

soIware ¡system ¡for ¡3D ¡ graphics, ¡image ¡processing, ¡and ¡ visualiza.on. ¡ ¡

  • Support ¡for ¡hundreds ¡of ¡

algorithms ¡in ¡visualiza.on ¡and ¡ image ¡processing ¡ ¡

  • Object-­‑oriented ¡design ¡with ¡

different ¡interpreted ¡language ¡

  • wrappers. ¡ ¡
slide-3
SLIDE 3

At ¡a ¡Glance ¡ ¡ ¡

  • The ¡core ¡of ¡VTK ¡ ¡is ¡wriQen ¡en.rely ¡in ¡C++ ¡and ¡

contains ¡hundreds ¡of ¡classes ¡ ¡

  • VTK ¡ ¡compiles ¡and ¡run ¡on ¡Windows, ¡MacOS, ¡Linux ¡ ¡
  • Different ¡interfaces ¡for ¡fast ¡prototyping: ¡Tcl/Tk, ¡

Java, ¡and ¡ ¡Python ¡

  • Have ¡users ¡all ¡over ¡the ¡world ¡– ¡The ¡beauty ¡of ¡

Open ¡Source! ¡ ¡

slide-4
SLIDE 4

System ¡Architecture ¡

Interpreted Wrapper (Tcl, Java, Python) C++ core

  • Tcl/Tk source
  • Java JDK
  • Python source

Source code Installation: If you want to extend vtk All class source code (could take hours to compile) Binary Installation: if you will use The classes to build your applicatoin Libraries and includes (dll and .h files) Or (.a and .h files)

  • Tcl/Tk shell
  • Java interpreter
  • Python interpreter
slide-5
SLIDE 5

VTK ¡classes ¡

(http://www.vtk.org/doc/nightly/html/classes.html)

slide-6
SLIDE 6

VTK ¡ ¡Object ¡Models ¡

  • Graphics ¡and ¡Visualiza.on ¡Models ¡

– Graphics ¡objects: ¡rendering ¡ – Visualiza.on ¡objects: ¡genera.ng ¡graphical ¡

  • bjects ¡to ¡represent ¡the ¡data ¡ ¡

Data source

Data Flow System: Pipeline execution

Graphics Visualization

slide-7
SLIDE 7

Graphics model

Pipeline ¡Execu.on ¡

Direction of data flow Direction of ‘update’

Visualization model Filter Mapper Actor Renderer Source

slide-8
SLIDE 8

Visualization model

VTK ¡Mappers ¡ ¡

  • Mappers ¡convert ¡data ¡into ¡graphical ¡primi.ves ¡or ¡write ¡to ¡a ¡

file ¡(writer) ¡

– Mappers ¡require ¡one ¡or ¡more ¡input ¡data ¡objects ¡ – Mappers ¡terminate ¡the ¡visualiza.on ¡pipeline ¡

  • Example: ¡vtkPolyDataMapper, ¡which ¡takes ¡geometry ¡such ¡as ¡

cylinder ¡or ¡cone ¡as ¡input ¡and ¡convert ¡it ¡to ¡renderable ¡ geometry ¡ ¡

Graphics model Filter Mapper Actor Renderer Source

slide-9
SLIDE 9

VTK ¡Actors ¡

  • Actors ¡represent ¡graphical ¡data ¡or ¡objects ¡
  • A ¡VTK ¡actor ¡contains ¡

– ¡object ¡proper.es ¡(color, ¡shading ¡type, ¡etc) ¡

– ¡geometry ¡ – transforma.ons ¡

  • VTK ¡actors ¡need ¡to ¡work ¡together ¡with ¡lights ¡(vtkLight) ¡and ¡

camera ¡(vtkCamera) ¡to ¡make ¡a ¡scene ¡ ¡

  • The ¡scene ¡is ¡then ¡rendered ¡to ¡an ¡image ¡by ¡a ¡renderer ¡

(vtkRenderer) ¡ ¡

Visualization model Graphics model Filter Mapper Actor Renderer Source

slide-10
SLIDE 10

VTK ¡Renderer ¡ ¡

  • The ¡Renderer ¡in ¡VTK, ¡vtkRenderer, ¡is ¡to ¡coordinate ¡

the ¡rendering ¡process ¡that ¡involves ¡lights, ¡cameras, ¡ and ¡actors ¡ ¡

  • vtkRenderer ¡creates ¡a ¡default ¡camera ¡and ¡ ¡lights ¡if ¡

not ¡present, ¡but ¡needs ¡to ¡have ¡at ¡least ¡one ¡actor ¡

  • vtkRenderer ¡needs ¡to ¡be ¡connected ¡with ¡a ¡

vtkRenderWindow ¡ ¡ ¡ ¡

Visualization model Graphics model Filter Mapper Actor Renderer Source

slide-11
SLIDE 11

VTK ¡Render ¡Window ¡

  • The ¡class, ¡vtkRenderWindow ¡.es ¡the ¡en.re ¡

rendering ¡process ¡together ¡ ¡

  • It ¡manages ¡all ¡the ¡pla`orm ¡dependent ¡window ¡

management ¡issues ¡and ¡hide ¡the ¡details ¡from ¡the ¡ user ¡ ¡

  • It ¡also ¡stores ¡graphics ¡specific ¡informa.on ¡such ¡as ¡

window ¡size, ¡posi.on, ¡.tle, ¡frame ¡buffer ¡depth, ¡etc. ¡ ¡

Visualization model Graphics model

Actor Renderer Source Filter Mapper Render window

slide-12
SLIDE 12

The ¡Graphics ¡Model ¡

camera Light Actor

screen

Viewer

slide-13
SLIDE 13

The ¡Graphics ¡Model ¡

camera Light Actor

screen

Viewer vtkCamera

slide-14
SLIDE 14

The ¡Graphics ¡Model ¡

camera Light Actor

screen

Viewer vtkCamera vtkActor

  • vtkProperty
  • vtkMapper
  • vtkTransform
slide-15
SLIDE 15

The ¡Graphics ¡Model ¡

camera Light Actor

screen

Viewer vtkCamera vtkActor

  • vtkProperty
  • vtkMapper
  • vtkTransform

vtkLight

slide-16
SLIDE 16

The ¡Graphics ¡Model ¡

camera Light Actor

screen

Viewer vtkCamera vtkActor

  • vtkProperty
  • vtkMapper
  • vtkTransform

vtkLight

vtkRenderer

slide-17
SLIDE 17

The ¡Graphics ¡Model ¡

camera Light Actor

screen

Viewer vtkCamera vtkActor

  • vtkProperty
  • vtkMapper
  • vtkTransform

vtkLight

vtkRenderer

The purpose is to render the geometry (volume) on the screen vtkRenderWindow

vtkRenderWindowInteractor

slide-18
SLIDE 18

VTK ¡Simple ¡Pseudo ¡Code ¡

Main() {

create geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; create a renderer; give the actor to the renderer; create a window; give the renderer to the window; window->render(); }

slide-19
SLIDE 19

VTK ¡Simple ¡Pseudo ¡Code ¡

Main() {

create geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; create a renderer; give the actor to the renderer; create a window; give the renderer to the window; window->render(); }

Geometry

slide-20
SLIDE 20

VTK ¡Simple ¡Pseudo ¡Code ¡

Main() {

create geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; create a renderer; give the actor to the renderer; create a window; give the renderer to the window; window->render(); }

Geometry Mapper

slide-21
SLIDE 21

VTK ¡Simple ¡Pseudo ¡Code ¡

Main() {

create geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; create a renderer; give the actor to the renderer; create a window; give the renderer to the window; window->render(); }

Geometry Mapper Actor

slide-22
SLIDE 22

VTK ¡Simple ¡Pseudo ¡Code ¡

Main() {

create geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; create a renderer; give the actor to the renderer; create a window; give the renderer to the window; window->render(); }

Geometry Mapper Actor Renderer

slide-23
SLIDE 23

VTK ¡Simple ¡Pseudo ¡Code ¡

Main() {

create geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; create a renderer; give the actor to the renderer; create a window; give the renderer to the window; window->render(); }

Geometry Mapper Actor Renderer Window

slide-24
SLIDE 24

VTK ¡Simple ¡Pseudo ¡Code ¡

Main() {

create geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; create a renderer; give the actor to the renderer; create a window; give the renderer to the window; window->render(); }

Geometry Mapper Actor Renderer Window

slide-25
SLIDE 25

VTK ¡Render ¡a ¡Cone ¡

#include ¡“vtk.h” ¡ ¡ Main() ¡ ¡ { ¡ ¡ ¡ ¡ ¡ ¡vtkConeSource ¡*cone ¡= ¡vtkConeSource::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡cone-­‑>SetResolu.on(8); ¡ ¡ ¡ vtkPolyDataMapper ¡*mapper ¡= ¡vtkPolyDataMapper::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡mapper ¡-­‑>SetInput(cone-­‑>GetOutput()); ¡ ¡ ¡ ¡ ¡ ¡vtkActor ¡*coneActor ¡= ¡vtkActor::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡coneActor-­‑>SetMapper(Mapper); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡vtkRenderer ¡* ¡ren ¡= ¡vtkRenderer::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ren-­‑>AddActor(conActor); ¡ ¡ ¡ ¡ ¡ ¡ ¡vtKRenderWindow ¡*renWindow ¡= ¡vtkRenderWindow::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>AddRenderer(ren); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>render(); ¡

} ¡

Geometry Mapper Actor Renderer Window

slide-26
SLIDE 26

VTK ¡Render ¡a ¡Cone ¡

#include ¡“vtk.h” ¡ ¡ Main() ¡ ¡ { ¡ ¡ ¡ ¡ ¡ ¡vtkConeSource ¡*cone ¡= ¡vtkConeSource::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡cone-­‑>SetResolu.on(8); ¡ ¡ ¡ vtkPolyDataMapper ¡*mapper ¡= ¡vtkPolyDataMapper::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡mapper ¡-­‑>SetInput(cone-­‑>GetOutput()); ¡ ¡ ¡ ¡ ¡ ¡vtkActor ¡*coneActor ¡= ¡vtkActor::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡coneActor-­‑>SetMapper(Mapper); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡vtkRenderer ¡* ¡ren ¡= ¡vtkRenderer::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ren-­‑>AddActor(conActor); ¡ ¡ ¡ ¡ ¡ ¡ ¡vtKRenderWindow ¡*renWindow ¡= ¡vtkRenderWindow::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>AddRenderer(ren); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>render(); ¡

} ¡

Geometry Mapper Actor Renderer Window

slide-27
SLIDE 27

VTK ¡Render ¡a ¡Cone ¡

#include ¡“vtk.h” ¡ ¡ Main() ¡ ¡ { ¡ ¡ ¡ ¡ ¡ ¡vtkConeSource ¡*cone ¡= ¡vtkConeSource::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡cone-­‑>SetResolu.on(8); ¡ ¡ ¡ vtkPolyDataMapper ¡*mapper ¡= ¡vtkPolyDataMapper::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡mapper ¡-­‑>SetInput(cone-­‑>GetOutput()); ¡ ¡ ¡ ¡ ¡ ¡vtkActor ¡*coneActor ¡= ¡vtkActor::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡coneActor-­‑>SetMapper(Mapper); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡vtkRenderer ¡* ¡ren ¡= ¡vtkRenderer::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ren-­‑>AddActor(conActor); ¡ ¡ ¡ ¡ ¡ ¡ ¡vtKRenderWindow ¡*renWindow ¡= ¡vtkRenderWindow::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>AddRenderer(ren); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>render(); ¡

} ¡

Geometry Mapper Actor Renderer Window

slide-28
SLIDE 28

VTK ¡Render ¡a ¡Cone ¡

#include ¡“vtk.h” ¡ ¡ Main() ¡ ¡ { ¡ ¡ ¡ ¡ ¡ ¡vtkConeSource ¡*cone ¡= ¡vtkConeSource::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡cone-­‑>SetResolu.on(8); ¡ ¡ ¡ vtkPolyDataMapper ¡*mapper ¡= ¡vtkPolyDataMapper::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡mapper ¡-­‑>SetInput(cone-­‑>GetOutput()); ¡ ¡ ¡ ¡ ¡ ¡vtkActor ¡*coneActor ¡= ¡vtkActor::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡coneActor-­‑>SetMapper(Mapper); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡vtkRenderer ¡* ¡ren ¡= ¡vtkRenderer::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ren-­‑>AddActor(conActor); ¡ ¡ ¡ ¡ ¡ ¡ ¡vtKRenderWindow ¡*renWindow ¡= ¡vtkRenderWindow::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>AddRenderer(ren); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>render(); ¡

} ¡

Geometry Mapper Actor Renderer Window

slide-29
SLIDE 29

VTK ¡Render ¡a ¡Cone ¡

#include ¡“vtk.h” ¡ ¡ Main() ¡ ¡ { ¡ ¡ ¡ ¡ ¡ ¡vtkConeSource ¡*cone ¡= ¡vtkConeSource::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡cone-­‑>SetResolu.on(8); ¡ ¡ ¡ vtkPolyDataMapper ¡*mapper ¡= ¡vtkPolyDataMapper::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡mapper ¡-­‑>SetInput(cone-­‑>GetOutput()); ¡ ¡ ¡ ¡ ¡ ¡vtkActor ¡*coneActor ¡= ¡vtkActor::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡coneActor-­‑>SetMapper(Mapper); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡vtkRenderer ¡* ¡ren ¡= ¡vtkRenderer::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ren-­‑>AddActor(conActor); ¡ ¡ ¡ ¡ ¡ ¡ ¡vtKRenderWindow ¡*renWindow ¡= ¡vtkRenderWindow::New(); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>AddRenderer(ren); ¡ ¡ ¡ ¡ ¡ ¡ ¡renWindow-­‑>render(); ¡

} ¡

Geometry Mapper Actor Renderer Window

slide-30
SLIDE 30

vtkRenderWindow ¡Output ¡

1 vtkRenderWindow 2 vtkRenderer vtkCamera vtkLight vtkActor

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