vtkAppendPolyData 加点后应该怎么网格化

img


现在网格模型 和 点模型 用 vtkAppendPolyData 合在一起生成的一个 vtkActor 但是点没有网格化
vtkTriangleFilter 转换后的也没有网格化,应该怎么才能把 这些点网格化呢?

如果你想将一个点云数据(即仅有点而没有拓扑关系的数据)转换为有拓扑关系的网格数据,可以尝试以下方法:

1.用 vtkDelaunay2D 进行二维三角剖分。这个滤波器可以将点云数据转换为三角形网格数据,以便于渲染。

delaunay = vtk.vtkDelaunay2D()
delaunay.SetInputData(polydata)  # 设置点云数据作为输入
delaunay.Update()  # 进行计算

2.用 vtkSurfaceReconstructionFilter 进行表面重构。这个滤波器可以根据点云数据的密度和分布情况,推断出表面的形状,然后将其转换为网格数据。这个方法相比前一种方法更加高级,但是计算复杂度也更高。

surf = vtk.vtkSurfaceReconstructionFilter()
surf.SetInputData(polydata)  # 设置点云数据作为输入
surf.Update()  # 进行计算

cf = vtk.vtkContourFilter()
cf.SetInputConnection(surf.GetOutputPort())  # 设置输出作为输入
cf.SetValue(0, 0.0)
cf.Update()

polydata = cf.GetOutput()  # 获取输出网格数据

注意,以上方法只是将点云数据转换为拓扑结构的三角网格数据,并不能生成表面的纹理信息。如果需要生成表面纹理,还需要根据应用场景进行相应的处理。