本专栏及VTK简介

news/2024/7/5 1:37:08

本专栏以VTK用户指南为蓝本,介绍VTK学习过程及学习过程中遇到的各种问题。主要贡献有两个,一是将VTK用户指南的英文版翻译为中文版,一是用C++语言重新实现VTK的各个Demo,基于VTK9.2版本。

即为本专栏的内容,会逐步更新。


VTK是一个面向对象的开源软件系统,用于计算机图形学、可视化和图像处理。虽然VTK庞大而复杂,但如果您了解了它的面向对象设计和实现方法,就可以很容易地使用。本专栏的目的即帮助您学习此方法,并熟悉各种重要的VTK类。

VTK是一个大型系统。因此无法在专栏中完整记录所有VTK对象及其方法。相反,将向您介绍重要的系统概念,并尽可能快速有效地引导您学习。掌握了基本知识后,我们建议您利用许多可用资源,包括Doxygen文档页面VTK用户社区(请参阅其他资源”)

VTK是一个开源软件系统。这意味着像您这样的数十位甚至数百位开发人员和用户为代码库做出了贡献。如果您发现VTK是一个有用的工具,我们鼓励您将Bug修复、算法、想法和/或应用程序贡献给社区。您还可以与Kitware等商业公司签订合同,开发和添加新功能和工具。

1.1 本专栏的组织

本专栏借鉴VTK用户指南的组织,分为三个部分,每个部分又分为几个独立的章节。第一部分是对VTK的简介,包括如何在Windows计算机上安装VTK,其他操作系统上请参考VTK用户指南。这包括安装预编译的库和可执行文件,或从源代码编译软件。第一部分还介绍了基本的系统概念,包括系统架构的概述,以及用C++构建应用程序的描述。在某种程度上,第二部分是本书的核心,因为有几十个示例用于说明重要的系统功能。第三部分针对高级VTK用户。如果您是一名开发人员,第三部分将介绍如何创建自己的类、扩展系统,以及如何将界面扩展到各种窗口和GUI系统。第19章包含简化的对象图,该图概述了VTK对象的关系、过滤器的摘要列表,以及用于读取和写入自己数据的VTK文件格式的描述。最后,索引是一个方便的工具,可以随机访问用户指南。

1.2 如何学习VTK

VTK用户有两大类。首先是类开发人员,他们用C++创建类。其次,应用程序开发人员使用C++类库构建应用程序。类开发人员必须精通C++,如果您要扩展或修改VTK,还必须熟悉VTK的内部结构和设计(第三部分中介绍的材料)。作为应用程序开发人员,您必须了解VTK对象的外部接口以及它们之间的关系。

学习如何使用VTK的关键是熟悉其对象调色板以及组合它们的方法。如果您是新的VTK用户,请从安装软件开始。如果您是一名类开发人员,那么您需要下载源代码,然后进行编译。应用程序开发人员可能只需要预编译的二进制文件和可执行文件。我们建议您通过学习示例(应用程序开发人员)然后学习源代码(类开发人员)来学习系统。首先了解系统中的一些关键概念,然后学习第二部分中的示例。您可能还希望运行示例,这些示例与VTK/examples目录中的源代码一起发布。(请参阅文件VTK/Examples/README.txt,了解各子目录中包含的示例说明。)在源代码发行版中还可以找到数百个测试用例,如VTK/Graphics/Testing/Cxx中的测试,其中大多数是测试脚本。但是,它们可能有助于了解类在VTK中是如何一起使用的。

1.3 软件组织

获取软件

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

1. VTK网站VTK - The Visualization Toolkit的可用发布版本获取;

2. CVS源码库中直接获取(www.vtk.org有介绍).

假设您使用的是正式的VTK版本。本专栏针对VTK9.2编写。有关特定于未来版本的新功能的信息,请参阅VTK邮件列表(http://www.vtk.org/VTK/help/mailing.html)Kitware的免费季度开发商新闻稿(http://www.kitware.com/products/thesource.html)

我们强烈建议您使用VTK9.2或更高版本的官方软件。但是,如果必须使用较新版本,请注意VTK质量测试仪表板。VTK使用Kitware软件过程进行了大量测试(http://www.kitware.com/solutions/softwareprocess.html). 在更新CVS存储库之前,请确保仪表板为绿色,表示代码稳定。如果不是绿色,则可能是您的软件更新不稳定。

VTK目录结构

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

InfoVis — 信息可视化类

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

CMake — 跨平台编译的配置文件。

Common — 核心类

Examples — 按主题分组的记录良好的示例。

Filters — 可视化管线中数据处理相关的类。

GeoVis — 地形可视化中有用的视图、源和其他对象

GUISupport —用于将VTKMFCQt用户界面包一起使用的类。

Imaging — 图像处理过滤器。

IO — 读写数据的类。

Parallel — 并行处理支持,如MPI

Rendering — 用于渲染的类。

Utilities — 支持expatpngjpegtiffzlib等软件。Doxygen目录包含用于生成Doxygen文档的脚本和配置程序。

Wrapping — 支持TclPythonJava包装。

文档

除了VTK文档之外,您还应该了解其它文档资源。

• Doxygen Documentation.使用VTK时,Doxygen文档是必不可少的资源。这些网页详细描述了系统中的每个类和方法。文档还包含继承和协作图、事件调用列表和数据成员。该文档与其他类和源代码高度链接。Doxygen文档可在线访问http://www.vtk.org

• Header Files.每个VTK类都使用实现.h.cxx文件。.h头文件中找到的所有方法是文档化的,它提供了一种快速查找特定方法文档的途径。(实际上,Doxygen使用头文档生成其输出。)

Data

VTK示例和测试中使用的数据可以从VTK.org的下载区域获得,并通过CVS访问。Vtk.org还提供了CVS访问数据存储库的说明。

1.4 附加资源

本专栏只是学习VTK的一个可用资源。以下是一些在线资源、服务、软件应用程序和出版物的示例,可以帮助您有效地使用这个强大的工具包。

  1. 配套教材“VTK 面向对象的3D图形方法”详细介绍了VTK中使用的许多算法和数据结构。该教材由KitwareInc.出版。
  2. Kitware发布的季度新闻稿,涵盖Kitware的所有开源项目。添加到VTK的新功能通常会在源代码中的一篇文章中介绍,而过去的问题对于各种VTK相关主题的文章和教程来说是很有价值的资源。您可以在kitware.com在线查看源代码,您可以订阅以通过邮政邮件接收副本。
  3. 位于VTK.org的VTK网站包含指向许多其他资源的链接,如在线手册、Wiki和FAQ、仪表板和bug跟踪器,以及vtkusers邮件列表的可搜索存档(见下文)。尤其是,Doxygen手册页面对于新手用户和经验丰富的开发人员来说都是非常宝贵的资源。
  4. vtkusers邮件列表允许用户和开发人员提问和接收答案;发布更新、Bug修复和改进;并提出改进系统的建议。有关如何加入邮件列表的详细信息,请访问VTK网站。
  5. Kitware提供专业培训。开发人员培训课程涵盖了Kitware的几个开源项目,包括VTK、ITK、CMake和ParaView,通常每年在纽约州北部地区提供两次。此外,Kitware还可以到您的位置授课,为您的开发团队进行定制培训。请访问Kitware网站或发送电子邮件至courses@kitware.com了解更多信息。
  6. Kitware提供商业支持和咨询合同。这些合同包括VTK专家协助您开发应用程序的小型支持工作,以及Kitware根据您的规范开发应用程序的大型咨询工作。请访问Kitware网站或发送电子邮件至sales@kitware.com了解更多信息。
  7. ParaView是一个开源的最终用户应用程序,专注于构建在VTK之上的科学可视化。您可以在ParaView.org上找到ParaView网站。使用ParaView是学习VTK的一个很好的方法,因为您可以从图形用户界面访问最流行的功能。它也是VTK的一个很好的参考点,因为您可以加载自己的数据,并查看可用的可视化技术以及您应该期望的性能。
  8. CMake是一个用于跨平台开发的开源编译环境。虽然VTK用户需要很少的CMake知识就能在标准Windows、Linux或Mac OSX平台上成功编译VTK,但高级用户可能会发现CMake在他们的开发工作中很有用,或者可能需要一些深入的CMake知识才能将VTK移植到非标准平台。访问CMake网站CMake.org可获取更多信息。

CDash是VTK使用的开源测试平台。您可以在VTK网站上找到指向VTK测试仪表板(CDash发布)的链接。仪表板显示各种平台上夜间和连续测试的结果。在非标准平台上编译的开发人员可以将自己的测试结果提交到仪表板。有关Kitware软件过程的更多信息,请参见第10.8节。


http://lihuaxi.xjx100.cn/news/163932.html

相关文章

G1D17-研究方向rce45-49不快乐就去敲敲代码

现在每天晚上都觉得一天结束的好快呀~每天早上都很幸福,因为还有一天的时间呐!!! 今天主要的事情是完成老师的作业——论文主题阅读的report,看一下动态规划(emm最近喜欢啃这种让人掉头发的问题~&#xff0…

考研:研究生考试(五天学完)之《线性代数与空间解析几何》研究生学霸重点知识点总结之第五课线性方程组

考研:研究生考试(五天学完)之《线性代数与空间解析几何》研究生学霸重点知识点总结之第五课线性方程组 目录 5 线性方程组 5.1、知识点 5.1.1、线性方程组有解的充要条件

SSM 医院在线挂号系统

SSM 医院在线挂号系统 SSM 医院在线挂号系统 功能介绍 首页 登录注册 图片轮播展示 系统简介 系统公告 医院介绍 医生展示 医院资讯 预约挂号 收藏 评论 在线留言 查看留言 后台管理 登录 管理员管理 修改密码 医院信息管理 医生信息管理 用户权限管理 科室信息管理 预约挂号…

C++ 语法基础课 习题4 —— 数组

文章目录例题1. 数组替换2. 数组填充3. 数组选择4. 数组中的行5. 数组的右上半部分6. 数组的左上半部分7. 数组的上方区域8. 数组的左方区域9. 平方矩阵I(难题)习题1. 数组变换2. 斐波那契数列3. 最小数和它的位置4. 数组中的列5. 数组的右下半部分6. 数组的左下半部分7. 数组的…

Java语法之继承

上次给大家分享了Java的封装,今天小编给大家分享面向对象三大特性的第二大特性,也就是继承,fighting~~ 目录 🎄一.继承的概念 🎄1.1为什么需要继承 🎄1.2继承的概念 🎄1.3继承的语法 &#…

Activity 每个生命周期函数

onCreate():  表示 Activity 正在被创建,这是 Activity 生命周期的第一个方法。通常我们程序员要在 此函数中做初始化的工作,比如:绑定布局,控件,初始化数据等。 onStart():  表示 Activity 正在被启动,这…

一个数组的异或和是指数组中所有的数异或在一起的结果,给定一个数组arr,求最大子数组异或和。

问题描述: 一个数组的异或和是指数组中所有的数异或在一起的结果,给定一个数组arr,求最大子数组异或和。 异或运算规则: 异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真&#x…

Tilemap瓦片资源

1、Tilemap Tilemap一般称之为 瓦片地图或者平铺地图,是Unity2017中新增的功能,主要用于快速编辑2D游戏中的场景,通过复用资源的形式提升地图多样性 工作原理就是用一张张的小图排列组合为一张大地图 它和SpriteShape都是用于制作2D游戏的…