欢迎来到《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用户主要分为两大类。
第一类是“类开发者”,他们使用 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发布版本。
本书于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 目录结构组织如下。
除了本文本和《VTK教科书》(更多信息请参阅下一节)之外,还有其他您应该了解的文档资源。
VTK示例和测试中使用的数据可以从vtk.org 的下载页面获取,也可以通过CVS访问获取。
关于访问数据存储库的CVS说明也可在vtk.org找到。
本用户指南只是您学习可视化工具包的众多资源之一。
以下是一些在线资源、服务、软件应用和出版物,
可以帮助您有效地使用这个强大的工具包。