#include #include #include #include #include #include #include int main (int argc, char* argv[]) { if (argc < 2) { std::cout << "Usage: " << argv[0] << " DATADIR/something" << std::endl; return 1; } /** Create 3 views, each of them will have a different orientation, .i.e. axial, sagittal and coronal. Create one 3D view. */ vtkViewImage2DWithTracer* view1 = vtkViewImage2DWithTracer::New(); vtkViewImage2DWithTracer* view2 = vtkViewImage2DWithTracer::New(); vtkViewImage2DWithTracer* view3 = vtkViewImage2DWithTracer::New(); vtkViewImage3D* view4 = vtkViewImage3D::New(); vtkRenderWindowInteractor* iren1 = vtkRenderWindowInteractor::New(); vtkRenderWindowInteractor* iren2 = vtkRenderWindowInteractor::New(); vtkRenderWindowInteractor* iren3 = vtkRenderWindowInteractor::New(); vtkRenderWindowInteractor* iren4 = vtkRenderWindowInteractor::New(); vtkRenderWindow* rwin1 = vtkRenderWindow::New(); vtkRenderWindow* rwin2 = vtkRenderWindow::New(); vtkRenderWindow* rwin3 = vtkRenderWindow::New(); vtkRenderWindow* rwin4 = vtkRenderWindow::New(); vtkRenderer* renderer1 = vtkRenderer::New(); vtkRenderer* renderer2 = vtkRenderer::New(); vtkRenderer* renderer3 = vtkRenderer::New(); vtkRenderer* renderer4 = vtkRenderer::New(); iren1->SetRenderWindow (rwin1); iren2->SetRenderWindow (rwin2); iren3->SetRenderWindow (rwin3); iren4->SetRenderWindow (rwin4); rwin1->AddRenderer (renderer1); rwin2->AddRenderer (renderer2); rwin3->AddRenderer (renderer3); rwin4->AddRenderer (renderer4); view1->SetRenderWindow ( rwin1 ); view2->SetRenderWindow ( rwin2 ); view3->SetRenderWindow ( rwin3 ); view4->SetRenderWindow ( rwin4 ); view1->SetRenderer ( renderer1 ); view2->SetRenderer ( renderer2 ); view3->SetRenderer ( renderer3 ); view4->SetRenderer ( renderer4 ); /** Set some properties to the views, like the interaction style, orientation and background color. */ view1->SetInteractionStyle (vtkViewImage2D::SELECT_INTERACTION); view2->SetInteractionStyle (vtkViewImage2D::SELECT_INTERACTION); view3->SetInteractionStyle (vtkViewImage2D::SELECT_INTERACTION); view1->SetOrientation (vtkViewImage2D::AXIAL_ID); view2->SetOrientation (vtkViewImage2D::CORONAL_ID); view3->SetOrientation (vtkViewImage2D::SAGITTAL_ID); view1->SetBackgroundColor (0.0,0.0,0.0); view2->SetBackgroundColor (0.0,0.0,0.0); view3->SetBackgroundColor (0.0,0.0,0.0); double color[3] = {0.0,0.0,0.0}; view4->SetTextColor (color); view4->SetRenderingModeToPlanar(); view4->SetCubeVisibility(1); view1->SetAboutData ("Powered by vtkINRIA3D"); view2->SetAboutData ("Powered by vtkINRIA3D"); view3->SetAboutData ("Powered by vtkINRIA3D"); view4->SetAboutData ("Powered by vtkINRIA3D"); /** Link the views together for synchronization. */ view1->AddChild (view2); view2->AddChild (view3); view3->AddChild (view4); view4->AddChild (view1); vtkStructuredPointsReader* reader = vtkStructuredPointsReader::New(); reader->SetFileName (argv[1]); reader->GetOutput()->Update(); view1->SetImage (reader->GetOutput()); view2->SetImage (reader->GetOutput()); view3->SetImage (reader->GetOutput()); //view4->SetImage (reader->GetOutput()); /** Reset the window/level and the current position. */ view1->ResetCurrentPoint(); view1->ResetWindowLevel(); iren1->Initialize(); iren2->Initialize(); iren3->Initialize(); iren4->Initialize(); iren1->Start(); view1->Detach(); view2->Detach(); view3->Detach(); view4->Detach(); view1->Delete(); view2->Delete(); view3->Delete(); view4->Delete(); rwin1->Delete(); rwin2->Delete(); rwin3->Delete(); rwin4->Delete(); iren1->Delete(); iren2->Delete(); iren3->Delete(); iren4->Delete(); renderer1->Delete(); renderer2->Delete(); renderer3->Delete(); renderer4->Delete(); reader->Delete(); return 0; }