安装:
pip install vtk
学习一个东西最快的方法是知道基本原理和用途
VTK有啥用
不能做游戏。适合快速开发绘制静态三维模型。所以类似多用途折叠工具刀用处多,但是不能用在特别费劲的场合。
VTK工作流程(大致看看对vtk各模块做的事有点印象即可)
读取图形数据→过滤→建图→构建执行单元→渲染→打开渲染窗口→交互界面读取图形数据\rightarrow过滤\rightarrow建图\rightarrow构建执行单元\rightarrow渲染\rightarrow打开渲染窗口\rightarrow交互界面读取图形数据→过滤→建图→构建执行单元→渲染→打开渲染窗口→交互界面
1. 读取数据
vtkStructuredPointsReader()
读取*.vtk
文件vtkSTLReader()
读取*.stl
文件
2. 过滤(自己写算法)
3. 建图(将点拼接在一起并填充):vtkPolyDataMapper(vtkPolyData)
4. 执行单元: vtkActor()
一个独立三维模型、一个立方体、一个球就是一个执行单元,这是个对象。它有自己的属性(纹理、朝向、位置等)。
5. 渲染vtkRenderer()
将各个执行单元和背景安装某个视角绘制在一起。此时还看不到图形,因为没有创建窗口。第6步才是创建窗口。
6. 创建渲染窗口 vtkRenderWindow()
7. 交互控制vtkRenderWindowInteractor()
就是我们平常用鼠标可以拖来拖去旋转着看三维模型就是这个类负责。
VTK编程实践(可以细节的看了):画一个立方体
百年不变的步骤:
python使用vtk绘制立方体代码(不理解的可以回头看看vtk各部分做什么的):
import vtk
# 1. 读取数据
cube = vtk.vtkCubeSource()
cube.Update()#记得加这句不加看不到模型
# 2. 建图(将点拼接成立方体)
cube_mapper = vtk.vtkPolyDataMapper()
cube_mapper.SetInputData(cube.GetOutput())
# 3. 根据2创建执行单元
cube_actor = vtk.vtkActor()
cube_actor.SetMapper(cube_mapper)
cube_actor.GetProperty().SetColor(1.0, 0.0, 0.0)
# 4. 渲染(将执行单元和背景组合在一起按照某个视角绘制)
renderer = vtk.vtkRenderer()
renderer.SetBackground(0.0, 0.0, 0.0)#背景只有一个所以是Set()
renderer.AddActor(cube_actor)#因为actor有可能为多个所以是add()
# 5. 显示渲染窗口
render_window = vtk.vtkRenderWindow()
render_window.SetWindowName("My First Cube")
render_window.SetSize(400,400)
render_window.AddRenderer(renderer)# 渲染也会有可能有多个渲染把他们一起显示
# 6. 创建交互控键(可以用鼠标拖来拖去看三维模型)
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)
interactor.Initialize()
render_window.Render()
interactor.Start()