Technical Overview: Software
- Approximately 1000 C++ classes
- Over 1,000,000+ lines of C++ code
- Hundreds of thousands of automatically generated wrapper code (to support Tcl, Java and Python bindings)
- Uses the Kitware quality software process CMake, CTest, CDash and CPack
- In-line documentation (both in-code and man pages)
- Designed to be extensible
- Lots of examples, applications, test cases, and data
- Supports portable multithreading and distributed memory for parallel algorithms
(download J. Ahrens', Los Alamos Nat'l Lab, VTK Parallel Paper)
Technical Overview: Interaction and GUI
- Integrates seamlessly with a variety of windowing systems including: Qt, FLTK, wxWindows, Tcl/Tk, Python/Tk, Java, X11, Motif, Windows, Cocoa and CARBON.
- Supports a variety of interaction styles including trackball and joystick modes for cameras and actors.
- Interaction styles can be customized and easily added.
- Implements a command/observer event handling mechanism.
- Objects can watch other objects for a particular event and invoke callbacks as appropriate.
- Events can be prioritized and aborted for complex event handling.
- VTK classes define a large palette of events that are invoked throughout the system.
- Includes an extensive set of 3D widgets including: point, line, plane, implicit plane, box, sphere, scalar bar, image plane, and spline widgets.
Technical Overview: 3D Graphics
- Surface Rendering
- Volume Rendering
- A flexible software ray casting implementation
- Supports texture-based volume rendering
- Support for VolumePRO volume rendering hardware
- Supports mixing opaque surface geometry and volume rendering
- Advanced GPU-based rendering support
- Rendering Primitives
- points
- lines
- polygons
- triangle strips
- volumes
- information visualization “views” that map tables, trees and graphs into 3D displays
- plus adaptors to many other types
- Interactive Viewer/Renderer "3D Widgets" for interacting with data
- Properties
- ambient, ambient color
- diffuse, diffuse color
- specular, specular color
- color (lights & object)
- transparency
- texture mapping
- shading (flat/Gouraud)
- backlighting on/off
- Lights
- Cameras
- parallel and perspective projection
- nice methods like elevation, azimuth, zoom, reset
- automatic camera/light creation
- Device Independent C++ code and/or Tcl, Java, Python scripts are independent of renderer type.
- Renderer type set at run-time with environment variable.
- Graphics Model
- Lights illuminate the scene
- Cameras define viewpoint
- Actors specify geometry/properties
- LOD actors support manual and automatic generation of level-of-detail to support interactive rendering for even the largest models.
- Assemblies group actors into arbitrary hierarchies
- Mappers define geometry/link into visualization pipeline
- Renderers coordinate lights, cameras, actors to create image
- Volumes are a type of actor with their own special properties
- Special Features
- Multiple windows/viewports
- Red/blue stereo
- Crystal eyes stereo
- Motion and focal blur
- Backface/frontface culling of polygons
- Save images to various file formats including png, jpeg, tiff, bmp and ppm.
Technical Overview: Visualization
- Data Types:
- polygonal data (points, lines, polygons, triangle strips)
- images and volumes (i.e., structured point datasets)
- structured grids (e.g., finite difference grids)
- unstructured grids (e.g, finite element meshes)
- unstructured points
- rectilinear grids
- hierarchical grids (e.g., AMR)
- generic datasets (user writes their own adaptor into arbitrary dataset)
- Cell Types:
- vertex, poly-vertex
- line, poly-line
- triangle
- triangle strip
- pixel
- quadrilateral
- polygon
- tetrahedron
- voxel
- hexahedron
- wedge
- pyramid
- quadratic edges, triangles, quads, tetrahedra, hex, pyramids, wedges
- generic adaptors to arbitrary cell types
- Attribute Types:
- scalars (single valued plus grayscale, grayscale-alpha, rgb, and rgb-alpha).
- vectors
- 3x3 tensors
- normals
- texture coordinates (1-3D)
- tables
- trees
- graphs
- field data (arbitrary arrays)
- Scalar algorithms
- color mapping
- carpet plots
- iso-contouring: marching cubes
- iso-contouring: dividing cubes
- thresholding
- scalar generation from other data (elevation, velocity, etc.)
- Vector algorithms
- hedgehogs (and other glyph types)
- streamlines
- dashed streamlines
- stream points
- stream surfaces
- streampolygon
- LIC (line integral convolution)
- displacement plots/warping
- Tensor algorithms
- tensor ellipsoids
- tensor glyphs
- hyper-streamlines
- Information Visualization
- parallel coordinates
- programmable glyphs
- splatting
- dimension reduction
- views
- treemap
- hierarchical bundles
- a variety of graph layout algorithms
- landscape
- Modelling algorithms
- spheres, cones, cylinders, cubes, lines, planes, etc.
- axes, cursors, text, outlines
- implicit modelling
- parametric surfaces
- decimation
- texture thresholding
- boolean textures
- glyphs
- cutting
- clipping (2D and 3D)
- probing
- normal generation
- connectivity
- triangle strip generation
- linear and rotational extrusion
- splatting
- swept surfaces/volumes
- multi-variate visualization
- scattered/unstructured point visualization
- appending, merging, cleaning data
- 2D & 3D Delaunay triangulation (including alpha shapes)
- Laplacian & Windowed sinc mesh smoothing
- Surface reconstruction
- Data Interface (Readers/Writers treat a single dataset; Importers/Exporters treat a scene.) variety of polygonal formats including stereo-lithography, MOVIE.BYU, Cyberware, etc.
- our own VTK formats (including a parallel XML format) for all data types
- Inventor Writer, IV Exporters
- 3D Studio Importer
- PLOT3D
- PNM
- RIB (RenderMan) Exporter
- SLC (Volume) Reader
- TIFF Writer
- VRML Exporter
- Wavefront .OBJ Exporter, .OBJ Reader
- BMP reader and writer
- Raw image formats
- HDF
- Ensight
- HDF
- Cosmo
- Fluent
- DICOM
- SQL
- Postscript writer
- Visualization Pipeline Demand-driven data-flow with automatic network updates
- Reference counting to reduce memory requirements
- Uses sources, filters, mappers to start, process, and terminate network
- Network looping and feedback supported
- Strongly type-checked to enforce filter connectivity
- Supports multiple input / multiple output filters
- Annotation
- 2D and 3D text
- Scalar bar (scalar to color index)
- x-y plots
- Flying axes
- Overlay plane drawing
- Attach overlay annotation to 3D positions
Technical Overview: Imaging
- Features
- Uses cached, streaming pipeline so that you can operate on gigantic datasets (i.e., deals with pieces of data). This is done completely transparently.
- Most imaging filters are multi-threaded for parallel execution
- Fully integrated with 3D graphics/visualization pipeline
- Filter types (a quick summary)
- diffusion filters
- Butterworth, low-pass, high-pass filters
- dilation, erosion, skeleton
- convolution
- difference, arithmetic, magnitude, divergence, gradient, mean
- distance
- FFT
- Fourier, Gaussian, Sobel
- histogram
- threshold
- permutation, conversion, padding