#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // ------------------------------------------------------------------------- const unsigned int Dimension = 3; typedef float TScalar; typedef cpm::DataStructures::QuadEdgeMesh< TScalar, Dimension > TMesh; typedef cpm::VTK::MeshMapper< TMesh > TMeshMapper; // ------------------------------------------------------------------------- static void CallbackFunction( vtkObject* caller, long unsigned int eventId, void* clientData, void* callData ); // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { TMesh::Pointer mesh; if( argc > 1 ) { typedef cpm::IO::MeshReader< TMesh > TReader; TReader::Pointer reader = TReader::New( ); reader->SetFileName( argv[ 1 ] ); reader->Update( ); mesh = reader->GetOutput( ); } else { typedef itk::RegularSphereMeshSource< TMesh > TSphereSource; TSphereSource::Pointer source = TSphereSource::New( ); source->SetResolution( 0 ); source->Update( ); mesh = source->GetOutput( ); } // fi // Map mesh vtkSmartPointer< TMeshMapper > mapper = vtkSmartPointer< TMeshMapper >::New( ); mapper->SetInputData( mesh ); // Create actor vtkSmartPointer< vtkActor > actor = vtkSmartPointer< vtkActor >::New( ); actor->SetMapper( mapper ); actor->GetProperty( )->SetColor( 1, 1, 0 ); actor->GetProperty( )->SetOpacity( 1 ); // Configure visualization objects vtkSmartPointer< vtkRenderer > renderer = vtkSmartPointer< vtkRenderer >::New( ); renderer->SetBackground( 0.1, 0.3, 0.5 ); vtkSmartPointer< vtkRenderWindow > window = vtkSmartPointer< vtkRenderWindow >::New( ); window->AddRenderer( renderer ); window->SetSize( 800, 800 ); // Set up the interaction vtkSmartPointer< vtkRenderWindowInteractor > interactor = vtkSmartPointer< vtkRenderWindowInteractor >::New( ); window->SetInteractor( interactor ); // Associate actors renderer->AddActor( actor ); // Some callbacks vtkSmartPointer< vtkCallbackCommand > callback = vtkSmartPointer< vtkCallbackCommand >::New( ); callback->SetCallback( CallbackFunction ); renderer->AddObserver( vtkCommand::EndEvent, callback ); // Begin interaction window->Render( ); interactor->Start( ); return( 0 ); } // ------------------------------------------------------------------------- void CallbackFunction( vtkObject* caller, long unsigned int eventId, void* clientData, void* callData ) { vtkRenderer* renderer = static_cast< vtkRenderer* >( caller ); double timeInSeconds = renderer->GetLastRenderTimeInSeconds( ); double fps = 1.0 / timeInSeconds; std::cout << "FPS: " << fps << std::endl; } // eof - $RCSfile$