VTK官方用户手册(中文C++版)附末尾,有需要的直接划到末尾
VTK(Visualization Toolkit)是一个开源的、跨平台的软件系统,主要用于三维计算机图形学、图像处理和可视化。它由 Kitware 公司开发和维护,并得到了广泛的社区支持。VTK 提供了丰富的功能来创建交互式的科学可视化应用,广泛应用于医学成像、地理信息系统、工程分析、教育等领域。
图形模型的主要作用是用图形描述几何体构成的场景,可视化流水线的主要作用是把几
何数据(如立方体的顶点坐标)转换成图形数据和负责构建几何体,VTK 使用数据流的方式
把几何体数据转换成图形数据,主要有两个基本类和数据转换相关,它们是:
vtkDataObject
数据对象表达各种类型的数据,vtkDataObject 可以被看作是一个二进制大块(blob)
数据,结构化的数据可以被认为是一个数据集(dataset) (vtkDataSet 类)。
数据对象由几何和拓扑结构组成(点集和单元集),同时数据对象与属性数据(例如缩
放比例和向量)相关,这些属性数据用于描述数据对象中的点集和单元集的属性(对于一个
办公桌而言,描述桌面的颜色、描述桌腿的颜色),单元集是数据对象的基本组成单位(如
一个立方体对象由若干个三角形构成,这些三角形就是单元集,也可以称为图元),图 1-3 显
示了 VTK 支持的各种属性数据。
vtkProcessObject
过程对象一般也称为过滤器,按照某种运算法则对数据对象进行处理,对数据对象的数
据进行优化,过程对象表现系统中的几何形状,数据对象和过程对象连接在一起形成可视化
流水线(例如,数据流网络)。
在可视化流水线中,主要包括源对象、过滤器对象、映射器对象三种对象:
源对象是可视化流水线的起点,依据数据生成的方式,分为如下两种类型:
过程源对象(通过读数据文件产生数据); 程序源对象(数学表达式或其它的数学方法产生数据)
过滤器对象接收一个或多个数据对象作为输入,对数据对象处理之后生成一个或多个数
据对象作为输出。
映射器(Mapper)对象是可视化流水线的终点,是图形模型和可视化模型之间的接口,
其主要作用是将数据对象转换成图形对象,然后由图形引擎绘制出来,复写器是映射器的一
种类型,作用是将数据写入文件或流。
大致流程如下:
+--------------------------+
| 启动程序 |
+--------------------------+
|
v
+--------------------------+
| 创建圆锥模型 |
| - 设置圆锥精细度 |
+--------------------------+
|
v
+--------------------------+
| 准备显示模型 |
| - 将圆锥转换为可显示格式 |
+--------------------------+
|
v
+--------------------------+
| 创建图形对象 |
| - 将模型赋予图形对象 |
+--------------------------+
|
v
+--------------------------+
| 创建场景 |
| - 添加图形对象到场景中 |
| - 设置场景背景颜色 |
+--------------------------+
|
v
+--------------------------+
| 创建窗口 |
| - 把场景放进窗口里 |
| - 设置窗口大小 |
+--------------------------+
|
v
+--------------------------+
| 创建交互功能 |
| - 让用户可以与窗口互动 |
+--------------------------+
|
v
+--------------------------+
| 显示窗口并开始互动 |
| - 绘制图形 |
| - 等待用户操作 |
+--------------------------+
|
v
+--------------------------+
| 结束程序 |
+--------------------------+
首先下载vtk库,可win+R输入
pip install vtk
也可在自己编辑器中下载。
创建圆锥源并设置分辨率:
# 创建一个圆锥源
cone_source = vtk.vtkConeSource()
# 设置分辨率为20
cone_source.SetResolution(200)
数据转换: vtkPolyDataMapper是 VTK(Visualization Toolkit)中的一个类,用于将vtkPolyDataMapper 数据映射到图形表示中。它是连接数据源和图形渲染的重要桥梁。
# 创建一个 PolyDataMapper
mapper = vtk.vtkPolyDataMapper()
# 将输入设置为圆锥源的输出端口
mapper.SetInputConnection(cone_source.GetOutputPort())
renderer.AddActor(actor)
是 VTK(Visualization Toolkit)中用于将 vtkActor
添加到 vtkRenderer
的方法。每个 vtkActor
表示一个可以被渲染的对象,而 vtkRenderer
负责管理场景中的所有 Actor,并将它们绘制到窗口中。
# 创建一个 Actor
actor = vtk.vtkActor()
# 将映射器设置为上面的mapper
actor.SetMapper(mapper)
# 创建一个 Renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.SetBackground(0.1, 0.2, 0.4) # 设置背景颜色
vtkRenderWindow
是 VTK 中用于管理渲染窗口的核心类之一,它负责将一个或多个 vtkRenderer
的内容绘制到屏幕上。
# 创建一个 RenderWindow,绘制
render_window = vtk.vtkRenderWindow()
# 添加renderer
render_window.AddRenderer(renderer)
render_window.SetSize(300, 300)
创建一个VTK(Visualization Toolkit)交互器,并将其与一个渲染窗口关联起来。
# 创建一个 RenderWindowInteractor
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)
开始交互
# 开始交互
interactor.Initialize()
render_window.Render()
interactor.Start()
完整代码
import vtk
def main():
# 创建一个圆锥源
cone_source = vtk.vtkConeSource()
# 设置分辨率为20
cone_source.SetResolution(200)
# 创建一个 PolyDataMapper
mapper = vtk.vtkPolyDataMapper()
# 将输入设置为圆锥源的输出端口
mapper.SetInputConnection(cone_source.GetOutputPort())
# 创建一个 Actor
actor = vtk.vtkActor()
# 将映射器设置为上面的mapper
actor.SetMapper(mapper)
# 创建一个 Renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.SetBackground(0.1, 0.2, 0.4) # 设置背景颜色
# 创建一个 RenderWindow,绘制
render_window = vtk.vtkRenderWindow()
# 添加renderer
render_window.AddRenderer(renderer)
render_window.SetSize(300, 300)
# 创建一个 RenderWindowInteractor
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)
# 开始交互
interactor.Initialize()
render_window.Render()
interactor.Start()
if __name__ == "__main__":
main()
运行结果
运行出来的圆锥,鼠标点击会自动转动,我这里不作演示。
VTK用户手册(中文C++版):
通过百度网盘分享的文件:VTK用户手册.pdf 链接:https://pan.baidu.com/s/1-ZAVRFuOowuH-znoQxc5VQ 提取码:yust