vtkPolyData主要由几何结构数据、拓扑结构数据和属性数据组成。
- 几何结构数据主要是组成模型的点集
- 拓扑结构数据时由这些点根据一定的连接关系组成的单元数据,表明了几何点集之间的拓扑关系
- 属性数据与几何结构数据和拓扑结构数据相关联,属性数据可以是标量、向量或者张量。
import vtk
# vtkPolyData数据生成与显示
conSource = vtk.vtkConeSource() # 定义了一个椎体的图形数据
conSource.Update()
cone = conSource.GetOutput()
nPoints = cone.GetNumberOfPoints() # 获取图形数据的点数
nCells = cone.GetNumberOfCells() # 获取图形数据的单元数目
print('Points number:', nPoints)
print('Cells number:', nCells)
# 图形渲染与图像渲染基本一致
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputData(cone)
actor = vtk.vtkActor()
actor.SetMapper(mapper)
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.SetBackground(1.0, 1.0, 1.0)
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindow.SetSize(640, 480)
renderWindow.Render()
renderWindow.SetWindowName('PolyDataSource')
renderWindowInteractor = vtk.vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
renderWindowInteractor.Initialize()
renderWindowInteractor.Start()
VTK常见的vtkPolyData数据源类
vtkPolyData数据的创建
import vtk
points = vtk.vtkPoints() # 用于存储点集合
points.InsertNextPoint(0.0, 0.0, 0.0) # 可以顺序地为其添加点并返回点的索引,从0开始
points.InsertNextPoint(1.0, 0.0, 0.0)
points.InsertNextPoint(1.0, 1.0, 0.0)
points.InsertNextPoint(0.0, 1.0, 0.0)
points.InsertNextPoint(2.0, 0.0, 0.0)
polygon = vtk.vtkPolygon() # 定义一个多边形单元
polygon.GetPointIds().SetNumberOfIds(4) # 需要指定组成该单元的点数,若给定3,则表示三角形
polygon.GetPointIds().SetId(0, 0) # 为指定的点设置索引,注意该索引必须是vtkPoints