#include #include #include #include #include #include #include #include #include "vtkIsosurfaceManager.h" int main (int argc, char*argv[]) { if( argc<3 ) { std::cout << "Usage: " << std::endl; std::cout << "\t" << argv[0] << " " << std::endl; std::cout << "Example: " << std::endl; std::cout << "\t" << argv[0] << " [vtkINRIA3D_DATA_DIR]/Atlas.vtk [vtkINRIA3D_DATA_DIR]/AtlasSegmentation.vtk" << std::endl; exit (-1); } /** In this example, we illustrate the use of the vtkIsosurfaceManager. We first set up a vtkImageView3D to display an image. */ vtkViewImage3D* view = vtkViewImage3D::New(); vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New(); vtkRenderWindow* rwin = vtkRenderWindow::New(); vtkRenderer* renderer = vtkRenderer::New(); iren->SetRenderWindow ( rwin ); rwin->AddRenderer ( renderer ); view->SetRenderWindow ( rwin ); view->SetRenderer ( renderer ); double color[3] = {0.0,0.0,0.0}; view->SetTextColor (color); view->SetRenderingModeToPlanar(); view->SetCubeVisibility(1); view->SetAboutData ("Powered by vtkINRIA3D"); vtkStructuredPointsReader* reader = vtkStructuredPointsReader::New(); reader->SetFileName ( argv[1] ); reader->GetOutput()->Update(); view->SetImage ( reader->GetOutput() ); view->SyncResetCurrentPoint(); view->SyncResetWindowLevel(); /** We start by creating the vtkIsosurfaceManager and setting it the vtkRenderWindowInteractor of the view. */ vtkIsosurfaceManager* manager = vtkIsosurfaceManager::New(); manager->SetRenderWindowInteractor (iren); manager->SetDecimationOff(); /** We simply read the segmentation (i.e., image of labels). */ vtkStructuredPointsReader* reader2 = vtkStructuredPointsReader::New(); reader2->SetFileName (argv[2]); vtkImageData* segmentation = reader2->GetOutput(); segmentation->Update(); manager->SetInput (segmentation); /** The call to GenerateData() computes the number of labels, generates the isosurfaces, create one vtkActor per surface, and add the actors to the renderer. */ manager->GenerateData(); /** We set here the opacity of all isosurfaces to 0.5. */ manager->SetOpacity (0.5); /* unsigned int n = manager->GetNumberOfIsoValues(); for( unsigned int i=0; iSetOpacity (i, 0.5); } */ view->Render(); iren->Start(); view->Delete(); iren->Delete(); rwin->Delete(); renderer->Delete(); manager->Delete(); reader->Delete(); reader2->Delete(); return 0; }