VTK 初識VTK


1.VTK是什么?

Visualization ToolKit
3D計算機圖形學、圖象處理及可視化工具包
 
VTK使用C++、面向對象技術開發;基於OpenGL,封裝了OpenGL中的功能,屏蔽細節、便於交互、易於使用提供多種語言接口C++ 、Java 、Tcl、 Python 等;可在Windows 98/NT, SGI, Linux,  Sun, HP等系統編譯運行;最重要的一點是:開源(Open Source)。
典型應用一:體繪制
      
典型應用二:面繪制
   
典型應用三:矢量場的可視化

2.VTK的使用流程

VTK  流水線機制
Visualization Model:generation geometry
Graphics Model:rendering
一般可視化流程可以詳細表述為:
繪圖過程( Graphics Model ):目的是將圖形原語在屏幕上顯示。
下面舉一個典型的例子來理解Actor:
 
用偽代碼來表征這個過程為:
 1 Main() {  2  create a window;  3  create a renderer; give the renderer  4  to the window;  5  create procedural geometry;  6  create a mapper; give the geometry  7  to the mapper;  8  create an actor; give the mapper to  9  the actor; 10  
11  give the actor to the renderer; 12     window->render(); 13 }
即:Windows->Render->Actor->Mapper->Geometry

3.VTK的開發流程

4.一個比較震撼的實例

 1 //得到圖像文件
 2 vtkDICOMImageReader *Reader  = vtkDICOMReader::New();  3 Reader ->SetDirectoryName("");  4 Reader ->Update();  5 //MC
 6 vtkMarchingCubes *m_MC = vtkMarchingCubes::New();  7 m_MC ->SetInput(Reader->GetOutput());  8 m_MC ->SetValue(0, 200);  9 //獲得皮膚幾何數據的屬性
10 vtkPolyDataMapper *Mapper= vtkPolyDataMapper::New(); 11 Mapper-SetInput(m_MC ->GetOutput()); 12 //顯示
13 vtkActor *m_actor = vtkActor::New(); 14 m_actor->SetMapper(m_isoMapper); 15 //皮膚顏色
16 m_actor->GetProperty()->SetDiffuseColor(0, .49, .25); 17 //設置反射率
18 m_actor->GetProperty()->SetSpecular(0.3); 19 //設置反射光強
20 m_actor->GetProperty()->SetSpecularPower(20); 21 //不透明度
22 m_actor->GetProperty()->SetOpacity(1); 23 //繪制
24 vtkRenderer *m_renderer = vtkRenderer::New(); 25 m_renderer ->AddActor(m_actor); 26 m_renderer ->SetBackground(0.2,0.5,0.3); 27  
28 vtkWin32OpenGLRenderWindow *m_renWin = vtkWin32OpenGLRenderWindow::New(); 29 m_renWin-> AddRenderer(m_renderer); 30 m_renWin-> Render(); 31  
32 vtkRenderWindowInteractor *m_iren = vtkRenderWindowInteractor::New(); 33 m_iren->SetRenderWindow(m_renWin);
 
VTK主要工作流程符合流水線機制,永恆不變,但使用起來要靈活應用其中的一些類,不要單純的拘泥於最基本的流水線,其實有些類充當一個角色,有些類可以連續承擔多個角色。

5.VTK在圖像處理、虛擬現實、計算機圖形學中的應用

圖像處理:
       
虛擬現實:
      
計算機圖形:
       


免責聲明!

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



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