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:
用伪代码来表征这个过程为:
Main() { create a window; create a renderer;  give the rendererto  the window;create procedural geometry; create a mapper; give the geometryto the mapper; create an actor; give the mapper to the actor; give the actor to the renderer; window->render();
}

即:Windows->Render->Actor->Mapper->Geometry

3.VTK的开发流程

4.一个比较震撼的实例

//得到图像文件
vtkDICOMImageReader *Reader  = vtkDICOMReader::New();
Reader ->SetDirectoryName("");
Reader ->Update();
//MC
vtkMarchingCubes *m_MC = vtkMarchingCubes::New();
m_MC ->SetInput(Reader->GetOutput());
m_MC ->SetValue(0, 200);
//获得皮肤几何数据的属性
vtkPolyDataMapper *Mapper= vtkPolyDataMapper::New();
Mapper-SetInput(m_MC ->GetOutput());
//显示
vtkActor *m_actor = vtkActor::New();
m_actor->SetMapper(m_isoMapper);
//皮肤颜色
m_actor->GetProperty()->SetDiffuseColor(0, .49, .25);
//设置反射率
m_actor->GetProperty()->SetSpecular(0.3);
//设置反射光强
m_actor->GetProperty()->SetSpecularPower(20);
//不透明度
m_actor->GetProperty()->SetOpacity(1);
//绘制
vtkRenderer *m_renderer = vtkRenderer::New();
m_renderer ->AddActor(m_actor);
m_renderer ->SetBackground(0.2,0.5,0.3);vtkWin32OpenGLRenderWindow *m_renWin = vtkWin32OpenGLRenderWindow::New();
m_renWin-> AddRenderer(m_renderer);
m_renWin-> Render();vtkRenderWindowInteractor *m_iren = vtkRenderWindowInteractor::New();
m_iren->SetRenderWindow(m_renWin);

VTK主要工作流程符合流水线机制,永恒不变,但使用起来要灵活应用其中的一些类,不要单纯的拘泥于最基本的流水线,其实有些类充当一个角色,有些类可以连续承担多个角色。

5.VTK在图像处理、虚拟现实、计算机图形学中的应用

图像处理:
       
虚拟现实:
      
计算机图形:
       

VTK修炼之道1_初识VTK相关推荐

  1. 【转】VTK修炼之道1_初识VTK

    1.VTK是什么? Visualization ToolKit 3D计算机图形学.图象处理及可视化工具包 VTK使用C++.面向对象技术开发:基于OpenGL,封装了OpenGL中的功能,屏蔽细节.便 ...

  2. VTK修炼之道82:VTK管线机制_信息对象类VTKInformation

    1.VTK管线机制 VTK中通过管线机制来实现组合各种算法处理数据.每一种算法是一个Filter,多个Filter连接在一起形成VTK管线.每个Filter可以分为两个组成部分:一个是算法对象,继承自 ...

  3. VTK修炼之道81:VTK开发基础_vtkObject类深入分析

    1.前言 相比于vtkObjectBase,我们接触更多的是vtkObject类. vtkObjectBase类主要实现了引用计数,因此vtkObject及其相关子类都继承了该特性. 与此同时,vtk ...

  4. VTK修炼之道80:VTK开发基础_智能指针与引用计数

    1.引用计数 VTK经过多年的开发与维护,已经形成了一套稳定的框架和开发规则.因此,了解这些规则和框架是定制VTK类的基础,这其中用到了大量面向对象的设计模式,例如对象工程模式.观察者/命令模式:还有 ...

  5. VTK修炼之道77:交互部件_分割/配准类Widget与其他Widget

    1.分割/配准交互部件 图像分割与配准是数字图像处理技术两大主要的应用领域,特别是在医学图像处理中. 著名的医学图像分割与配准工具包ITK(Insight Segmentation & Reg ...

  6. VTK修炼之道58:图形基本操作进阶_点云配准技术(迭代最近点ICP算法)

    1.Iterative Closest Points算法 点云数据配准最经典的方法是迭代最近点算法(Iterative Closest Points,ICP).ICP算法是一个迭代的过程,每次迭代中对 ...

  7. VTK修炼之道3_VTK体系结构2

    上一篇博客主要介绍了VTK的构架以及Render Engine.接触过VTK的同学都知道,VTK主要有Pipeline和Render Engine两部分构成,这里详细介绍了Pipeline部分内容. ...

  8. VTK修炼之道83:Pipeline管线执行模型

    1.管线执行模性 请求是VTK执行管线的一个基本操作,一个管线执行模型由多个请求共同完成.管线建立完毕,当显示调用一个Filter的Update()函数时,该Filter的vtkExecutive子类 ...

  9. VTK修炼之道79:交互与拾取_单位拾取

    1.单位拾取 示例代码: #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL) VTK_MODULE_INIT(vtkI ...

最新文章

  1. RDKit | 基于RDKit绘制黑白颜色的分子
  2. 从《2018年全球创新指数报告》看中国创新力!
  3. html屏幕宽度一体式下拉菜单怎么做_针对白屏埋点,我是这样做的
  4. consul docker方式搭建
  5. oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110
  6. Redis使用单线程却快到飞起的原因
  7. Eureka获取注册信息
  8. 拳王虚拟项目公社:如何如何打造虚拟自动盈利系统,用虚拟资源实现被动收入?
  9. Uva 10817 校长的烦恼
  10. Hive的10种常用优化总结,再也不怕MapReduce分配不均了
  11. java java se_Java SE 9:尝试资源改进
  12. python抢小米6自动化脚本
  13. UVa 10870 - Recurrences 矩阵快速幂
  14. 【路径规划】基于matlab遗传结合模拟退火算法仓库拣货小车最优路径规划【含Matlab源码 649期】
  15. 华为p10点击六下android,要被口水喷到死机的华为P10 你用的怎么样
  16. plc ge c语言编程,geplc编程软件
  17. python在视频上方加字_如何用python 在视频上添加自己的logo
  18. sql统计各部门的的男女员工数
  19. 【Beta】 第四次Daily Scrum Meeting
  20. 初学者-Python 网页爬取小说

热门文章

  1. kienct -color
  2. 树的更多相关算法-3
  3. VMware View 与 Citrix Xendesktop 管理大比拼
  4. 资料收集--Subversion与CVS的优势
  5. hdu 1506(dp || 单调栈)
  6. vs2015 + opencv3.4 配置
  7. NYOJ练习题 又见Alice and Bob
  8. Python - 按天算年龄
  9. FLP不可能性(FLP impossibility)
  10. 1 Orchard 入门篇-Orchard 基本概念