VTK学习笔记--2 入门范例1 补充

从VTK User's Guide上面找到更深入的介绍:

构成VTK的有两种对象模型:

①  图形对象模型(the Graphics Models) 

②可视化对象模型(the Visualization Models) 

下面分别介绍:

一、图形对象模型

图形模型包含下列核心对象(这不是无穷对象列表只是我们常用到的):

   vtkActor, vtkActor2D, vtkVolume--vtkProp和/或vtkProp3D的子类

vtkLight--灯光

vtkCamera--镜头,照相机

vtkProperty, vtkProperty2D--

vtkMapper, vtkMapper2D--vtkAbstractMapper的子类

vtkTransform--

vtkLookupTable, vtkColorTransferFunction--vtkScalarsToColors的子类

vtkRender

vtkRenderWindow

vtkRenderWindowInteractor

可以通过对上述对象的组合形成场景(Scene)。

Props代表我们在场景中“看见”的东西3D中(有一个4*4的变换矩阵)被定位和操作的Props就是vtkProp3D,例如vtkActor就是vtkProp3D的一个具体的子类。如果我们要进行的是体绘制,这个子类就是vtkVolume。在2D中,Props用来定位和表示2D数据(即图像)的类就是是vtkActor2D),Props不直接表示几何形状,它借助Mappers对象,Mapper负责表达数据。Props也借助于一个属性对象(Property ),属性对象控制着Props的外观(颜色、漫射光、反射光效果;绘制外观:线框或面片等)。ActorsVolumes(通过超类vtkProp3D)还有一个内部变换对象(vtkTransform),这个对象封装了一个4*4矩阵,它依次控制着Prop的位置、朝向和尺度。

整个图形对象模型主要分为九类对象:

(1)渲染控制器: 定义与设备无关的坐标 计算方法, 创建绘制窗口; 
(2)渲染窗口(RenderWindow):其基类为vtkRenderWindow, 管理显示设备上的窗口, 一个或多个绘制方 法可在渲染窗口上创建一个场景。渲染窗口是用户图形界面, 其中包括 了设置渲染窗口的大小, 产生立体显示效果等的方法, 一共控制控制两个缓存; 
(3)渲染器(Renderer):基类为vtkRenderer,作用是管理光源、照相机和绘制对象等的位置、属性等; 提供 世界坐标系, 观察坐标系及显示坐标系之间的转换 。
建立好一个Renderer 后将其加入RenderWindow中即可将场景显示出来; 
(4)灯光( Light):VTK中的实现类为vtkLight, 用来表示和操作场景中的光线,光照仅用于3D,2D不需要光照。
(5)照相机(Camera): VTK实现类为vtkCamera, 相机对象在绘制过程中,控制如何将3D投影到2D,相机具有定位、定标和定向的几种方法。此外,相机还控制透视投影和立体视(若开启),2D图像不需要相机。
(6)角色(Actor):vtkActor代表渲染场景中的绘制对象实体 ,通过参数的调节可以设置角色的位置方向, 渲染 特性(Property),引用(renference),纹理影射(Texture)等属性,并可对Actor进行放缩。角色 的改变是通过一个4*4的变换矩阵实现的; 
(7)属性(Property):实现类为vtkProperty。要使三维 物 体具有真实感, 必须说明几何物体的一些特性,例如 光照特性(泛光,漫反射,镜面反射,边缘颜色),反射强度,物体的灰度,物体的绘制样式(点, 线框, 表面) ,着色模式( flat, Gouraud, Phong)等;VTK 中正是通过属性模型来对其进行说明的; 
(8)映射(Mapper):vtkMapper指定了
渲染数据图形库中基本图元之间的联系。VtkMapper的一些派生类通过LookupTable映射数据并控制图形库中相应Actor 图元的生成。(映射对象vtkMapper与查找表vtkLookUpTable相连,用来变换和绘制几何图形,映射提供可视化流水线与图形对象模型之间的接口)一个或多个Actor可以使用相同的Mapper。Mapper有多个参数对其进行控制, 如ScalarVisibility 标志 可以设置scalar的数据是否影响相关的Actor 的颜色; ScalarMode 可以控制Actor的颜 色是scalar point还是cell的值; 渲染方式可以通过 (ImmediateModeRenderingOn)和( ImmediateModeRenderingOff) 控制, 前一项表示立即渲染, 后一 项表示将渲染放于渲染列表中, 一般选择ImmediateModeRenderingOn方式进行, 选择后者将会占用较多的系统资源, 影响系统的性能; 
(9)变换(Transform):vtkTransform是一个放置4*4变换矩阵的堆栈, 可对这一堆栈进行各种操作, 如:平 移, 缩放, 旋转等, 一般在栈的顶部进行。实现过程主要由渲染控制器创建渲染窗口,由渲染器在渲染窗口上绘制场景。场景包括绘制对象、映射、属性、变换、光 源、照相机等。VTK获取数据的方式是基于拉技术 , 即在管道的下一对象请 求数据时, 管道对象才进行数据集的相关处理, 因此可减小系统的运算负荷, 这对提 高系统实时性大有好处。 
二、可视化模型(theVisualization Models) 
用VTK进行可视化应用是非常方便的,它包括两个基本部分。首先,建立适当的目标图形来演示数据;其次, 建立一个数据流水线(data pipeline)来处理数据, 建立流水线(pipeline)就是将Source、Filters 和Mappers连接起来。

VTK的可视化模型主要包括两类对象: 
(1)数据对象 
(a)多边形数据(vtkPloyData):表示由顶点、直线、多边形即三角面片组成的几何体, 支持多种的原子类 型, 如vtkVertex,vtk-PloyVertex, vtkLine 等。 
(b)结构点数据(vtkStructurePoint):是一包括表面形状及几何形状的几何体。 
(c)非结构点数据(vtkUnStructurePoint):指定了几何体的外观;结构网格( vtkStructureGrid):指定了几何体的结构。 
(d)非结构网格(vtkUnStructureGrid):可以为任意的cell 类型的组合。 
(e)数据对象继承关系。 
(2)过程对象 
VTK 中定义的过程对象根据其pipeline主要包括了数据源(Source),过滤器(Filters),映射(Mappers),数据流水线(data pipeline),过程如图所示:

172407_TWcs_2009228.png

数据源(Source): vtkSource是所有数据源的基类, 其子类定义了许多数据源类型; 
过滤器(Filters):vtkFilter 是各种Filter的基类, 从vtkSource中派生出来, 接收Source 中的数据, 进行种不同的Filter处理工作。Filters为VTK的主要部件, 由其基类派生出了许多子类, 实现了 图形学算法。将其封装起来, 用户只需要编写简单程序接口调用就可, 并可以通过改变 参数来达到想要的效果; 
映射(Mappers) : vtkMapper 是所有Mappers 的基类, 从Filtes接受数据,并把其映射为图形库中的基本图 
元。根据映射方式的不同, 有多个继承子类。

以上内容部分转自 http://hi.baidu.com/goywuonpkobdpvr/item/6f5424c5a8357f51ac00ef19

http://www.tuicool.com/articles/yMBbie

部分源于 VTK User's Guide

结合以上分类可以重新分析一下之前的范例1:

192448_ax9d_2009228.png

首先,可以知道vtkConeSource属于可视化模型中的数据对象,除vtkConeSource之外的,都是过程对象。

vtkActor是3D场景中应用的对象。我们的这个例子中的Props是一个三维圆锥,它的几何数据是由vtkConeSource经过vtkPolydataMapper提供的。而其属性我们没有设置,取默认情况。相机和光线也没有设置。然后将其放入渲染器中,最后在renderwindow中呈现出来。

(从上面这个分析看,我的逻辑性不是很好,理解的也不够深入。希望后面多了解VTk后,能够回来完善这个笔记。)





转载于:https://my.oschina.net/u/2009228/blog/363598

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值