#include "vtkPolyDataMapper.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include VTK_MODULE_INIT(vtkInteractionStyle); void CallbackFunction(vtkObject* caller, long unsigned int vtkNotUsed(eventId), void* vtkNotUsed(clientData), void* vtkNotUsed(callData) ) { vtkRenderer* renderer = static_cast(caller); double timeInSeconds = renderer->GetLastRenderTimeInSeconds(); double fps = double(1.0)/timeInSeconds; //printf("FPS_GPU: %f \n" ,fps); //std::cout << "FPS: " << fps << std::endl; } int main(int argc, char *argv[]) { // Reading data and obtaining an implicit representation // isosurface vtkMarchingCubes*shellE = vtkMarchingCubes::New(); // ... //processing implicit data. Triangles generation shellE->Update(); //make sure from this point we deal with triangles only std::cout << "Cells number "<GetOutput()->GetNumberOfCells()<< std::endl; vtkPolyDataMapper *shellM = vtkPolyDataMapper::New(); shellM->SetInputConnection(shellE->GetOutputPort()); shellM->ScalarVisibilityOff(); vtkSmartPointer actor = vtkSmartPointer::New(); actor->SetMapper(shellM); renderer->AddActor(actor); vtkRenderWindow* renderWindow = vtkRenderWindow::New(); renderWindow->AddRenderer(renderer); renderWindow->SetSize(1600,1600); vtkRenderWindowInteractor* renderWindowInteractor = vtkRenderWindowInteractor::New(); renderWindowInteractor->SetRenderWindow(renderWindow); vtkSmartPointer style = vtkSmartPointer::New(); //like paraview renderWindowInteractor->SetInteractorStyle( style ); vtkSmartPointer callback = vtkSmartPointer::New(); callback->SetCallback(CallbackFunction); renderer->AddObserver(vtkCommand::EndEvent, callback); renderer->SetBackground(.3, .6, .3); // Background color green // Render and interact // renderWindow->Render(); // renderWindowInteractor->Initialize(); // double bounds[6]; shellE->GetOutput()->GetBounds(bounds); renderer->ResetCamera(); auto cam=renderer->GetActiveCamera(); double pos[3]; double time=0; int endCount=120; for (int i=0;iResetCamera(min[0],max[0],min[1],max[1],min[2],max[2]); renderWindow->Render(); double sec=renderer->GetLastRenderTimeInSeconds(); time+=double(1.0)/(sec); std::cout<<"seconds "<< sec< clock = vtkSmartPointer::New(); clock->StartTimer(); for (int i = 0; i < endCount; i++) { double max[3]={bounds[1]+vtkMath::Random(0,10),bounds[3]+vtkMath::Random(0,10),bounds[5]+vtkMath::Random(0,10)}; double min[3]={bounds[0]+vtkMath::Random(0,10),bounds[2]+vtkMath::Random(0,10),bounds[4]+vtkMath::Random(0,10)}; renderer->ResetCamera(min[0],max[0],min[1],max[1],min[2],max[2]); renderWindow->Render(); } clock->StopTimer(); double frameRate = (double)endCount / clock->GetElapsedTime(); std::cout << "AVERAGE FRAME RATE: " << frameRate << " fps" << std::endl; renderWindowInteractor->Start(); }