对如下vtkpolydata (.vtp) 表面充满层次感, 并不光滑, 希望使其变得光滑的处理
经过处理之后效果
def smooth(pdata, is_stripper=False, feature_angle=120, iterations=20):
"""
平滑polydata数据
pdata: vtkpolydata数据
"""
clean = vtk.vtkCleanPolyData()
clean.SetInputData(pdata)
clean.Update()
_filter = vtk.vtkWindowedSincPolyDataFilter()
_filter.SetInputData(clean.GetOutput())
_filter.SetNumberOfIterations(iterations) # 设置迭代次数
_filter.BoundarySmoothingOff() # 关闭边界平滑
_filter.FeatureEdgeSmoothingOff() # 关闭特征边界平滑
_filter.SetFeatureAngle(feature_angle) # 设置特征角度
_filter.SetPassBand(0.001)
_filter.NormalizeCoordinatesOn()
_filter.Update() # 执行过滤操作
poly_data = _filter.GetOutput()
normals = vtk.vtkPolyDataNormals()
normals.SetInputData(clean.GetOutput())
normals.SetFeatureAngle(feature_angle)
normals.Update()
stripper = vtk.vtkStripper()
stripper.SetInputData(normals.GetOutput())
stripper.Update()
poly_data = stripper.GetOutput()
return poly_data