004-VTK用户指南--第一部分--第1章-欢迎

欢迎来到《VTK用户指南》。
VTK是一个开源的、面向对象的、用于计算机图形学、可视化和图像处理的软件系统。
尽管VTK庞大且复杂,但只要你了解它的基本面向对象的设计和实现法,
你就会发现我们的设计会使它易于使用。
这份用户指南的目的是:
帮助你学习这种设计和实现方法,并使你熟悉各种各样的、重要的VTK类。

如果您阅读过这本指南的过往版本,
您会注意到我们现在根据用户指南文档本身的版本号,而不是VTK的版本号来区分本书的不同版本。
这份用户指南是《VTK用户指南》的第11版。
《VTK用户指南》已经持续出版超过11年了,这一版是在VTK项目启动16年后出版的。
尽管在编写这一版时,我们使用的是VTK5.6发布前的某个版本,
但我们可以很有信心地说,这里涵盖的几乎所有内容都将适用于未来的VTK版本。
VTK非常重视向后兼容性,可能会有未来添加的新功能未在此处列出,
但我们几乎不会对现在已经发布的功能进行变更
(注:因此向后兼容性是有保证的,即新版本中通常都会包含旧版本的全部已发布的功能)。

VTK是一个大型系统。
因此,在本指南中无法完全记录所有的VTK对象及其方法。
相反,本指南将向您介绍重要的系统概念,
并尽可能快速有效地引导您上手实现一些功能,以免您觉得学习曲线过于陡峭。
一旦您掌握了基础知识,
我们建议您利用包括《VTK文档页面》和VTK 用户社区在内的更多资源(参见“附加资源”)来帮助您进一步成长。

VTK是一个开源软件系统。
这意味着成百上千的慷慨的开发者和用户如你一样为代码库做出了贡献。
如果你觉得VTK是一个有用的工具,
我们鼓励你向社区贡献错误修复、算法、想法和/或应用程序。
(有关更多信息,请参阅“如何贡献代码”)
你还可以与Kitware等商业公司签订合同,以开发并添加新功能和工具。

用户指南的内容组织

本软件指南分为三部分,每部分又进一步分为几个独立的章节。

第一部分是VTK的通用介绍,包括在下一章中介绍如何在您的计算机上安装VTK。
这包括安装预编译的库和可执行文件或从源代码编译软件安装。
第一部分还介绍了基本系统概念,
包括系统架构概述以及对于使用C++、Tcl、Java和Python编程语言构建应用程序的描述。
从某种程度上说,第二部分是这份用户指南的核心,
因为这部分使用了数十个示例来说明VTK系统中的重要的系统功能。
第三部分是为高级VTK用户准备的。
如果您是开发者,第三部分解释了如何创建自己的类、扩展系统以及与各种窗口和GUI系统对接。
第19章包含简化的对象图,
概述了VTK对象之间的关系,给出了重要过滤器的摘要列表,
并对VTK文件格式进行了描述,以便用户实现读取和写入数据的功能。
最后,索引是随机访问用户指南的有用工具。

如何学习VTK

VTK用户主要分为两大类。
第一类是“类开发者”,他们使用 C++创建类。
第二类是“应用开发者”,他们使用 C++类库构建成品应用。
类开发者必须精通C++,如果你要扩展或修改VTK,你还必须熟悉VTK的内部结构和设计(第三部分涉及的内容)。
应用开发者可能使用也可能不使用C++,
因为编译后的C++类库已经被封装成适用于解释性语言的模块了,如:Tcl、Python、Visual Basic 和 Java等。
但是,作为一个应用开发者,你必须了解VTK对象的外部接口以及它们之间的关系。

学习如何使用VTK的关键是熟悉其对象选项集(注:可理解为属性集)以及组合使用不同选项的方式。
如果您是VTK的新用户,请从安装软件开始。
如果您是类开发者,您将需要下载源代码然后编译它。
应用程序开发者可能只需要编译好的的二进制文件和可执行文件。
我们建议您通过研究示例(如果您是应用程序开发者)然后研究源代码(如果您是类开发者)来学习系统。
应用程序开发者可以从阅读第3章开始,该章节提供了系统一些关键概念的概述,然后重点学习第二部分的示例。
您可能还会希望运行在VTK/Examples目录中数十个示例。
(请参阅 VTK/Examples/README.txt 文件,了解各个子目录中包含的示例描述。)
随VTK源代码分发的,还有数百个测试代码,
例如在VTK/Graphics/Testing/Tcl和VTK/Graphics/Testing/Cxx目录中的测试,
其中大多数都是没有注释的测试脚本。
尽管没有注释,它们仍然有助于您了解相关的类如何在VTK中一起使用。

软件组织

以下各节描述了关键目录的内容,
总结了每个目录中的软件功能,
并帮助您了解如何找到文档和数据。

获取VTK软件

有两种不同的方式获取VTK源代码:

  1. 从VTK网站http://www.vtk.org的下载页面下载可用的源代码版本。
  2. 从直接访问CVS源代码仓库(在VTK网站www.vtk.org的下载页面有相关说明)。

这本用户指南假定您正在使用官方VTK发布版本。
本书于2009年9月针对VTK编写。
在编写本书时,我们考虑了VTK5.4以及我们期望在5.6版本中发布的功能。
请注意,本文档中涵盖的主题也适用于VTK的未来版本。
另外,请注意,在过去VTK的主要版本通过主要数字变化来表示(例如,从VTK 4.4到VTK 5.0),
这也表明在工具包中存在某些向后兼容性的中断。
然而,随着发布频率的增加,
我们将来我们可能发布VTK 5.10(由于字母数字顺序在 5.2 之前,但按时间顺序在 5.8 之后,因此令人困惑)
或发布没有向后兼容性变化的VTK 6.0。
由于我们可能选择发布VTK6.0而不是VTK5.10,
您可能在使用VTK6.0或更高版本时阅读此书。
尽管这里可能没有涵盖最新功能,但本指南中的材料将适用于未来的版本。
关于未来版本特定的新功能信息,
请参阅 VTK 邮件列表(http://www.vtk.org/VTK/help/mailing.html)
或 Kitware 源代码(http://www.kitware.com/products/thesource.html),Kitware 的免费季度开发者通讯。

强烈推荐您使用VTK5.4或更高版本的官方发布版。
官方发布版稳定、一致,并且比当前CVS仓库测试更完善。
但是,如果您必须使用更新版本,请留意 VTK 质量测试仪表板。
VTK使用 Kitware 软件流程(http://www.kitware.com/solutions/softwareprocess.html)进行了大量测试。
在更新CVS仓库之前,请确保仪表板为“绿色”,表示代码稳定。
如果不是绿色,则您的软件更新可能不稳定。
(可以阅读“Kitware 的质量软件流程”部分了解更多关于VTK质量仪表板的信息。)

目录结构

在开始您的VTK之旅前,
您首先需要了解一些关于 VTK 目录结构的信息。
即使您正在安装预编译的二进制文件,
了解足够的知识以便在代码库中导航以查找示例、代码和文档也是很有帮助的。
VTK 目录结构组织如下。

  • InfoVis ——信息可视化类
  • Views ——用于查看数据的专用类,包括:过滤器、可视化、交互和选择。
  • VTK/CMake ——用于跨平台构建的配置文件。
  • VTK/Common ——核心类。
  • vTK/Examples ——按主题分组的、内容详尽的示例。
  • VTK/Filtering ——与可视化管道中的数据处理相关的类。
  • VTK/GenericFiltering ——一个适配器框架,用于将VTK与外部仿真软件包对接。
  • VTK/GeoVis —— 用于地形可视化的视图、数据源和其它对象。
  • VTK/Graphics ——用于处理三维数据的过滤器。
  • VTK/GUISupport ——用于方便将VTK与MFC和Qt等UI库联合使用的类。
  • VTK/Hybrid ——一些复杂的类,它们依赖于其它目录下的类。
  • VTK/Imaging ——图像处理相关的过滤器。
  • VTK/IO ——用于读取或写入数据的类。
  • VTK/Parallel ——提供并行处理支持的类,如支持与MPI联合实现并行处理的类。
  • VTK/Rendering ——用于渲染数据的类。
  • VTK/Utilities ——一些提供支持功能的三方库,如:expat, png, jpeg, tiff, and zlib等。Doxygen目录包含有用于生成《VTK文档》的脚本代码和配置信息。
  • VTK/VolumeRendering ——体渲染相关的类。
  • VTK/Widgets ——三维窗口小部件类。
  • VTK/Wrapping ——支持Tcl、Python和Java等解释型编程语言的封装。
文档

除了本文本和《VTK教科书》(更多信息请参阅下一节)之外,还有其他您应该了解的文档资源。

  • 《VTK文档》——它是使用 VTK 时的必备资源。这份详尽的网页形式的文档详细描述了系统中的每个类和方法。该文档还包含继承和协作图、事件调用列表和数据成员。该文档与其它类和源代码高度链接。《VTK文档》可在http://www.vtk.org上在线阅读。请确保您所查阅的文档版本与您使用的源代码版本匹配。
  • 头文件——每个VTK类都由一个.h结尾头文件和一个.cxx结尾的实现文件构造。所有在.h 头文件中找到的方法都有文档说明,并提供了一种快速查找特定方法文档的方法。(实际上,Doxygen 使用头文件中的文档型注释来生成其输出的《VTK文档》。)
数据

VTK示例和测试中使用的数据可以从vtk.org 的下载页面获取,也可以通过CVS访问获取。
关于访问数据存储库的CVS说明也可在vtk.org找到。

其它资源

本用户指南只是您学习可视化工具包的众多资源之一。
以下是一些在线资源、服务、软件应用和出版物,
可以帮助您有效地使用这个强大的工具包。

  • 《VTK教科书》——详细介绍了 VTK 中使用的许多算法和数据结构。该教科书是由Kitware出版的。可以从Kitware官网或亚马逊商店买到。
  • 《源》——这是由Kitware出版的季刊,涵盖了Kitware 的所有开源项目。VTK新增的功能通常会在《源》中有一篇文章介绍,该期刊之前各期的发行本是关于各种VTK相关主题的文章和教程的宝贵资源。您可以在kitware.com上在线查看源代码,并且可以订阅通过邮政邮件接收副本。
  • VTK 网站(vtk.org)——VTK官方网站包含指向许多其他资源的链接,例如:在线手册页面、维基百科和常见问题解答、仪表板和缺陷跟踪器,以及可搜索的vtkusers邮件列表存档(见下文)。特别是《VTK文档》页面,它对于新手用户和经验丰富的开发者来说都是宝贵的资源。
  • VTK 用户邮件列表——允许用户和开发者提问并获取答案;发布更新、错误修复和改进;以及提出改进系统的建议。请访问VTK网站获取有关如何加入邮件列表的更多信息。
  • 专业培训 ——由Kitware提供。包括VTK、ITK、CMake和ParaView在内的多个Kitware管理和维护的开源项目的开发者培训课程。通常每年在纽约北部地区举办两次。此外,Kitware还可以提供上门培训服务,为您的开发团队提供定制化培训。请访问 Kitware 网站或发送电子邮件至 courses@kitware.com 获取更多信息。
  • 商业支持和咨询合同 ——由Kitware提供服务。这些合同范围包含:小型支持工作(VTK专家协助您开发应用程序)和大规模咨询工作(Kitware 根据您的需求规格书开发应用程序)。请访问Kitware网站或发送电子邮件至sales@kitware.com 获取更多信息。
  • ParaView ——这是一个基于VTK构建的开源的、客户端应用程序,专注于科学数据可视化。您可以在paraview.org找到ParaView网站。使用ParaView是学习VTK的绝佳方式,因为您将能够通过图形用户界面访问最流行的功能。它也是了解VTK可以实现哪些功能的最好参考点,因为您可以加载自己的数据,查看可用的可视化技术以及相应的处理性能如何。
  • CMake ——这是一个开源的跨平台开发构建环境。尽管基础的VTK用户几乎不需要用到CMake知识就可以在标准Windows、Linux 或 Mac OS X 平台上成功构建VTK。但高级用户可能会在自己的开发工作中发现CMake很有用,或者可能需要一些深入的CMake知识才能将VTK移植到非标准平台。有关更多信息,请访问CMake网站cmake.org。
  • CDash ——这是VTK采用的一个开源测试平台。您可以在VTK网站上找到VTK测试仪表板(由CDash提供)的链接。仪表板显示了各种平台上每日测试和持续测试的结果。在非标准平台上构建的开发者可以将自己的测试结果集成到这个仪表板上。有关Kitware软件流程的更多信息,请参阅“Kitware软件流程”一节。

你可能感兴趣的:(VTK系统学习,c++)