VTK简介

news/2024/11/18 13:56:10/

VTK(Visualization ToolKit) 是一个开放源码、自由获取的软件系统,全世界的数以千计的研究人员和开发人员用它来进行3D 计算机图形,图像处理,可视化。VTK 包含一个c++ 类库,众多的翻译接口层,包括Tcl/Tk ,Java,Python 。 Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起来的,它将我们在可视化开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。比如Visualization Toolkit 将我们在表面重建中比较常见的Marching Cubes 算法封装起来,以类的形式给我们以支持,这样我们在对三维规则点阵数据进行表面重建时就不必再重复编写MarchingCubes 算法的代码,而直接使用Visualization Toolkit 中已经提供的vtkMarchingCubes 类。 Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具,它以用户使用的方便性和灵活性为主要原则,具有如下的特点:

(1) 具有强大的三维图形功能。Visualization Toolkit 既支持基于体素Voxel-basedrendering 的体绘制Volume Rendering 又保留了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件。

(2) Visualization Toolkit 的体系结构使其具有非常好的流streaming 和高速缓存caching 的能力,在处理大量的数据时不必考虑内存资源的限制。

(3) Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 随着Web 和Internet 技术的发展Visualization Toolkit 有着很好的发展前景。

(4) 能够支持多种着色。

(5) Visualization Toolkit 具有设备无关性使其代码具有良好的可移植性。

(6) Visualization Toolkit 中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为。

(7) Visualization Toolkit 具有更丰富的数据类型,支持对多种数据类型进行处理 。

(8) 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户。

2. VTK 基本概念

VTK 编程中的核心概念是pipeline ,如图所示:

                  pipeline 示意图

    其中涉及的基本对象有9 个:

下面是这些对象的简单描述和使用方法示例。

(1)Render Interactor : 用于实现与绘制窗口的用户交互。

vtkRenderWindowInteractor iren

iren .SetRenderWindow(renWin) ;       // 与绘制窗口关联

iren .SetImeractorStyle(flightStyle) ;// 设置交互方式

(2)RenderWindow : 接受1 个或多个Renderer 生成场景,并管理显示设备窗口。

vtkRenderWindow renWin

renWin .AddRcnderer(ren) ;            // 关联绘制者

(3)Renderer : 对Light 、Camera 、Actor 进行坐标定位。

vtkRenderer ren

ren .AddActor(actor) ;                 // 添加实体

ren .AddLight(1ight) ;                 // 添加光源

ren .GetAetiveCamera(camera) ;         // 设置当前照相机

(4)Light : 对场景中的Actor 赋予光照度。

vtkLight light

light.SetColor(1 ,0 ,0) ;              // 设置光的颜色

light.SetFocalPoint(cam.GetFocalPoint);// 设置光线焦点

light.SetPosition(cam.GetPosifion) ;   // 设置光源位置

ren.AddLight(1ight) ;                   // 将光源与绘制者关联

(5) Camera : 定义场景的视角、焦点等属性。

VtkCamera cam

Cam.SetClipingRange(O.0475572 ,2.37786) ; // 设置视场法向范围

// 设置焦点坐标

Cam.SetFocaclPoint(0.O52665,-0.129454,-0.0573973)

// 设置照相机位置

Cam.SetPosition(O.327637 ,-0.116299 ,-0.256418) ;

// 重置视场法向

Cam.ComputeViewPlaneNormal ;         

// 置视场上下方向           

cam.SetViewUp(-0.0225386 ,0.999137 ,0.034901) ;

// 将照相机与绘制者关联

ren.SetActiveCamera(cam) ;                  

(6)Actor :场景中绘制的实体,由Mapper 、property 、transform 对象定义。

vtkActor actor

// 设置相关联的映射器

actor.SetMapper(mapper) ;             

// 得到相关联的属性对象     

prop=actor.GetProperty ;                  

// 设置属性对象的属性

prop.SetOpacity(O .25) ;                  

(7)Property: 用于设置Actor 的颜色、亮度、纹理图、绘制方式和阴影方式等表面属性。

vtkProperty prop

// 设置不透明度

prop.SetOpacity(O.25) ;                  

// 设置环境光照系数

prop.SetAmbient(O.5) ;                   

// 设置漫反射光系数

prop.SetDiffuse(0.6) ;                   

// 设置镜面光系数

prop.SetSpecular(1.0) ;                  

// 没置镜面光强度

prop.SetSpecularPower(10 .0) ;            

(8)Mapper: 代表了实体的几何形状

VtkPolyDataMapper mapper

Mapper.SetlookupTable(1ut) ;               // 指定查找表

Mapper.SetInput(plane.GetOutput);          // 设定输入

Mapper.SetScalarRange(0.197813 ,0.710419);// 设定坐标最大值和最小值

(9)Transform: 定义Actor 、Cameras 、Lights 的位置和方向,

由4 x 4 变换矩阵和修改此矩阵的方法组成[23]

vtkTransform trans

trans.Identity ;                        // 转换模式初始化

trans.Translate(0.2 ,0 ,1.25) ;       // 转换

// 指定X 、v 、z 方向上的变换比例

trans .Seale(O .5 ,0 .5 ,0 .5) ;


http://www.ppmy.cn/news/372525.html

相关文章

VTRK+PICO

碰撞检测 1、通过刚体组件(Rigidbody)和碰撞器组件(Collider)来进行检测 选择一个物体添加刚性物体 2、触发检测条件:至少有一方是刚性物体,双方都有mesh collider ​ 碰撞检测条件:主动方是…

VTK- vtkStripper

前言:本博文主要研究接口vtkStripper的实现原理及主要的应用场景,希望对各位小伙伴有所帮助。 描述:vtkStripper是一个过滤器,用于从输入多边形、三角形带和线中生成三角形带和/或折线。输入多边形仅当它们是三角形时才被组装成三…

git 提交到远程仓库 报错 error: failed to push some refs to ‘https://xxxxxx.git‘

git 学习地址 参考链接 报错如下 error: failed to push some refs to https://github.com/GDDXZ/RobotDenso.git hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushi…

2014世界10大DRAM公司

DRAM(Dynamic Random Access Memory),即动态随机存取存储器,是一种 最常见的半导体存储器,主要的作用原理是利用电容内存储电荷的多寡来代表一个二进制比特(bit)是1还是0。据IHS调查显示,2013年世界DRAM的销售值比上年窜升了32.5%…

linux新机怎么下载软件,新机安装linux日记

新主机: CPU: AMD 闪龙2800 主板:昂达N61V (芯片组nVIDIA MPC61) 安装fc5 插入第一张光盘,在:kernel_thread_helper0x4/0xb 就在这里就停住不动了.诸处寻因不得果. 开始以为主板不支持linux,后得知只要芯片组支持就可以了,而且这个芯片组是支持了,因为据说安装uBUNTU没问题. 后…

SDRAM 命名规则

 一般内存条上面如果没有贴标的话,只有通过芯片(港台地区还习惯称为内存颗粒)来看容量了。 例如HY 57V658010CTC-10s, HY表示现代的芯片,57代表SDRAM,65是64M和4K refresh cycles…

JavaScript之创建对象的模式

使用Object的构造函数可以创建对象或者使用对象字面量来创建单个对象,但是这些方法有一个明显的缺点:使用相同的一个接口创建很多对象,会产生大量的重复代码。 (一)工厂模式 这种模式抽象了创建具体对象的过程。考虑…

2011-8-9

2011-8-9 2011年08月09日 第四课 内存 课前导读 内存概述 如何选购内存 安装内存 内存的使用与维护 课后练习 课前导读 基础知识 重点知识 了解知识 基础知识 内存的作用、内存的种类,让读者初步认识和了解内存。 重点知识 内存的性能指标、内存的安装,…