Python使用VTK三維3D圖形繪製入門教程

安裝:pip install vtk

學習一個東西最快的方法是知道基本原理和用途

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()

運行結果

在這裏插入圖片描述
參考文獻:
[1]http://www.cb.uu.se/~aht/Vis2014/lecture2.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章