vtk用户指南 第一章 VTK简介

本文档是VTK用户指南,介绍了这个开源的计算机图形和可视化工具包。它详细阐述了如何安装、面向对象的设计、系统概念和学习路径,强调了通过示例和资源快速入门的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        欢迎来到可视化工具包(VTK)用户指南。VTK是一个开源的,面向对象的软件系统,用于计算机图形,可视化和图像处理。尽管VTK庞大而复杂,但一旦您了解了它的基本面向对象设计和实现方法,它就很容易使用。本用户指南的目的是帮助您学习这种方法,并使您熟悉各种重要的VTK课程。

        如果你是本指南的老读者,你会注意到我们现在根据版本号而不是VTK的版本号来区分这本书的更新。这是VTK用户指南的第11版。用户指南已出版超过11年,本版本是在VTK成立16年后出版的。虽然在编写本版本时使用的是5.6版本之前不久的VTK版本,但我们相当有信心地说,这里涵盖的几乎所有材料都将在未来的许多版本中有效。在VTK中,向后兼容性是很重要的,尽管可能会添加一些没有在这里记录的新功能,但很少有现有功能发生变化。

        VTK是一个大系统。因此,不可能在本指南中完整地记录所有VTK对象及其方法。相反,本指南将向您介绍重要的系统概念,并引导您尽可能快速有效地学习曲线。一旦你掌握了基础知识,我们建议你利用许多可用的资源,包括氧气文档页面(第6页的“文档”)和VTK用户社区(见第6页的“附加资源”)。

        可视化工具包是一个开源软件系统。这意味着数十甚至数百位像您一样慷慨的开发人员和用户为代码库做出了贡献。如果您发现VTK是一个有用的工具,我们鼓励您向社区贡献bug修复,算法,想法和/或应用程序。(请参阅第299页的“如何贡献代码”了解更多信息。)您还可以与Kitware等商业公司签订合同,开发和添加新功能和工具。

1.1用户指南组织

        本软件指南分为三个部分,每个部分又分为几个独立的章节。第一部分是对VTK的一般介绍,包括-在下一章-如何在计算机上安装可视化工具包的描述。这包括安装预编译的库和可执行文件,或者从源代码编译软件。第1部分还介绍了基本的系统概念,包括系统体系结构的概述,以及用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的关键是熟悉它的对象调色板和组合它们的方式。如果您是visualtoolkit的新用户,请首先安装该软件。如果您是类开发人员,则需要下载源代码,然后对其进行编译。应用程序开发人员可能只需要预编译的二进制文件和可执行文件。我们建议您通过研究示例(如果您是应用程序开发人员)然后研究源代码(如果您是类开发人员)来学习系统。首先阅读第3章,它概述了系统中的一些关键概念,然后复习第2部分中的示例。您可能还希望运行与VTK/ examples目录中找到的源代码一起分发的数十个示例。(请参阅VTK/Examples/README.txt文件,了解各个子目录中包含的示例的描述。)在源代码发行版中也有几百个测试,例如在VTK/Graphics/Testing/Tcl和VTK/Graphics/Testing/Cxx中发现的测试,其中大多数是未记录的测试脚本。然而,它们可能有助于了解类在VTK中是如何一起使用的。

1.3软件组织

        以下部分描述目录内容,总结每个目录中的软件功能,并定位文档和数据。

获取软件

        有两种不同的方式来访问VTK源代码。

        1. 可从VTK网站http://www.vtk.org下载;

        2.从直接访问CVS源代码存储库(在www.vtk.org上找到指令)。

        本用户指南假设您使用的是正式的VTK版本。这本书是针对2009年9月的VTK写的。当我们写这本书的时候,我们同时考虑了VTK 5.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存储库之前,请确保指示板为“绿色”,表示代码稳定。如果不是绿色,则可能您的软件更新不稳定。(有关VTK质量仪表盘的更多信息,请参阅第312页的“Kitware的质量软件过程”一节。)

目录结构

        要开始您的VTK奥德赛,您首先需要了解VTK的目录结构。即使您正在安装预编译的二进制文件,了解如何浏览代码库以查找示例、代码和文档也是很有帮助的。VTK目录结构组织如下。

•InfoVis—信息可视化类。

•Views——专门用于查看数据的类,包括:过滤器、可视化、交互和选择。

•VTK/CMake -用于跨平台构建的配置文件。

•VTK/Common--核心课程。

•VTK//Examples--记录良好的示例,按主题分组。

•VTK//Filtering-类相关的数据处理在可视化管道。

•VTK/GenericFiltering -将VTK接口到外部仿真包的适配器框架。

•VTK/GeoVis -视图,源,和其他对象在地形可视化有用。

•VTK/Graphics-过滤器,处理3D数据。

•VTK/ guissupport -类使用VTK与MFC和Qt用户界面包。

•VTK/Hybrid -依赖于多个其他目录中的类的复杂类。

•VTK/Imaging-图像处理过滤器。

•VTK/IO -读取和写入数据的类。

•VTK/并行-并行处理支持,如MPI。

•VTK/Rendering 用于渲染。

•VTK//Utilities-支持软件,如expat, png, jpeg, tiff和zlib。“Doxygen”目录包含生成Doxygen文档的脚本和配置程序。

•VTK/VolumeRendering -用于体渲染的类。

•VTK/Widgets - 3D小部件类。

•VTK/Wrapping-支持Tcl, Python和Java包装。

文档

        除了本文和The Visualization Toolkit文本(请参阅下一节了解更多信息)之外,您还应该了解其他文档资源。

        •Doxygen文档。氧文件是与VTK工作时必不可少的资源。这些广泛的网页详细描述了系统中的每个类和方法。文档还包含继承和协作图、事件调用列表和数据成员。文档大量超链接到其他类和源代码。Doxygen文档可在http://www.vtk.org上在线获得。确保您的源代码版本有正确的文档。

        •头文件。每个VTK类都是用。h和。cxx文件实现的。在.h头文件中找到的所有方法都有文档记录,并提供了一种快速查找特定方法文档的方法。(实际上,Doxygen使用头文件来生成输出。)

数据

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

1.4其他资源

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

        •配套教材可视化工具包面向对象的3D图形方法详细介绍了VTK中使用的许多算法和数据结构。

        •The Source是Kitware发布的季度通讯,涵盖了Kitware所有的开源项目。添加到VTK的新功能通常会在源代码中的文章中介绍,过去的问题是关于各种VTK相关主题的文章和教程的宝贵资源。您可以在kitware.com上在线查看源代码,也可以通过邮政邮件订阅接收副本。

        •VTK网站vtk.org包含指向许多其他资源的指针,如在线手册页面,维基和常见问题解答,仪表板和错误跟踪器,以及vtkusers邮件列表的可搜索存档(见下文)。特别是,对于新手用户和有经验的开发人员来说,氧气手册页面都是非常宝贵的资源。

        •vtkusers邮件列表允许用户和开发人员提出问题并获得答案;发布更新、bug修复和改进;并对制度的完善提出建议。请浏览VTK网站,了解更多有关加入邮寄名单的资料。

        •Kitware提供专业培训。开发人员培训课程涵盖Kitware的几个开源项目,包括VTK, ITK, CMake和ParaView,通常每年在纽约北部地区提供两次。此外,Kitware可以将课程带到您的站点,为您的开发团队提供定制培训。请访问Kitware网站或发送电子邮件至courses@kitware.com了解更多信息。

        •商业支持和咨询合同可从Kitware获得。这些合同范围从小型支持工作(VTK专家协助您开发应用程序)到大型咨询工作(Kitware根据您的规格开发应用程序)。请访问Kitware网站或发送电子邮件至sales@kitware.com了解更多信息。

        •ParaView是一个开源的最终用户应用程序,专注于科学可视化,建立在VTK之上。你可以在ParaView的网站paraview.org找到。使用ParaView是学习VTK的好方法,因为您可以从图形用户界面访问最流行的功能。它也是VTK的一个很好的参考点,因为您可以加载自己的数据,并查看可用的可视化技术以及您应该期望的性能。

        •CMake是一个跨平台开发的开源构建环境。虽然基本的VTK用户将需要很少的CMake知识,以便在他们的标准Windows, Linux或Mac OSX平台上成功构建VTK,高级用户可能会发现CMake在他们自己的开发工作中很有用,或者可能需要一些深入的CMake知识,以便将VTK移植到非标准平台。访问CMake网站cmake.org获取更多信息。

        •CDash是VTK使用的开源测试平台。您可以在VTK网站上找到VTK测试仪表板的链接(由CDash提供支持)。仪表板显示了在各种平台上夜间和连续测试的结果。在非标准平台上进行构建的开发人员可以将他们自己的测试结果贡献给仪表板。关于Kitware软件过程的更多信息可以在第10.8节中找到。

本书为英文翻译而来,供学习vtk.js的人参考。

VTK用户指南 版本4.0 William J. Schroeder 1998-2000 第一部分 VTK 介绍 第1章 欢迎 机构-----------------------------------------------------------------------------------------------8 怎样使用VTK----------------------------------------------------------------------------------8 附加资源-----------------------------------------------------------------------------------------8 第2章 安装 2.1 概述-----------------------------------------------------------------------------------------------9 2.2 安装VTK到Windows9x/NT/ME/2000/XP------------------------------------------------9 二进制安装-------------------------------------------------------------------------------------9 源代码安装-------------------------------------------------------------------------------------9 2.3 安装VTK到Unix操作系统 源代码安装------------------------------------------------------------------------------------10 运行CMake------------------------------------------------------------------------------------11 编译源代码 建立VTK多平台 安装VTK 第3章 系统概述 3.1 系统设计---------------------------------------------------------------------------------------12 图形模型--------------------------------------------------------------------------------------13 可视化模型-----------------------------------------------------------------------------------15 3.2 创建一个应用---------------------------------------------------------------------------------19 用户方法、对象和命令--------------------------------------------------------------------19 Tcl----------------------------------------------------------------------------------------------19 C++---------------------------------------------------------------------------------------------20 Java Phthon Visual Basic/COM/ActiveX 3.3 在两种语言间转换 第二部分 通过例子学习VTK 第4章 基础 4.1 创建1个简单的模型-------------------------------------------------------------------------24 程序化源对象---------------------------------------------------------------------------------24 读取源对象------------------------------------------------------------------------------------26 4.2 使用VTK交互器-----------------------------------------------------------------------------27 vtk绘制窗口交互器 交互风格 4.3 滤波数据---------------------------------------------------------------------------------------29 4.4 控制相机---------------------------------------------------------------------------------------30 安装相机 简单操作方法 控制视角方向 透视与正交视 保存与恢复相机状态 4.5 控制光线---------------------------------------------------------------------------------------32 位置光 4.6 控制3D道具-----------------------------------------------------------------------------------32 指定vtk道具3D位置 演员 演员的详细级 装配 体 vtk装载3D道具 4.7 作用纹理---------------------------------------------------------------------------------------37 4.8 拾取---------------------------------------------------------------------------------------------38 vtk装配路线 例子 4.9 vtk坐标和坐标系---------------------------------------------------------------------------40 4.10 控制vtk演员2D----------------------------------------------------------------------------41 4.11 注释--------------------------------------------------------------------------------------------41 2D注释 3D注释和vtk跟踪 4.12 特殊绘图类-----------------------------------------------------------------------------------44 尺度棒 X-Y绘制 边界盒轴 标记数据 4.13 变换数据--------------------------------------------------------------------------------------48 高级变换 第5章 可视化技术 5.1 可视化VTK数据集vtkDataSet(和子类) -------------------------------------------------50 使用数据属性进行工作 颜色映射 轮廓化 浮雕化 流线图 流线表面 剪裁 融合数据 附加数据 用另外一个尺度给等值面赋颜色 抽取单元格子集 抽取单元格作为多边形数据 5.2 可视化多边形数据---------------------------------------------------------------------------67 手工产生多边形数据 产生表面当量 十比一抽取 平滑网格 粘贴数据 产生纹理坐标 5.3 可视化结构网格-----------------------------------------------------------------------------74 手工产生结构化网格 抽取计算平面 结构网格子样化 5.4 可视化直线网格-----------------------------------------------------------------------------76 手工产生VTK直线网格 抽取计算平面 5.5 可视化非结构网格--------------------------------------------------------------------------77 手工产生VTK非结构网格 抽取部分网格 非结构网格轮廓化 第6章 可视化图像和体数据 6.1 VTK结构化点的历史表示-----------------------------------------------------------------80 6.2 手工产生VTK图像数据-------------------------------------------------------------------80 6.3 抽取图像数据子样--------------------------------------------------------------------------81 6.4 基于尺度值的弯曲--------------------------------------------------------------------------83 6.5 图像显示--------------------------------------------------------------------------------------83 图像观察者 图像演员 6.6 图像源-----------------------------------------------------------------------------------------85 2D帆布图像源 3D椭圆体图像源 高斯图像源 网格图像源 噪声图像源 正弦曲线源 6.7 图像处理--------------------------------------------------------------------------------------88 梯度化 高斯平滑 直方图 图像逻辑 重新切片 6.8 体绘制-----------------------------------------------------------------------------------------92 一个简单的例子 为什么会有多种体绘制技术? 产生一个VTK体 使用片层化函数 使用颜色变换函数 在一个体属性中控制颜色和透明度 在一个体属性中控制阴影 产生一个体映射 裁剪一个体 粘贴一个体 对一个体应用3D纹理 控制标准编码 体素光线计算 2D纹理映射 VolumePro绘制硬件 速度和精确度交替使用 使用vtkLODProp3D改善性能 可行性/局限性技术 第7章 建立模型 7.1 隐模型----------------------------------------------------------------------------------------114 定义隐函数 对隐函数进行抽样 7.2 挤压-------------------------------------------------------------------------------------------117 7.3 构建表面-------------------------------------------------------------------------------------119 Delaunay三角形化 高斯油彩 无组织点产生表面 第三部分 VTK研发者指南 第8章 数据接口和其他 8.1 读入器----------------------------------------------------------------------------------------130 多边形数据读入器 图像和体素读入器 数据集读入器 结构化网格读入器 线性网格读入器 非结构化网格读入器 8.2 写入器----------------------------------------------------------------------------------------131 多边形数据读入器 图像和体素读入器 结构化网格读入器 线性网格读入器 非结构化网格读入器 8.3 输入者----------------------------------------------------------------------------------------132 8.4 输出者----------------------------------------------------------------------------------------132 8.5 创建硬拷贝----------------------------------------------------------------------------------132 保存图像 保存大(高分辨率)图像 8.6 产生动画(使用样条) -----------------------------------------------------------------------134 8.7 使用现场数据工作--------------------------------------------------------------------------136 第9章 贡献编码 9.1 编码补偿--------------------------------------------------------------------------------------141 为VTK贡献编码的条件 编码风格 如何贡献编码 9.2 标准方法: 创建和消除对象---------------------------------------------------------------142 9.3 拷贝对象和受保护的方法------------------------------------------------------------------143 9.4 写一个VTK类: 综述-----------------------------------------------------------------------144 找到一个相似类 识别一个超类 单个类Per.h 文件 必需的方法 文档编码 使用SetGet宏 向VTK中添加类 9.5 对象工厂--------------------------------------------------------------------------------------145 综述 如何写一个工厂 如何安装一个工厂 例子工厂 第10章 流水线执行管理 10.1 执行过程--------------------------------------------------------------------------------------151 概述和术语 更新信息通道 传播更新扩展通道 触发异步更新通道 更新数据通道 10.2 使用流---------------------------------------------------------------------------------------162 第11章 VTK数据对象接口 11.1 数据组---------------------------------------------------------------------------------------166 方法 11.2 数据集---------------------------------------------------------------------------------------169 11.3 VTK数据集接口---------------------------------------------------------------------------170 方法 例子 11.4 VTK图像数据接口-----------------------------------------------------------------------174 方法 例子 11.5 VTK点集接口-----------------------------------------------------------------------------176 方法 例子 11.6 VTK结构化网格接口---------------------------------------------------------------------178 方法 例子 11.7 VTK线性网格接口-----------------------------------------------------------------------178 方法 例子 11.8 VTK多边形数据接口---------------------------------------------------------------------179 方法 例子 11.9 VTK非结构化网格接口-----------------------------------------------------------------184 方法 例子 11.10 单元格接口(VTK单元格子类) ------------------------------------------------------185 11.11 其他接口----------------------------------------------------------------------------------187 点 单元格数组 单元格类型 单元格连接 11.12 现场和属性数据接口------------------------------------------------------------------193 现场数据方法 数据集属性方法 第12章 如何写一个过程方法 12.1 概述----------------------------------------------------------------------------------------196 永远不要修改输入数据 参考计数数据 使用Debug宏 回收/删除截入的内在 修改时间 过程事件和异常终止执行 12.2 如何写一个绘图过滤器---------------------------------------------------------------199 概述 简单过滤器 复杂过滤器和流水线执行 抽取绘图过滤器 程序过滤器 重载流水执行方法 12.3 如何写一个图像过滤器---------------------------------------------------------------210 实现一个图像过滤器 第13章 用窗口系统集成 13.1 绘制窗口交互风格--------------------------------------------------------------------------216 13.2 GUI交互的总指导线------------------------------------------------------------------------217 13.3 X Window, Xt, and Motif--------------------------------------------------------------------221 13.4 MS Windows/Microsoft Foundation Classes---------------------------------------------226 13.5 Tcl/Tk-------------------------------------------------------------------------------------------227 13.6 Java 第14章 编码资源 14.1 对象图表--------------------------------------------------------------------------------------230 基础 单元格 数据集 流水线 源 过滤器 映射器 图形 体绘制 成像 OpenGL绘制器 拾取 变换塔形结构 14.2 过滤器总结-----------------------------------------------------------------------------------237 可视化过滤器 映射者对象 演员对象 14.3 VTK文件格式--------------------------------------------------------------------------------244 二进制文件 数据集属性格式 例子 第15章 光盘 15.1 源代码 15.2 例子代码 15.3 Window 9x/NT/ME/2000/XP 预编译二进制 15.4 数据 15.5 文档 15.6 退化测试图像 15.7 Kitware 应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值