VTK User\\'s Guide中文版(5)

2019-04-21 14:14

这是类myVTKApp的构造函数,它装载了必要的VTK对象,设置实例变量,并将它们联结起来组成一个可视化流水线。除了vtkRenderWindow外大多数都直接是VTK源代码。这个构造函数将HWND句柄带给父窗口,该父窗口包含VTK绘制窗。然后我们在vtkRenderWindow的SetParentId()方法中使用句柄,产生一个窗口作为父窗口的子窗口,传递给构造函数。

析构函数释放构造函数中所有的对象。

这里WinMain代码是标准的windows代码,没有包含VTK在里面。由于这个程序控制循环事件,事件是由下面WndProc函数来处理的

WndProc是非常简单事件处理者。作为一个全应用程序它可能非常复杂,但关键集成的东西是相同的。函数的上部声明一个静态myVTKApp实例,处理WM_CREATE方法时,我们创建一个Exit按钮,然后构造和实例化myVTKApp通过句柄传递给当前窗口。vtkRenderWindowInteractor将会处理vtkRenderWindow事件,不用我们处理它们。也许你想加入代码来处理缩放事件,以便render window适当地调整尺寸覆盖用户接口。如果不设置 vtkRenderWindow的父窗口句柄,将会显示一个顶层独立窗。所有功能与前面一样。

VTK所支持的语言可以相互转化,但由于指针操作,某些C++程序不能转化为其它语言。

第四章 基础

本章我们将通过一些例子来介绍VTK的一些功能,关注点是通用方法、对象以及对象组合,也会介绍一些重要的概念和应用程序,但决没有覆盖VTK所有的特点。本章尽可能给你一个宽阔的视野。你可借助于用户手册或类的.h文件来学习每个类的其它功能。大多数例子在Tcl语言上实现,很容易在语言之间直接代码转换(参见38页语言之间转换)。C++具有优势,可以直接操作数据结构和指针,一些例子说明了这种情况。

这里的每个例子都有源程序和辅助图象。我们指出源程序文件的名字(当附随的CD中存在一个时),因此你不必手工进入。我们建议你运行和理解这个例子接着用对象方法和参数实验。你也可能希望尝试可选的方法和/或类。通常,Visualization Toolkit提供了一些方法来得到类似的结果。注意脚本通常从自己布置测试的代码中修改。这样做可以简化概念或者去掉无关的代码。

学习类似VTK的一个面向对象的系统首先需要理解程序抽象,然后接着逐渐熟悉对象和方法库。我们建议你复习19页的“系统设计”得到关于程序抽象的信息。本章的例子将为你提供许多VTK对象的一个好的总览。

4.1创建简单的模型

Visualization Toolkit的使用如下:读入/产生一些数据,过滤,绘制,与它交互。本节,我们通过查看读入/产生数据的方法开始。

有两种基本方法可以获得数据。存在于一个文件中的数据可能被读入系统;或者,数据可能程序化地生成(通过一个算法或者数学表达式)。回想起在可视化流水线中初始化数据处理的对象叫做源对象(看图3-5)。产生数据的对象叫做程序化(源)对象,而且读入数据的对象叫做读入(源)对象。 程序化源对象

我们将通过绘制一个简单的圆柱体开始。下面的例子(VTK/Examples/Rendering/Tcl/Cylinder.tcl)程序揭示了可视化和图象学系统中的许多基本概念。参考图4-1来看运行脚本的结果。

我们通过调用一个Tcl命令来下载VTK包(包需要vtk)和创建一个GUI解释程序(包需要vtkinteractor)开始这个脚本,这使你在运行时键入命令。同样,我们下载了定义了一个颜色集的vtktesting,其中的一个(西红柿)在以后的脚本中使用。 注意历史:在VTK过去的版本中,共享的VTK库通过调用catch{load vtktcl}来代替需要vtk的包。

我们接着创建一个程序化的源对象:vtkCylinderSource。这个源创建了一个圆柱体的多边形展示。圆柱体的输出通过SetInput()方法作为vtkPolyDataMapper的输入。我们创建一个actor(被绘制的对象),它把投射器作为它的定义的几何。注意对象用Tcl构建的方式:我们使用由期望实例名跟随的类名:

(为了提醒C++实施与Tcl(或者其他的解释语言)实施的相似,用C++实施的同样的代码如下所示,而且可以在VTK/Examples/Rendering/Cxx/Cylinder.cxx)

注意源对象初始化可视化流水线,而且投射对象终止了流水线,因此在这个例子中我们有一个由两个过程对象组成的一个流水线(i.e,一个源和投射器)。VTK流水线使用一个懒评估体系,即使流水线已经连通,数据或者数据处理还没有发生。(因为我们还没有请求数据)。 接着我们创建允许我们绘制actor的图象学对象。vtkRenderer实例ren1调整了绘制窗口renWin一个视口的绘制过程。绘制窗口交互者iren是一个允许我们操作相机的一个3D配件。

注意我们已经把绘制者与绘制窗口通过AddRenderer()方法联系起来。我们必须使用AddActor()方法把actor与绘制者也联系起来。

SetBackground()方法使用位于(0,1)之间的RGB值指定了绘制窗口的背景颜色,SetSize()用像素指定了窗口的规模。最后,我们通过把GUI interactor与绘制窗口交互者的用户定义方法联系来结束这个例子。(当鼠标焦点在绘制窗口中时,用户-定义方法通过u键调用。


VTK User\\'s Guide中文版(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数学分析十三章讲义

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

马上注册会员

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