等值面提取
vtkSmartPointer<vtkMarchingCubes> pSurfaceExtractor = vtkSmartPointer<vtkMarchingCubes>::New();
pSurfaceExtractor->SetInputData(pImageData);
pSurfaceExtractor->SetValue(0, 200);
pSurfaceExtractor->ComputeGradientsOff();
pSurfaceExtractor->ComputeNormalsOff();
pSurfaceExtractor->ComputeScalarsOff();
pSurfaceExtractor->Update();
vtkSmartPointer<vtkPolyData> pPolyData = vtkSmartPointer<vtkPolyData>::New();
pPolyData->DeepCopy(pSurfaceExtractor->GetOutput());
平滑处理
vtkSmartPointer<vtkWindowedSincPolyDataFilter> pSmooth = vtkSmartPointer<vtkWindowedSincPolyDataFilter>::New();
pSmooth ->SetInputData(pPolyData);
pSmooth ->SetNumberOfIterations(10);
double passBand = 0.01;
pSmooth->SetPassBand(passBand);
pSmooth->BoundarySmoothingOff();
pSmooth->FeatureEdgeSmoothingOff();
pSmooth->NonManifoldSmoothingOn();
pSmooth->NormalizeCoordinatesOn();
pSmooth->Update();
vtkSmartPointer<vtkPolyDataMapper> pDataMapper = = vtkSmartPointer<vtkPolyDataMapper>::New();
pDataMapper->SetInputData(pSmooth->GetOutput());
pDataMapper->ScalarVisibilityOff();
pDataMapper->Update();
生成vtkActor
vtkSmartPointer<vtkActor> pActor = vtkSmartPointer<vtkActor>::New();
pActor ->SetMapper(pDataMapper);
pActor ->GetProperty()->SetColor(1, 1, 1);
pActor ->GetProperty()->SetOpacity(1);
pActor ->GetProperty()->SetInterpolation(1);
pActor ->GetProperty()->SetRepresentation(2);
pActor ->GetProperty()->SetBackfaceCulling(0);
pActor ->GetProperty()->SetEdgeVisibility(0);
pActor ->GetProperty()->SetFrontfaceCulling(0);
pActor ->SetOrigin(0, 0, 0);
pActor ->SetPosition(0, 0, 0);
pActor ->SetScale(1, 1, 1);
pActor ->SetVisibility(1);