技术好文:VTK初识VTK

简介: 技术好文: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 //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjYyODE0OA==.html

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在图像//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDE4Mjk3Ng==.html

处理、虚拟现实、计算机图形学中的应用

图像处理:

虚拟现实:

计算机图形:


"
image.png
相关文章
针对一个红队病毒样本逆向分析
近日翻到一个比较新颖的样本,在最终后门载荷释放前运用了不少免杀手段,包括堆栈欺骗,实现反射性调用API,以及DLL侧加载、DLL挖空、HOOK规避等手法,对其执行流程和部分手法做详细分析记录。
|
12月前
|
机器学习/深度学习 存储 算法
《强化学习算法在动态环境中的优化之路》
强化学习是一种通过与环境交互以最大化累积奖励为目标的学习方法。在动态环境中,算法面临探索与利用的平衡、学习速度和稳定性等挑战。优化方法包括改进探索策略(如随机探索、基于策略的探索)、提高学习速度(如多步学习、并行学习)和增强稳定性(如经验回放、正则化)。案例表明,这些优化可显著提升智能体在动态环境中的适应能力和性能。
673 20
|
Unix 网络虚拟化 C++
VS2022+Qt5.14.2成功编译MITK2022.10
使用VS2022和Qt5.14.2成功编译MITK2022.10的过程,包括编译结果的截图、遇到的编译问题的解决方法、两个重要的注意事项(patch文件格式的修改和ITK-gitclone-lastrun文件的存在),以及参考链接。文中详细描述了如何解决编译过程中遇到的错误C2220和警告C4819,以及如何修改文件编码和尾行格式。
962 1
VS2022+Qt5.14.2成功编译MITK2022.10
|
开发框架 Java 开发者
processing完整教程
本文提供了一个关于Processing的完整教程,包括下载、启动Processing、基本编程示例、颜色使用以及如何打印调试信息,适合初学者快速上手Processing编程。
1844 2
|
JavaScript 前端开发 程序员
《JavaScript权威指南第7版》中文PDF+英文PDF+源代码 +JavaScript权威指南(第6版)(附源码)PDF下载阅读分享推荐
JavaScript是Web标准语言,广泛应用于各类浏览器,造就了其最广泛部署的地位。Node.js的兴起扩展了JavaScript的使用场景,使其成为开发者首选语言。无论新手还是经验丰富的程序员,都能受益于学习JavaScript。[《JavaScript权威指南第7版》资源链接](https://zhangfeidezhu.com/?p=224)
1140 5
《JavaScript权威指南第7版》中文PDF+英文PDF+源代码 +JavaScript权威指南(第6版)(附源码)PDF下载阅读分享推荐
|
存储 运维 安全
Java中的数据备份与灾难恢复方案设计
Java中的数据备份与灾难恢复方案设计
|
监控 Unix Linux
|
网络协议 数据安全/隐私保护 网络架构
|
存储 前端开发 UED
HTML中的<img>标签使用指南
HTML中的<img>标签使用指南
1234 3