Académique Documents
Professionnel Documents
Culture Documents
Visualization
Box ?
What is VTK?
An open source, freely available software system for 3D graphics, image processing, and visualization. Support for hundreds of algorithms in visualization and image processing Object-oriented design with different interpreted language wrapers.
At a Glance
The core of VTK is written entirely in C++ Contains 600 existing classes with 325K lines of code VTK will compile and run on Windows 98/NT, SGI, Linux, Sun, HP, etc. Supports OpenGL Different interfaces for fast prototyping: Tcl , Java, and Python Has users all over the world The beauty of Open Source!
System Architecture
Interpreted Wrapper (Tcl, Java, Python)
Tcl/Tk shell Java interpreter Python interpreter Tcl/Tk source Java JDK Python source
C++ core
Libraries and includes All class source code (could take hours to (dll and .h files) compile) Or (.a and .h files)
Binary Installation: if you will use the classes to build your applicatoin
VTK classes
vtkActor
vtkProperty vtkMapper vtkTransform
vtkLight
vtkRenderWindow
vtkRenderWindowInteractor
vtkRenderer
To see is to believe
1 vtkRenderWindow
screen
Example Program
Main() {
create a window; create a renderer; give the renderer to the window; create procedural geometry; create a mapper; give the geometry to the mapper; create an actor; give the mapper to the actor; give the actor to the renderer; window->render(); } Window
Renderer
Actor
Mapper
Geometry
Example -1
A polygonal model of a cone Render to screen. Rotate the cone 360 degrees source -> mapper -> actor -> renderer -> renderwindow
Example -1
// First include the required header files for the VTK classes we are using. #include "vtkConeSource.h" #include "vtkPolyDataMapper.h" #include "vtkRenderWindow.h" #include "vtkCamera.h" #include "vtkActor.h" #include "vtkRenderer.h int main( int argc, char *argv[] ) { // Create an instance of vtkConeSource. vtkConeSource *cone = vtkConeSource::New(); cone->SetHeight( 3.0 ); cone->SetRadius( 1.0 ); cone->SetResolution( 10 );
Example -1
// We create an instance of vtkPolyDataMapper vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInput( cone->GetOutput() ); // Create an actor. vtkActor *coneActor = vtkActor::New(); coneActor->SetMapper( coneMapper ); // Create the renderer. vtkRenderer *ren1= vtkRenderer::New(); ren1->AddActor( coneActor ); ren1->SetBackground( 0.1, 0.2, 0.4 ); // Finally we create the render window. vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer( ren1 ); renWin->SetSize( 300, 300 );
Example -1
// Now we loop over 360 degrees and render the cone each time. int i; for (i = 0; i < 360; ++i) { // Render the image. renWin->Render(); // Rotate the active camera by one degree. ren1->GetActiveCamera()->Azimuth( 1 ); // Introduce delay to slow down motion. Sleep(10); } // Free up any objects we created. cone->Delete(); coneMapper->Delete(); coneActor->Delete(); ren1->Delete(); renWin->Delete(); return 0; }
vtkActor *coneActor2 = vtkActor::New(); coneActor2->SetMapper(coneMapper); coneActor2->GetProperty()->SetColor(0.2, 0.63, 0.79); coneActor2->SetProperty(property); coneActor2->SetPosition(0, 3, 0);
User interaction
vtkRenderWindowInteractor allow the user to interact with the graphics objects
User interaction
// The vtkRenderWindowInteractor class watches for events (e.g., keypress, mouse) in the vtkRenderWindow. vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin); // Here we specify a particular interactor style. vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New(); iren->SetInteractorStyle(style); // Leave an event loop running. Exit when the user presses the "e" key. iren->Initialize(); iren->Start();
TCL Vs C++
package require vtk vtkConeSource cone cone SetHeight 3.0 cone SetRadius 1.0 cone SetResolution 10 vtkPolyDataMapper coneMapper coneMapper SetInput [cone GetOutput] vtkActor coneActor coneActor SetMapper coneMapper vtkRenderer ren1 ren1 AddActor coneActor ren1 SetBackground 0.1 0.2 0.4 vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize 300 300 for {set i 0} {$i < 360} {incr i} { after 10 renWin Render [ren1 GetActiveCamera] Azimuth 1 } vtkCommand DeleteAllObjects exit
#include "vtkConeSource.h" #include "vtkPolyDataMapper.h" #include "vtkRenderWindow.h" #include "vtkCamera.h" #include "vtkActor.h" #include "vtkRenderer.h" int main( int argc, char *argv[] ){ vtkConeSource *cone = vtkConeSource::New(); cone->SetHeight( 3.0 ); cone->SetRadius( 1.0 ); cone->SetResolution( 10 ); vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInput( cone->GetOutput() ); vtkActor *coneActor = vtkActor::New(); coneActor->SetMapper( coneMapper ); vtkRenderer *ren1= vtkRenderer::New(); ren1->AddActor( coneActor ); ren1->SetBackground( 0.1, 0.2, 0.4 ); vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer( ren1 ); renWin->SetSize( 300, 300 ); int i; for (i = 0; i < 360; ++i) { Sleep(10); renWin->Render(); ren1->GetActiveCamera()->Azimuth( 1 ); } cone->Delete(); coneMapper->Delete(); coneActor->Delete(); ren1->Delete(); renWin->Delete(); return 0;}
Demos
Diffuse Lighting Modeling Volume Rendering 3D Model Motor Medical imaging
What is ITK?
Image Processing Segmentation Registration
References
www.cse.ohio-state.edu/~hwshen/788/sp01/ http://www.kitware.com/ http://www.vtk.org/ The VTK Users's Guide The Visualization Toolkit An Object-Oriented Approach To 3D Graphics 3rd Edition http://www.itk.org/