VTK修炼之道1_初识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 geometryGraphics 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相关推荐
- 【转】VTK修炼之道1_初识VTK
1.VTK是什么? Visualization ToolKit 3D计算机图形学.图象处理及可视化工具包 VTK使用C++.面向对象技术开发:基于OpenGL,封装了OpenGL中的功能,屏蔽细节.便 ...
- VTK修炼之道82:VTK管线机制_信息对象类VTKInformation
1.VTK管线机制 VTK中通过管线机制来实现组合各种算法处理数据.每一种算法是一个Filter,多个Filter连接在一起形成VTK管线.每个Filter可以分为两个组成部分:一个是算法对象,继承自 ...
- VTK修炼之道81:VTK开发基础_vtkObject类深入分析
1.前言 相比于vtkObjectBase,我们接触更多的是vtkObject类. vtkObjectBase类主要实现了引用计数,因此vtkObject及其相关子类都继承了该特性. 与此同时,vtk ...
- VTK修炼之道80:VTK开发基础_智能指针与引用计数
1.引用计数 VTK经过多年的开发与维护,已经形成了一套稳定的框架和开发规则.因此,了解这些规则和框架是定制VTK类的基础,这其中用到了大量面向对象的设计模式,例如对象工程模式.观察者/命令模式:还有 ...
- VTK修炼之道77:交互部件_分割/配准类Widget与其他Widget
1.分割/配准交互部件 图像分割与配准是数字图像处理技术两大主要的应用领域,特别是在医学图像处理中. 著名的医学图像分割与配准工具包ITK(Insight Segmentation & Reg ...
- VTK修炼之道58:图形基本操作进阶_点云配准技术(迭代最近点ICP算法)
1.Iterative Closest Points算法 点云数据配准最经典的方法是迭代最近点算法(Iterative Closest Points,ICP).ICP算法是一个迭代的过程,每次迭代中对 ...
- VTK修炼之道3_VTK体系结构2
上一篇博客主要介绍了VTK的构架以及Render Engine.接触过VTK的同学都知道,VTK主要有Pipeline和Render Engine两部分构成,这里详细介绍了Pipeline部分内容. ...
- VTK修炼之道83:Pipeline管线执行模型
1.管线执行模性 请求是VTK执行管线的一个基本操作,一个管线执行模型由多个请求共同完成.管线建立完毕,当显示调用一个Filter的Update()函数时,该Filter的vtkExecutive子类 ...
- VTK修炼之道79:交互与拾取_单位拾取
1.单位拾取 示例代码: #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL) VTK_MODULE_INIT(vtkI ...
最新文章
- RDKit | 基于RDKit绘制黑白颜色的分子
- 从《2018年全球创新指数报告》看中国创新力!
- html屏幕宽度一体式下拉菜单怎么做_针对白屏埋点,我是这样做的
- consul docker方式搭建
- oracle dg 备库未设置convert参数导致ORA-01111,ORA-01110
- Redis使用单线程却快到飞起的原因
- Eureka获取注册信息
- 拳王虚拟项目公社:如何如何打造虚拟自动盈利系统,用虚拟资源实现被动收入?
- Uva 10817 校长的烦恼
- Hive的10种常用优化总结,再也不怕MapReduce分配不均了
- java java se_Java SE 9:尝试资源改进
- python抢小米6自动化脚本
- UVa 10870 - Recurrences 矩阵快速幂
- 【路径规划】基于matlab遗传结合模拟退火算法仓库拣货小车最优路径规划【含Matlab源码 649期】
- 华为p10点击六下android,要被口水喷到死机的华为P10 你用的怎么样
- plc ge c语言编程,geplc编程软件
- python在视频上方加字_如何用python 在视频上添加自己的logo
- sql统计各部门的的男女员工数
- 【Beta】 第四次Daily Scrum Meeting
- 初学者-Python 网页爬取小说