Предположим, что у меня есть vtkPolyData
, и мне нужно извлечь из него граничные узлы. Я пытаюсь выполнить:
// here are 9 points (see picture below)
vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(0,0,0);
points->InsertNextPoint(-1,0,0);
points->InsertNextPoint(-1,1,0);
points->InsertNextPoint(0,1,0);
points->InsertNextPoint(1,1,0);
points->InsertNextPoint(1,0,0);
points->InsertNextPoint(1,-1,0);
points->InsertNextPoint(0,-1,0);
points->InsertNextPoint(-1,-1,0);
vtkSmartPointer<vtkPolyData> pointsPolydata =
vtkSmartPointer<vtkPolyData>::New();
pointsPolydata ->SetPoints(points);
// create vertices for these points
vtkSmartPointer<vtkVertexGlyphFilter> vertexFilter =
vtkSmartPointer<vtkVertexGlyphFilter>::New();
vertexFilter->SetInputData(pointsPolydata );
vertexFilter->Update();
vtkSmartPointer<vtkPolyData> polydata =
vtkSmartPointer<vtkPolyData>::New();
polydata->ShallowCopy(vertexFilter->GetOutput()); // ready to extract boundary
// apply filter
vtkSmartPointer<vtkFeatureEdges> featureEdges =
vtkSmartPointer<vtkFeatureEdges>::New();
featureEdges->SetInputData(polydata);
featureEdges->BoundaryEdgesOn();
featureEdges->FeatureEdgesOff();
featureEdges->ManifoldEdgesOff();
featureEdges->NonManifoldEdgesOff();
featureEdges->Update();
// visualization
vtkSmartPointer<vtkPolyDataMapper> edgeMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
edgeMapper->SetInputData(featureEdges->GetOutput());
vtkSmartPointer<vtkActor> edgeActor =
vtkSmartPointer<vtkActor>::New();
edgeActor->SetMapper(edgeMapper);
edgeActor->GetProperty()->SetPointSize(10);
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(edgeActor);
renderWindow->Render();
renderWindowInteractor->Start();
Но это дает мне пустое окно ... Где я сбился с пути?
Это изображение представляет необработанные данные