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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM