1.第一章welcome
欢迎使用可视化工具包(VTK)用户指南。VTK是一个面向对象的开源软件系统,用于计算机图形学、可视化和图像处理。尽管VTK庞大而复杂,但一旦您了解了它的基本面向对象设计和实现方法,它的设计就很容易使用。本用户指南的目的是帮助您学习这种方法,并熟悉各种重要的VTK课程。
如果您是本指南的老读者,您会注意到,我们现在根据VTK的版本号而不是版本号。这是VTK用户指南的第11版。《用户指南》已经出版了11年多,本版在VTK启动16年后出版。尽管在编写本版本时使用了5.6发行版之前不久的VTK版本,但我们可以相当自信地说,在未来的许多发行版中,几乎所有的内容都是有效的。在VTK中,向后兼容性受到重视,虽然可能会添加一些新特性,但这里没有记录,但现有特性很少发生更改。
VTK是一个大型系统。因此,不可能在本指南中完整记录所有VTK对象及其方法。相反,本指南将向您介绍重要的系统概念,并尽可能快速高效地引导您学习。一旦你掌握了基本知识,我们建议您利用许多可用资源,包括Doxygen文档页面(“第6页的文档”)和VTK用户社区(请参阅第6页的“其他资源”)。
可视化工具包是一个开源软件系统。这意味着像您这样的数十位甚至数百位慷慨的开发人员和用户为代码库做出了贡献。如果您发现VTK是一个有用的工具,我们鼓励您为社区贡献bug修复、算法、想法和/或应用程序。(有关更多信息,请参见第299页的“如何贡献代码”。)您还可以与Kitware等商业公司签订合同,开发和添加新功能和工具。
1.1 用户指南组织
本软件指南分为三个部分,每个部分又分为几个独立的章节。第一部分是对VTK的一般性介绍,包括在下一章中介绍如何在计算机上安装可视化工具包。这包括安装预编译库和可执行文件,或从源代码编译软件。第一部分还介绍了基本系统概念,包括系统架构的概述,以及在C++、TCL、java和Python编程语言中构建应用程序的描述。
在某些方面,第二部分是《用户指南》的核心,因为有几十个示例用于说明重要的系统功能。第三部分面向高级VTK用户。如果您是一名开发人员,第三部分将介绍如何创建自己的类、扩展系统以及如何为各种窗口和GUI系统提供接口。第19章包含简化的对象图,其中概述了VTK对象之间的关系、过滤器的摘要列表以及用于读取和写入您自己数据的VTK文件格式的说明。
最后是索引,一个方便的工具,可以随机访问用户指南
1.2如何学习VTK
VTK用户分为两大类。首先是类开发人员,他们在C++中创建类。其次,应用程序开发人员使用C++类库来构建转键应用程序。类开发人员必须精通C++,如果您正在扩展或修改VTK,您还必须熟悉VTK的内部结构和设计(第三部分中包含的材料)。应用程序开发者可能会使用C++,因为编译后的C++类库已经被解释语言TCL、Python、Visual Basic和java包了起来。但是,作为应用程序开发人员,您必须了解VTK对象的外部接口以及它们之间的关系。
学习如何使用VTK的关键是熟悉它的对象调色板以及组合它们的方法。如果您是新的可视化工具包用户,请从安装软件开始。
如果你是一个类开发人员,你会想下载源代码,然后编译它。应用程序开发人员可能只需要预编译的二进制文件和可执行文件。我们建议您通过学习示例(如果您是应用程序开发人员)然后学习源代码(如果您是类开发人员)来学习系统。首先阅读第3章,该章概述了系统中的一些关键概念,然后回顾第二部分中的示例。您可能还希望运行与VTK/examples目录中的源代码一起分发的几十个示例。(请参阅文件VTK/Examples/README.txt,了解各子目录中包含的示例说明。)在源代码发行版中还可以找到数百个测试,比如VTK/Graphics/Testing/Tcl和VTK/Graphics/Testing/Cxx中的测试,其中大多数都是未记录的测试脚本。但是,它们可能有助于了解类在VTK中是如何一起使用的。
1.2.1 VTK/Exapmples/README.txt
VTK示例目录
下面的目录包含了许多评论良好的示例,展示了如何使用VTK。实例在C++、TCL、Python和java编程语言中可用。这些例子决不能被认为是全面的;VTK是一个大型系统,我们试图挑选一些示例来演示关键功能。
目录
下面是本目录内容的简要目录。
初学者应该从教程子目录中的示例开始。
这里列出的主题在VTK/Examples中有相应的子目录。
Annotation-用于二维和三维注释的类,例如文本、标量栏、x-y打印。
DataManipulation——示例展示了如何重新排列和操作可视化管道中的数据。
GUI——与各种GUI的接口示例,包括Motif、Windows和Tcl。
IO——如何读取和写入数据的示例;以及如何导入和导出场景。
ImageProcessing——精选示例演示如何使用VTK的许多图像处理过滤器。
MangledMesa-使用Mesa进行屏幕上和屏幕外渲染。
Modelling——展示如何构造、编辑和处理曲面的各种示例。
ParallelProcessing——使用VTK进行并行处理,包括MPI和线程方法。
Rendering-演示如何使用VTK的许多渲染和相关功能的示例,例如LOD角色、集合、拾取和摄影机操作。
Tutorial——一些简单的分步说明,介绍如何创建管道、处理事件和创建数据。
visualization algorithms(可视化算法)——展示如何使用常见可视化算法的各种示例,如轮廓绘制,切割、探测和精简。
VolumeRendering-从本目录中的示例了解如何执行体积渲染。
额外资源
VTK测试目录(例如VTK/Graphics/Testing)包含其他示例。这些都没有评论,是为测试而设计的。
VTK邮件列表http://public.kitware.com/mailman/listinfo/vtkusers
VTK网页http://public.kitware.com/
Kitware的商业支持和资源:
VTK用户指南http://www.kitware.com/products/vtkguide.html
支持合同http://www.kitware.com/products/vtksupport.html
1.3软件组织
以下部分描述了目录内容,总结了每个目录中的软件功能,并找到了文档和数据。
获取软件
有两种不同的方式访问VTK源代码
1.来自VTK网站上提供的版本http://www.vtk.org; 和
2.直接访问CVS源代码库(说明见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而不改变向后兼容性。
因为我们很可能会选择发布VTK 6.0而不是VTK 5.10,所以您可能在使用VTK 6.0或更高版本时正在阅读本书。虽然此处可能未介绍最新功能,但本指南中的内容将适用于未来版本。有关特定于未来版本的新功能的信息,请参阅VTK邮件列表(http://www.vtk.org/VTK/help/mailing.html)或者Kitware Source (http://www.kitware.com/products/thesource.html),Kitware的免费季度开发者通讯。
我们强烈建议您使用VTK 5.4或更高版本的官方版本。与当前的CVS存储库相比,官方版本稳定、一致,并且经过了更好的测试。但是,如果必须使用更新的版本,请注意VTK质量测试仪表板。可视化工具包使用Kitware软件过程进行了大量测试(http://www.kitware.com/solutions/softwareprocess.html)。在更新CVS存储库之前,请确保仪表板为“绿色”,表示代码稳定。如果不是绿色,您的软件更新可能不稳定。(在第312页的“Kitware的质量软件过程”部分了解更多关于VTK质量仪表板的信息。)
目录结构
要开始VTK之旅,首先需要了解VTK的目录结构。
即使您正在安装预编译的二进制文件,了解足够多的信息来浏览代码库以查找示例、代码和文档。VTK目录结构组织如下:
•InfoVis——信息可视化课程。
•Views-用于查看数据的专业类,包括:过滤器、可视化、交互和选择。
•VTK/CMake——跨平台构建的配置文件。
•VTK/Common-核心类。
•VTK/Samples-详细记录的示例,按主题分组。
•VTK/Filtering——与可视化管道中的数据处理相关的类。
•VTK/GenericFiltering——将VTK连接到外部模拟软件包的适配器框架。
•VTK/GeoVis-地形可视化中有用的视图、源和其他对象
VTK/Graphics-处理3D数据的过滤器。
•VTK/GUISupport-用于将VTK与MFC和Qt用户界面包一起使用的类。
•VTK/Hybrid——依赖于多个其他目录中的类的复杂类。
•VTK/Imaging-图像处理过滤器。
•VTK/IO-用于读取和写入数据的类。
•VTK/Parallel-并行处理支持,如MPI。
•VTK/Rendering-用于渲染的类。
•VTK/Utilities——支持expat、png、jpeg、tiff和zlib等软件。Doxygen目录包含用于生成Doxygen文档的脚本和配置程序。
•VTK/VolumeRendering—用于体绘制的类。
•VTK/Widgets-3D小部件类。
•VTK/Wrapping——支持Tcl、Python和Java包装。
文档
除了本文和Visualization Toolkit文本(有关更多信息,请参阅下一节),您还应该了解其他文档资源。
•Doxygen文件。使用VTK时,Doxygen文档是必不可少的资源。这些广泛的网页详细描述了系统中的每个类和方法。
文档还包含继承和协作图、事件调用列表和数据成员。该文档与其他类和源代码高度链接。Doxygen文档可在以下网站获得:http://www.vtk.org.
确保您拥有适用于源代码版本的正确文档。
•头文件。每个VTK类都有一个a.h和a.cxx文件。.h头文件中找到的所有方法是文档化的,它提供了一种快速查找特定方法文档的方法。(事实上,Doxygen使用标题文档生成其输出。)
数据
VTK示例和测试中使用的数据可以从VTK的下载区org和viaCVS访问。还提供了CVS访问数据存储库的说明在vtk.org。
1.4额外资源
本用户指南只是学习可视化工具包的一种资源。以下是一些在线资源、服务、软件应用程序和出版物的示例,可以帮助您有效地使用这个强大的工具包。
2.第二章:安装
本章介绍在计算机系统上安装VTK所需的步骤。这个过程的总体难度取决于几个因素。在Microsoft Windows上,可以安装预构建的vtk.exe并运行Tcl脚本使用它。要使用Python或Java,要将VTK库链接到自己的应用程序中,或在Microsoft Windows以外的任何平台上使用VTK,必须从源代码构建VTK。(平台变体太多了–使二进制发行版保持最新是一项艰巨的工作,因此我们专注于使VTK在任何地方都易于构建。)如果您正在编译VTK源代码并构建自己的库,请在速度更快的多处理器系统上花费半个小时,在速度较慢的内存有限的系统上花费几个小时。此外,构建的时间取决于您围绕VTK C++核心和系统配置的多少解释语言。
您可能希望参考第19页的“系统架构”,了解VTK架构的概述,这可能会使编译过程更容易遵循。此外,如果遇到问题,您可以联系vtkusers邮件列表(请参阅第6页的“其他资源”)。
2.1 概述
VTK在许多不同的计算机平台上编译和运行。根据平台,我们指的是操作系统、硬件配置和编译器的各种组合。由于可能存在大量的组合,VTK的二进制分布通常是不可行的。因此要安装VTK,必须编译并链接源代码,以生成库和可执行文件。此过程的例外情况是,如果您使用Tcl解释语言创建VTK应用程序。在这种情况下,预编译的二进制文件可能适用于Windows平台。否则您必须从源代码编译Tcl和Python VTK可执行文件。
本章首先概述了跨平台制作工具CMake。CMake在所有操作系统上都用于配置构建环境。接下来,根据要安装的操作系统类型,本章分为两节:Windows或UNIX(用于Macintosh OSX或Linux,请按照UNIX说明操作)。您只需要阅读安装的相应部分。Visualization Toolkit不在Windows 3.1等旧版本上运行。它也不会在OSX 10.2(捷豹)之前的任何Macintosh操作系统上运行。
2.2 cmake
CMake是一个开源的跨平台工具,用于配置和管理构建过程。简单的、独立于平台的文件(CMakeLists.txt)用于描述构建过程和捕获依赖项。运行CMake时,它会为您正在使用的特定编译器/操作系统生成本机构建文件。例如,在使用Microsoft Visual Studio的Windows上,将创建解决方案文件和项目文件。在Unix上,创建makefile。通过这种方式,您可以使用单个源代码树在任何计算机上轻松编译VTK,并使用开发工具(编辑器、调试器、探查器、编译器等),这些工具对于您所使用的平台来说都是很自然的。(从CMake.org了解更多关于CMake的信息。Kitware还出版了一本关于掌握CMake的书,以获取详细信息。)从http://www.cmake.org.下载最新的CMake。
运行CMake需要三条基本信息:要使用哪个编译器、源代码目录(即源代码树)在哪里,以及要放置编译过程生成的目标代码、库和二进制文件的目录(即构建树)。CMake将阅读顶级CmakeList.txt文件(在源代码树中找到),并在生成树中生成缓存(CMakeCache.txt)。请注意,CMake可以很好地处理复杂的源代码目录结构,将有一个CmakeList.txt文件源代码树的每个子目录中的。
运行CMake需要三条基本信息:要使用哪个编译器、源代码目录(即源代码树)在哪里,以及要放置编译过程生成的目标代码、库和二进制文件的目录(即构建树)。CMake将阅读顶级CmakeList。在源代码树中找到txt文件,并在生成树中生成缓存(CMakeCache.txt)。请注意,CMake可以很好地处理复杂的源代码目录结构,将有一个CmakeList。源代码树的每个子目录中的txt文件。
一旦提供了这些基本信息,用户就会调用配置步骤。这会导致CMake读取顶级CmakeList。txt文件,确定系统配置,定位系统资源,并进入源代码树中的子目录。在CMake运行时,它会发现控制构建过程的CMake变量和标志(CMake缓存项)。这些将在配置过程结束后呈现给用户。如果用户希望更改缓存值,CMake提供了一个简单的GUI。更改后,将形成另一个配置调用。这种迭代配置过程将继续进行,直到不需要额外的更改。一旦达到这一点,用户就会调用generate步骤。生成步骤生成用于控制指定编译器的生成过程的解决方案文件、项目文件或生成文件。
在接下来的两个部分(Windows和Unix)中,提供了针对每个平台运行CMake的具体说明。请注意,上述一般说明适用于所有系统。CMake用户界面可能因平台而异。虽然cmake-gui,CMake 2.6及更高版本中提供的基于Qt的接口在不同平台之间非常相似。此外,如果可能的话,为CMake安装预编译的二进制文件,而不是从源代码构建CMake。
2.3 在Windows xp,Vista or later版本安装VTK
Windows下有两种类型的VTK安装。第一个是二进制/可执行文件安装,它允许您通过运行预编译的可执行文件在Tcl中进行开发。第二种类型是完整的源代码安装,需要您编译VTK源代码(生成C++库)和VTK包装代码(生成java、TCL和Python可执行文件)。在这两种类型的安装中,二进制安装要容易得多。源代码安装的优点是,您可以监视、调试和修改VTK代码,如果您是类开发人员,这可能就是您想要的。但是,请注意,即使您选择二进制安装,您仍然可以通过多种方式扩展VTK(请参阅第305页的“编写VTK类:概述”),使用运行时可编程过滤器创建自己的类(请参阅第419页的“可编程过滤器”),并在运行时用自己的类版本替换VTK类(参见第307页的“对象工厂”)。
2.3.1 二进制安装
图2-1 下载VTK
安装vtk.exe,VTK Tcl/Tk可执行文件,运行安装程序vtkpython-X.X.X-Windows-64bit.exe,可从vtk的下载页面vtk.org获得,它将显示一个安装GUI(参见图2-2)。安装程序文件名中的“X.X.X”代表用于构建该程序的VTK版本号。
您也可以下载相应的VTK源代码树和VTKData目录的*.zip文件。当我们发布新版本的VTK时,我们会通过VTK上的链接vtk.org下载页面提供。关注vtkusers邮件列表上的发布公告。
图2-2 安装VTK
VTK源代码树包含许多*.tcl,您可以使用tcl脚本来了解各种VTK类的工作原理。下载vtk-X.X.zip和vtkdata-X.X.X.zip文件并将其解压缩到硬盘。
在VTK文件夹中,您会发现一个“示例”文件夹。在Examples文件夹下,有GUI、MangledMesa和Parallel等文件夹;每个文件夹都有一个名为Tcl的子文件夹,其中包含各种Tcl示例。
除了Examples文件夹,还有Library文件夹,如Graphics、Imaging和Filtering。每个文件夹都包含一个Testing/Tcl子文件夹,其中包含VTK的回归测试。
双击Tcl文件,尝试运行任何示例。第一次双击Tcl文件(.Tcl扩展名)时,可能会出现一个对话框,询问您使用什么打开该文件。这意味着您需要在Tcl文件和vtk可执行文件之间创建关联才能运行它们。如果出现这种情况,请单击对话框上的“从列表中选择程序”按钮,然后单击“确定”。将出现一个新的对话框,标签为“打开方式”。单击此对话框上的“浏览”按钮以显示文件浏览器。在浏览器中,转到安装VTK的目录。通常这是C:\Program Files\VTK 5.4或C:\Program Files\Documents and Settings<username>\My Docu\ments\VTK 5.4。在那里,你应该看到一个bin文件夹,其中依次包含一个名为vtk的程序。
双击vtk(或vtk.exe)。检查“始终使用所选程序打开此类文件”复选按钮是否标记在“打开方式”对话框上,然后选择“确定”按钮。然后,您的示例应该运行。将来,双击任何Tcl脚本都会自动开始执行vtk。
或者,如果Tcl文件已经与wish可执行文件关联(来自安装Tcl/Tk二进制文件),当双击Tcl文件时,您将看到类似于以下的错误消息:在执行“package require vtk”时找不到package vtk。如果收到此错误消息,请右键单击Tcl文件,然后选择“用…打开”从显示的弹出菜单中。此时会出现“打开方式”对话框。按照上一段的其余说明将Tcl文件与vtk可执行文件关联。
这就完成了Windows的二进制安装过程。在第3章中,我们将详细介绍如何编写自己的C++、TCL、java和Python应用程序。
2.3.2 源代码安装
为了开发C++应用程序和扩展VTK,您需要安装源代码。这更具挑战性,在编译VTK时可能会占用您的机器几个小时。首先,您需要确保您的机器能够构建VTK源代码版本。您必须运行Windows XP、Vista或更高版本。您需要在机器上安装C++编译器。本指南中的说明面向Microsoft Visual Studio 2005或更高版本,该版本适用于VTK。
我们还支持Borland C++编译器,gcc 在 Cygwin or MinGW,NMake,微软Visual C++免费版本,微软Visual C++ 2005。如果没有安装C++编译器,则必须先执行此操作。
下一个要考虑的问题是您计划使用的其他工具。如果您计划用Java进行开发,那么必须下载并安装Java JDK,该JDK可从Sun Microsystems的http://www.java.sun.com.如果你计划使用TCL/TK,而你没有使用微软Visual C++,那么你需要下载并构建TCL/TK的源代码版本。http://www.tcl.tk或者从下载并安装Tcl/Tk二进制文件http://www.activestate.com/Products/ActiveTcl.(注:Tcl/Tk 8.4版适用于VTK 5.4.0版。)
安装CMake。要编译VTK,首先需要安装CMake。CMake的安装程序可从http://www.cmake.org获得。
运行CMake。在您安装了C++编译器之后,安装了CMake,并安装了任何其他包,如TCL、java和Python,您就可以运行CMake了。要运行CMake,在“开始”菜单中的“程序->CMake->CMakeSetup”下应该有一个CMake条目。CMakeSetup.exe接口(图2-3)是一个简单的程序,允许您根据特定的机器和VTK所需的选项自定义构建。首先,您必须告诉CMakeSetup VTK的源代码树位于何处,以及希望将VTK二进制文件放在何处(这些二进制文件是编译源代码后生成的)。您可以使用浏览按钮或手动输入路径。一旦选择了源目录和二进制目录,就应该单击“配置”按钮。第一次单击“配置”按钮时,CMake将显示一个对话框,从中可以选择用于编译VTK的生成系统。然后,CMakeSetup GUI将填充在CMake缓存中找到的变量和值列表。第一次运行时,所有变量都将被涂成红色。红色表示缓存项是在上一个配置步骤中生成或更改的。
VTK学习笔记2:windows源代码安装VTK9,并使用Visual Studio 2017配置VTK9
此时,您可以自定义VTK版本。例如,如果要启用VTK的Tcl包装功能,请在缓存值编辑器中向下滚动到条目VTK_WRAP_Tcl,然后单击该值以将其从关闭切换到打开。之后,再次单击配置按钮。这将导致大多数值变为灰色,任何新值都将显示为红色。如果从二进制安装中安装了Tcl/Tk,则不应将任何新值作为值找到;如果需要,则必须使用CMake接口手动指定这些路径。要在CMake界面中设置任何值,请单击显示该值的变量右侧。根据变量的类型,可能会有一个文件选择器、编辑框或下拉菜单,允许您编辑该值。
VTK的一些重要缓存值包括:
BUILD_SHARED_LIBS-如果此布尔值设置为yes,则将生成DLL或共享库。如果为否,则将构建静态库。默认为静态库。静态库在某种程度上更易于使用,因为在运行exe可剪切文件时,它们不需要位于您的路径中。可执行文件将是自包含的。这是基于VTK的应用程序的首选分发方式。
VTK_WRAP_TCL-这决定了是否将构建TCL wrapping。
VTK_WRAP_PYTHON——这决定了是否将构建PYTHON包装.
VTK_WRAP_JAVA-这决定了是否将构建JAVA包装。
要获取CMake中任何变量的联机帮助,只需右键单击该值并选择“缓存条目帮助”。大多数默认值都应该是正确的。
继续单击“配置”,直到不再有任何红色值,并且您对所有值都满意为止。此时,您可以单击OK按钮。这将导致CMake写出所选生成类型的生成文件。对于Microsoft,项目文件将位于您选择的二进制路径中。只需加载此项目文件(VTK.dsw到Visual Studio 6.0,VTK.sln for.NET),然后在Visual Studio的“生成->设置活动配置”菜单中选择要生成的配置。您可以选择Debug、Release、MinSizeRel(最小大小发布)和RelWithDebInfo(包含调试信息的发布)。您可以选择ALL_BUILD项目,并像处理任何其他Visual Studio项目一样对其进行组合。对于Borland,生成makefiles,您必须使用该编译器提供的命令行make。makefiles位于您指定的二进制目录中。
2.4 在Unix系统上安装VTK
————————————————
版权声明:本文为CSDN博主「haimianjie2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/haimianjie2012/article/details/122670578