IT Uppsala universitet
Advanced Computer Graphics and
VisualizationSpring 2008
Filip Malmberg [email protected]
UU/IT
08-01-29 | #2@ UU/IT
What is VTK? What can VTK be used for? How to actually use VTK?
VTK – The Visualization ToolKit
UU/IT
08-01-29 | #3@ UU/IT
VTK – The Visualization ToolKit Open source, freely available software for
• 3D computer graphics• image processing• visualization
Managed by Kitware, Inc. Object-oriented design (C++) High-level of abstraction Use C++, Tcl/Tk, Python, Java
UU/IT
08-01-29 | #4@ UU/IT
True visualization system Techniques for visualizing
• scalar fields• vector fields• tensor fields
Polygon reduction Mesh smoothing Image processing Your own algorithms
UU/IT
08-01-29 | #5@ UU/IT
Additional features Parallel support
• message passing• multi-threading
Stereo support Integrates with Motif, Qt, Tcl/Tk, Python/Tk,
X11, Windows, ... Event handling 3D widgets
UU/IT
08-01-29 | #6@ UU/IT
3D graphics Surface rendering Volume rendering
• Ray casting• Texture mapping (2D, 3D)
Lights and cameras Textures Save render window to .png, .jpg, ...
(useful for movie creation)
UU/IT
08-01-29 | #7@ UU/IT
Data Representation
Collection of cells & points Cells specify topology
• Shape such as triangle, tetrahedron Points specify geometry
• Point coordinates assigned to a topology Data attributes
• Data associated with topology or geometry
UU/IT
08-01-29 | #8@ UU/IT
Data attributes assigned to points or cells Scalar Vector
• magnitude and direction Normal
• a vector of magnitude 1• used for lighting
Texture coordinate• mapping data points into a texture space
Tensor
UU/IT
08-01-29 | #9@ UU/IT
Visualization of attributes Scalar fields
• Color Mapping vtkLookupTable vtkScalarsToColors vtkColorTransferFunction
• Contouring vtkContourFilter vtkMarchingCubes
UU/IT
08-01-29 | #10@ UU/IT
Visualization of attributes Vector fields
• Glyphs vtkGlyph3D
• Streamlines/points/tubes vtkStreamer vtkStreamLine vtkStreamPoints
UU/IT
08-01-29 | #12@ UU/IT
The Visualization Pipeline
DATA
FILTER MAPPING
DISPLAY
Visualization algorithms
Interactive feedback
UU/IT
08-01-29 | #13@ UU/IT
Objects Data objects
• e.g. vtkPolyData, vtkImageData Process objects
• Source objects (vtkReader, vtkSphereSource)• Filter objects (vtkContourFilter)• Mapper objects (vtkPolyDataMapper)
UU/IT
08-01-29 | #14@ UU/IT
7 basic VTK objects to render a scene
1. vtkRenderWindow: manages a window on the display device2. vtkRenderer: coordinates the rendering process involving
lights, cameras, and actors3. vtkLight: a source of light to illuminate the scene4. vtkCamera: defines the view position, focal point, etc. 5. vtkActor: represents an object rendered in the scene,
both its properties and position in the world coordinate system 6. vtkProperty: defines the appearance properties of an actor
including colour, transparency, and lighting properties such as specular and diffuse. Also representational properties like wireframe and solid surface
7. vtkMapper: the geometric representation for an actor. More than one actor may refer to the same mapper
UU/IT
08-01-29 | #16@ UU/IT
User interaction vtkRenderWindowInteractor
• allows the user to interact with the objects Try the following key presses
w wireframe mode s surface modej joystick mode t trackball modebutton1 rotate button2 translate button3 scale r reset camera viewe, q exit
UU/IT
08-01-29 | #18@ UU/IT
VTK and C++ Build with CMake and your favorite compiler CMake generates makefiles or project files for your
environment Use the resulting file(s) to build your executable Under Windows you can use Microsoft Visual C++ 8
Express Edition You have to install Tcl and/or Python to run vtk
scripts
UU/IT
08-01-29 | #19@ UU/IT
VTK and Python Interpreted scripting language, allows rapid
development. Easy to learn if you know e.g. C++ or Java. More information available on www.python.org
UU/IT
08-01-29 | #20@ UU/IT
VTK resources www.vtk.org
• Download • Documentation• Mailing lists• Links• FAQ, Search
www.kitware.com• VTK Textbook• VTK User’s guide• Mastering CMake
UU/IT
08-01-29 | #21@ UU/IT
VTK Examples Really useful for getting started Available on the VTK webpage or in the VTK
folder.
UU/IT
08-01-29 | #23@ UU/IT
Summary + Free and open source Create graphics/visualization applications
fairly fast Object oriented - easy to derive new classes Build applications using “interpretive” languages
Tcl, Python, and Java Many (state-of-the-art) algorithms Heavily tested in real-world applications Large user base provides decent support Commercial support and consulting available
UU/IT
08-01-29 | #24@ UU/IT
Summary -
Not a super-fast graphics engine due to portability and C++ dynamic binding – you need a decent workstation
Very large class hierarchy learning threshold might be steep
UU/IT
08-01-29 | #27@ UU/IT
Computer exercises 2008 2 assignments on shader programming with the
OpenGL shading language
UU/IT
08-01-29 | #28@ UU/IT
Computer exercises 2008 Bonus deadline is next lab session
• Give a demonstration of your program• Show source code• Be able to answer questions
A1, A3 = 1p A2, A4 = 2p
UU/IT
08-01-29 | #29@ UU/IT
Computer exercises 2008 Lab 1
Wednesday January 30 8:15-12:00 P1312DBasics of VTK
UpUnet account, UU-LOCAL, password C VTK 5.0.0 is installed in
• G:\Program\ACGV\VTK-5.0.0 You need to set the proper paths, run the
script in a command prompt• G:\Program\ACGV\set_paths.bat