/********************************************************************** 文件名: 6.7_PolyDataSurfaceReconstruction.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 #include //测试文件:../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 points = vtkSmartPointer::New(); points->SetPoints(reader->GetOutput()->GetPoints()); vtkSmartPointer surf = vtkSmartPointer::New(); surf->SetInput(points); surf->SetNeighborhoodSize(20); surf->SetSampleSpacing(0.005); vtkSmartPointer contour = vtkSmartPointer::New(); contour->SetInputConnection(surf->GetOutputPort()); contour->SetValue(0, 0.0); double leftViewport[4] = {0.0, 0.0, 0.5, 1.0}; double rightViewport[4] = {0.5, 0.0, 1.0, 1.0}; vtkSmartPointer vertexGlyphFilter = vtkSmartPointer::New(); vertexGlyphFilter->AddInput(points); vtkSmartPointer vertexMapper = vtkSmartPointer::New(); vertexMapper->SetInput(vertexGlyphFilter->GetOutput()); vertexMapper->ScalarVisibilityOff(); vtkSmartPointer vertexActor = vtkSmartPointer::New(); vertexActor->SetMapper(vertexMapper); vertexActor->GetProperty()->SetColor(1.0, 0.0, 0.0); vtkSmartPointer vertexRenderer = vtkSmartPointer::New(); vertexRenderer->AddActor(vertexActor); vertexRenderer->SetViewport(leftViewport); vertexRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer surfMapper = vtkSmartPointer::New(); surfMapper->SetInput(contour->GetOutput()); surfMapper->ScalarVisibilityOff(); vtkSmartPointer surfActor = vtkSmartPointer::New(); surfActor->SetMapper(surfMapper); surfActor->GetProperty()->SetColor(1.0, 0.0, 0.0); vtkSmartPointer surfRenderer = vtkSmartPointer::New(); surfRenderer->AddActor(surfActor); surfRenderer->SetViewport(rightViewport); surfRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renWin = vtkSmartPointer::New(); renWin->AddRenderer(surfRenderer); renWin->AddRenderer(vertexRenderer); renWin->SetSize(640, 320); renWin->Render(); renWin->SetWindowName("PolyDataSurfaceReconstruction"); vtkSmartPointer iren = vtkSmartPointer::New(); iren->SetRenderWindow(renWin); renWin->Render(); iren->Start(); return EXIT_SUCCESS; }