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