一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

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在图像处理、虚拟现实、计算机图形学中的应用

图像处理:
       
虚拟现实:
      
计算机图形:
       
posted on   一杯清酒邀明月  阅读(2082)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-01-06 VisionPro 图标工具说明
2020-01-06 Qt OpenCV::Mat与Qt::QImage相互转换
2020-01-06 QT .和::和:和->
2020-01-06 Qt QImage的浅拷贝与深拷贝
2020-01-06 Qt QImag图像保存、格式转换
2020-01-06 Qt 获取当前时间
2020-01-06 Qt 信号阻塞和断开
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示