1、vtkImagedata:vtkImageShrink3D
vtkSmartPointer<vtkImageShrink3D> pImageShrink3D = vtkSmartPointer<vtkImageShrink3D>::New(); pImageShrink3D->SetShrinkFactors(2, 2, 2);//x、y、z三方向均减采样1/2 pImageShrink3D->AveragingOn(); pImageShrink3D->SetInputData(vtkImagedata);//输入vtkImagedata pImageShrink3D->GetOutputPort();//输出为vtkImagedata2、vtkPolydata:vtkDecimatePro(保持拓扑结构不变,减少点与单元)
vtkSmartPointer<vtkTriangleFilter> pTriangle = vtkSmartPointer<vtkTriangleFilter>::New(); pTriangle->SetInputData(pNailPolydataNew);//vtkDecimatePro只处理triangles,所以用vtkTriangleFilter转换 vtkSmartPointer<vtkDecimatePro> pDecimate = vtkSmartPointer<vtkDecimatePro>::New(); pDecimate->SetInputConnection(pTriangle->GetOutputPort()); pDecimate->SetTargetReduction(0.9);//90%的数据将被裁剪 pDecimate->PreserveTopologyOff();//条件1 pDecimate->SplittingOn();//条件2 pDecimate->BoundaryVertexDeletionOn();//条件3 pDecimate->SetMaximumError(VTK_DOUBLE_MAX);//条件4 条件1-4是vtkDecimatePro裁剪polydata时必须遵守的 pDecimate->Update(); pNailPolydataNew = pDecimate->GetOutput();