非结构化Grid 的网格线

之前我们说过如何查看两个多面体内部的Feature Lines 和外部的 Outline。然而那种方法只适用于Polygonal data,对于Unstructure Grid 并不适用。所以如果我们想要将Unstructured Grid显示出来,那么就需要vtkGeometryFilter这个功能。详情请看下图:

Figure 1 - Mesh visualization pipeline [1]

Putanowicz and Magoules simplified the visualization process of unstructured grids with VTK [1]. The figure shown above clearly displayed how the outline grid can be presented by the VTK reader. 总体的实现过程可查看如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def file_open(self, path):
vtkReader = vtk.vtkUnstructuredGridReader()
vtkReader.SetFileName(path)
vtkReader.ReadAllVectorsOn()
vtkReader.ReadAllScalarsOn()
vtkReader.Update()

vtkMapper = vtk.vtkDataSetMapper()
vtkMapper.SetInputConnection(vtkReader.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(vtkMapper)
actor.GetProperty().SetOpacity(0.9)
# actor.VisibilityOff()
self.renderer.AddActor(actor)
self.renderer.ResetCamera()

# Create mesh outline via converting unstructured grid to polydata
# vtkGeometryFilter and vtkExtractEdges used at here
geometry = vtk.vtkGeometryFilter()
geometry.SetInputConnection(vtkReader.GetOutputPort())
poly_mapper = vtk.vtkPolyDataMapper()
extract = vtk.vtkExtractEdges()
extract.SetInputConnection(geometry.GetOutputPort())
poly_mapper.SetInputConnection(extract.GetOutputPort())
poly_actor = vtk.vtkActor()
poly_actor.SetMapper(poly_mapper)
# poly_actor.VisibilityOff()
self.renderer.AddActor(poly_actor)
self.renderer.ResetCamera()

根据以上代码,我们就可以将grid outline 显示出来了。

Figure 2 - Plate with meshed grid shown in the Python designed VTK interface

Figure 3 - Plate with meshed grid shown in the Paraview


Reference

[1] Putanowicz, R. and Magoules, F., 2003. Simple visualizations of unstructured grids with VTK.