/********************************************************************** 文件名: 6.2_PolyDataCurvature.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //测试文件:../data/fran_cut.vtk int main(int argc, char *argv[]) { if(argc < 2) { std::cout< reader = vtkSmartPointer::New(); reader->SetFileName(argv[1]); reader->Update(); vtkSmartPointer curvaturesFilter = vtkSmartPointer::New(); curvaturesFilter->SetInputConnection(reader->GetOutputPort()); //curvaturesFilter->SetCurvatureTypeToMinimum(); curvaturesFilter->SetCurvatureTypeToMaximum(); //curvaturesFilter->SetCurvatureTypeToGaussian(); //curvaturesFilter->SetCurvatureTypeToMean(); curvaturesFilter->Update(); double scalarRange[2]; curvaturesFilter->GetOutput()->GetScalarRange(scalarRange); vtkSmartPointer lut = vtkSmartPointer::New(); lut->SetHueRange(0.0,0.6); lut->SetAlphaRange(1.0,1.0); lut->SetValueRange(1.0,1.0); lut->SetSaturationRange(1.0,1.0); lut->SetNumberOfTableValues(256); lut->SetRange(scalarRange); lut->Build(); vtkSmartPointer mapper = vtkSmartPointer::New(); mapper->SetInput(curvaturesFilter->GetOutput()); mapper->SetLookupTable(lut); mapper->SetScalarRange(scalarRange); vtkSmartPointer actor = vtkSmartPointer::New(); actor->SetMapper(mapper); vtkSmartPointer scalarBar = vtkSmartPointer::New(); scalarBar->SetLookupTable(mapper->GetLookupTable()); scalarBar->SetTitle( curvaturesFilter->GetOutput()->GetPointData()->GetScalars()->GetName()); scalarBar->SetNumberOfLabels(5); vtkSmartPointer renderer = vtkSmartPointer::New(); renderer->AddActor(actor); renderer->AddActor2D(scalarBar); renderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(renderer); renderWindow->SetSize(640, 480); renderWindow->Render(); renderWindow->SetWindowName("PolyDataCurvature"); vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New(); renderWindowInteractor->SetRenderWindow(renderWindow); renderWindow->Render(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }