VTK使用基础

2019-08-03 13:44

CadCaeCamPlm专业门户网站 联系HuangSteve@163.com

第四章 The Basics (VTK使用基础)

yefeng2005

一.主要内容:

VTK 是由 Will Schroeder 等创立的 Kitware Inc. 的开放源码产品。Kitware 提供关于VTK 的技术支持和各种服务产品,包括教科书和用户指南:The Visualization Toolkit An Object-Oriented Approach To 3D Graphics, 3rd edition 和 The Visualization Toolkit User's Guide 。两本书的内容各有侧重,教科书主要介绍可视化的各种算法以及 VTK 中的数据结构,而用户指南强调软件的使用方法。本章主要简单介绍VTK的使用基础,让用户了解VTK的使用方式。

D 章节内容:

1.1 创建简单模型

VTK的主要的作用有:读取数据,产生数据,滤波处理,描绘图形和交互操作。其中,我们有两种基本的方法来获得数据:数据存贮在文件中,我们就将其读到系统中;通过一些算法或者数学方式来产生的数据。(读取文件数据,自行生成数据)

Source Objects:在可视化通道中进行初始化处理的对象。

Procedural (Source) Object:产生数据的对象(可产生球,立方体,锥体等图形) Reader (source) object:读取数据的对象 1.1.1 Procedural Source Object(源程序对象)

VTK/Examples/Rendering/Tcl/Clinder.tcl代码解释说明。可以通过这个代码来了解一些基本的图形和

可视化的概念。(生成一个8边柱体)

1.1.2 Reader Source Object

TK/Examples/Rendering/Tcl/CADPart.tcl 代码解释说明。(载入一个STL格式的文件)

1.2 使用VTK人机交互接口

VTK有很多方法来使你与可视化的数据进行交互:(但都是以鼠标键盘为输入)

1.2.1 键盘J/T 图形旋转风格,是鼠标左键按下就旋转还是要鼠标拖动才旋转

1.2.2 键盘C/A 控制camera 和actor的风格.camera风格中,鼠标事件影响摄像机位置和焦点,而在Actor

风格中鼠标事件只作用于Actor.(按A后图像旋转时其外部框架不动)

1.2.3 鼠标左键,控制图形旋转

1.2.4 鼠标中键,(滚轮)控制图形移动

1.2.5 鼠标右键,控制图形放缩(滚轮的滚动也可以缩放图形) 1.2.6 键盘E 退出exit

1.2.7 键盘R 将图像图形恢复到初始位置 1.2.8 键盘P 绘制出所选图形的区域势力范围 1.2.9 键盘U 可做为用户自定义的交互接口

1.2.10 键盘W 只显示图形的轮廓线,或者说显示图形的网状结构 1.2.11 键盘S 与键盘W相反恢复到正常显示状态 交互风格

VTK中自定义的一些与交互相关的函数.在VTK中用vtkInteractorStyleTrackballCamera:: SetInteractorStyle()这个方法来改变设置交互风格. 有关交互风格定义的类如下:

www.CadCaeCam.com/Forum/index.htm

CadCaeCamPlm专业门户网站收集整理, 版权属于原作者 联系HuangSteve@163.com

第 1 页 共 10 页

CadCaeCamPlm专业门户网站 联系HuangSteve@163.com

#include \#include \#include \

#include \#include \#include \#include \以上类都是vtkInteractorStyle的子类 使用方式如下:

vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New(); iren->SetInteractorStyle(style);

1.3 对数据的filter处理(滤波/过滤)

Filter是一种数据处理机制,有一个或多个输入,有一个输出.其目的是对图形图像数据进行处理,以得到我们期望中的数据.

如专门对图像数据进行处理的类有:

#include \#include \

#include \#include \#include \

#include \#include \#include \#include \

#include \#include \ #include \

#include \ #include \ #include \#include \ #include \#include \#include \#include \ #include \#include \

以上的类大都可以用作对二维图像的图像处理.也可以做为三维图像volume的图像处理.

vtkShrinkPolyData的作用是将图形中的所有三角面片缩小一定的比例,但整个图形的大小没有变,这就使得图形中出现龟裂.

有关VTK管道流滤波的原理请看第10章,有关具体的管道流类的介绍使用方法请看第14章.

www.CadCaeCam.com/Forum/index.htm

CadCaeCamPlm专业门户网站收集整理, 版权属于原作者 联系HuangSteve@163.com

第 2 页 共 10 页

CadCaeCamPlm专业门户网站 联系HuangSteve@163.com

1.4对摄像机camera的控制

Camera在VTK中可以理解成视点,即观察图形的位置,或称虚拟照像机来实现3D视图

It is convenient to create an initial view of the data. The FocalPoint(视点) and Position form a vector(矢量) direction. Later on (ResetCamera() method) this vector is used to position the camera to look at the data in this direction.

对camera的操作方法如下:

vtkCamera *aCamera = vtkCamera::New(); aCamera->SetViewUp (0, 0, -1);//设视角位置 aCamera->SetPosition (0, 1, 0);//设观察对象位置 aCamera->SetFocalPoint (0, 0, 0);//设焦点

aCamera->ComputeViewPlaneNormal();//自动

aRenderer->SetActiveCamera(aCamera);

关于camera还有两个重要的方法:

Azimuth(150)//表示camera的视点位置沿顺时针旋转150度角 Elevation(60)// 表示camera的视点位置沿向上的方面旋转60度角 这两个方法使摄像机在一个球面中移动。

1.5 灯光控制

灯光在VTK中并不是十分必要的,当编程时,如果不设灯光的话会是正常显示图形,但如果设置了

光,那么出现的情况是阴影的出现,灯光照不到的地方将会出现明显的阴影。在我们的医学三维图像处理的编程过程中还没有发现有用Light的必要.

灯光的设置比较简单,只要设定三个方法就可: SetColor()灯光着色 ,默认为白光

SetFocalPoint()灯光照向的位置,焦点 SetPosition() 光源位置

通常,所定义的光源为方向光源,光源位置和焦点决定光的方向. 程序范例:

vtkLight *light = vtkLight::New();

light->SetFocalPoint(1.875,0.6125,0); light->SetPosition(0.875,1.6125,1); light->SetColor(1,0,0); ren1->AddLight(light);

1.6 Controlling 3D Props(控制3D图形)

1.6.1设定三维图形在空间中的位置,初始时的旋转角度,起始点

vtkProp3D类中的方法(vtkProp3D是vtkActor的父类). 在VTK中用vtkProp3D用控制要绘制图形的位置,位置的移动,图形的旋转,设置三维世界的标量.

www.CadCaeCam.com/Forum/index.htm

CadCaeCamPlm专业门户网站收集整理, 版权属于原作者 联系HuangSteve@163.com

第 3 页 共 10 页

CadCaeCamPlm专业门户网站 联系HuangSteve@163.com

在对图形旋转时主要是对XYZ三个轴方向分别进行旋转,是先Y轴,然后X轴,最后Z轴

1.6.2 actor(演员)

Actor用来在一场景中表现一个可视化实体,也可以称之为3D图形的描绘实现.主要用作对图形的绘制,如一些简单的球形,锥体.

vtkActor is used to represent an entity in a rendering scene. It inherits functions related to the actors position, and orientation from vtkProp.The actor also has scaling and maintains a reference to the defining geometry (i.e., the mapper), rendering properties, and possibly a texture map.

其使用方式如下例

vtkPolyDataMapper *Mapper = vtkPolyDataMapper::New(); Mapper->SetInput(outline->GetOutput()); vtkActor *Actor = vtkActor::New(); Actor->SetMapper(Mapper); aren->AddActor(Actor);

Actor自身还包含一些属性,用来表示对显示对像的设置.属性有其自己的类vtkPropertyProp 如: Actor->GetProperty()->SetColor(1,1,1);//(1,1,1)表白色,表示将绘制对象的着色设为白色. 对Actor的其他属性包括:透明度,镜像系数,扩散度等. 属性值还包括扩散颜色,反射颜色,外部颜色.

在VTK编程中也可以直接定一个属性类对象,然后将Actor与这个属性类对象相关连,如:

www.CadCaeCam.com/Forum/index.htm

CadCaeCamPlm专业门户网站收集整理, 版权属于原作者 联系HuangSteve@163.com

第 4 页 共 10 页

CadCaeCamPlm专业门户网站 联系HuangSteve@163.com

对透明度进行设置的图形如下所显:

1.6.3 Assembilies组合

在现实生活中,通常的物体都是复杂图形,我们可以用简单图形来组成复杂图形,在VTK中将一些描绘简单图形的actor组装起来,合并成一个actor,在绘制过程中,只要添加到一个assembily类中就可以显示多个图形. 1.7

纹理的使用(using texture)

可以将一个二维图像文件(如.bmp格式文件)贴在一个三维图形上做为其纹理.如下图:

www.CadCaeCam.com/Forum/index.htm

CadCaeCamPlm专业门户网站收集整理, 版权属于原作者 联系HuangSteve@163.com

第 5 页 共 10 页


VTK使用基础.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:CoMFA使用说明

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: