VTK/Examples/Cxx/PolyData/DataSetSurfaceFilter
From KitwarePublic
This example demonstrates how to convert an unstructured grid to a polydata. Currently nothing is done with the resulting polydata. If someone has a good data set that demonstrates the conversion, please let us know.
DataSetSurfaceFilter.cxx
#include <vtkVersion.h> #include <vtkSmartPointer.h> #include <vtkPolyData.h> #include <vtkUnstructuredGrid.h> #include <vtkCellArray.h> #include <vtkDataSetSurfaceFilter.h> #include <vtkPointSource.h> int main(int, char *[]) { vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid = vtkSmartPointer<vtkUnstructuredGrid>::New(); vtkSmartPointer<vtkDataSetSurfaceFilter> surfaceFilter = vtkSmartPointer<vtkDataSetSurfaceFilter>::New(); #if VTK_MAJOR_VERSION <= 5 surfaceFilter->SetInput(unstructuredGrid); #else surfaceFilter->SetInputData(unstructuredGrid); #endif surfaceFilter->Update(); vtkPolyData* polydata = surfaceFilter->GetOutput(); std::cout << "Output has " << polydata->GetNumberOfPoints() << " points." << std::endl; return EXIT_SUCCESS; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) PROJECT(DataSetSurfaceFilter) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) if (APPLE) add_executable(DataSetSurfaceFilter MACOSX_BUNDLE DataSetSurfaceFilter.cxx) else() add_executable(DataSetSurfaceFilter DataSetSurfaceFilter.cxx) endif() if(VTK_LIBRARIES) target_link_libraries(DataSetSurfaceFilter ${VTK_LIBRARIES}) else() target_link_libraries(DataSetSurfaceFilter vtkHybrid ) endif()
Perform a Delaunay triangulation on a sphere. Show it in wireframe so one can see all of the internal edges. Then run the filter and show that the result is only the outer surface.