VTK User’s Guide -11th edition 第01章-欢迎学习VTK

2023-05-16

【本节对应原书中的第3页至第7页】


欢迎开启VTK之旅——《VTK用户指南》。VTK是一个开源的、面向对象的计算机图形、可视化和图像处理的软件系统。虽然VTK比较庞大、复杂,但是当你了解了它基本的面向对象的设计和实现的方法以后,你会发现VTK还是比较简单、比较容易入门的。这本《VTK用户指南》的目的就是帮助你学习、熟悉各种重要的VTK类。

如果你读过这本书的其他版本,你会发现我们已经开始使用“版次”(Edition Number)而不是VTK的“版本号”(VersionNumber)来区分更新这本书了。这本书是《VTK用户指南》的“第11版次”(11thEdition)。《VTK用户指南》的出版已经超过十一个年头,而这个版本的用户指南的出版距离VTK的面世也超过了十六个年头。虽然这本书是在VTK 5.6版本发布前出版的,我们可以很有信心地说,这本书中所列举的所有素材对VTK将来要发布的其他版本也将会是有效的。VTK把“向后兼容”(Backwards Compatability)这个特性当作重中之重,也许某些新的特性在后续的VTK版本中会增加进来,显然不会在本书中一一罗列,而且某个现有的特性保持一成不变也是很少有的。

VTK是一个庞大的系统。因此,不可能完整的将所有VTK的类以及它们的方法都在这个指南中详细介绍。不过,这个指南将会向你介绍一些重要的系统概念,带领你沿着学习曲线尽可能快速、高效地学习。一旦你掌握了这个基础,我们建议你利用好其他的学习资源,这些资源包括VTK Doxygen文档(http://www.vtk.org/doc/nightly/html/)以及VTK用户社区。

VTK是一个开源的软件系统。这意味着成千上万的开发人员和用户对这个系统做出了贡献。如果你发现VTK是一种有用的工具,我们鼓励你贡献出Bug修正代码、算法、想法或者是应用程序回馈到VTK社区中。你也可以联系像Kitware这样的商业公司来开发或者增加新的特性和工具。

1.1本书组织结构

这本用户指南共划分成三个部分,每一部分都细分为若干独立的章节。第一部分是VTK的概述,包括(下一章)如何在计算机上安装VTK,即安装预编译库和可执行程序以及直接从源代码编译。第一部分也介绍了基本的系统概念,包括系统架构概览、如何使用C++、TCL、Java和Python这些编程语言创建应用程序。从某种程度上讲,第二部分是本书的核心,因为这一部分通过众多的例子来说明重要的系统特性。第三部分是针对VTK高级用户的,介绍了如何创建自定义的类、扩展系统以及与各种视窗和GUI系统进行整合。第19章罗列了部分VTK类的继承图,通过这些继承图可以对VTK类库之间的关系有个大概的认识,同时也对部分过滤器(Filter)做了简要的概括,以及对VTK文件格式的描述。最后是本书的索引部分,借助它可以方便的检索本书的内容。

1.2如何学习VTK

VTK的用户主要分为两类,第一类是使用C++创建类的开发人员,第二类是使用C++类库来建立完整的应用程序的开发人员。类开发人员必须熟练掌握C++,如果你正在扩展或修改VTK,你必须同时熟悉VTK的内部结构和设计(第三部分所涵盖的内容)。应用程序开发人员可以使用C++或者不用C++,因为编译好的VTKC++类库已经“封装”了TCL、Python、VB和Java等解释性语言。不过,作为一名应用程序开发人员,你必须了解VTK对象的外部接口和他们之间的关系。

学习VTK的关键是熟悉它的对象并知道如何组合他们。如果你是一位VTK初学者,先从安装VTK软件系统开始学习。如果你是一位类开发人员,你可能会下载源代码并编译它们。应用程序开发人员可能仅仅需要预编译库和可执行程序。我们建议你通过研究例子程序(如果你是一位应用程序开发人员)和源代码(如果你是一位类开发人员)来学习这个软件系统。第三章中会对VTK软件系统中的一些关键概念作一个简要概览,然后在第二部分的例子中对这些内容进行回顾。你也可以运行随源代码发布的各种各样的例子,可以在源代码的VTK/Examples目录中找到(请查看文件VTK/Examples/README.txt来获取各个子目录下示例的描述)。在源代码发布目录中也有很多测试用例,如在VTK/Graphics/Testing/Tcl以及VTK/Graphics/Testing/Cxx,虽然大多数测试例子没有被载入文档的测试脚本,但是他们对了解VTK中的类如何组合使用是相当有用的。

1.3VTK软件系统组织结构

接下来简要描述一下各个源码目录中的内容,列举各个目录的软件功能、文档内容以及数据。

获取软件

可以通过以下两种方式访问VTK的源代码。

1. 从VTK网站(http://www.vtk.org)下载官方发布的源码。

2. 通过Git访问VTK的源码(gitclone http://vtk.org/VTK.git VTK)。

这本用户指南假定你选择的VTK源码是官网发布的版本。本书的写作时间是2009年9月份。在写作本书时我们考虑了VTK 5.4以及即将发布的VTK 5.6里的一些新特性。注意,本书的内容对VTK的后续版本也是同样适用。还有一点要注意的是,在过去的VTK发布的版本号中,我们使用了一个主识别号来代表版本的更新(如,VTK 4.4到VTK5.0),某种程度上也表示版本的向后兼容性。但是随着版本的频繁发布,我们可能会面临着发布VTK 5.10版本(5.10可能会混淆某些用户,让人误会是5.2的前一个版本,实际上它是在5.8之后发布的),或者会发布VTK6.0,而6.0会让人更加清楚版本的向后兼容性,所以将来我们会选择发布VTK 6.0而不是VTK5.10(译者:很显然,Kitware食言了,最后还是发布了VTK5.10,VTK 5的最后一个版本是VTK5.10.1)。当更新版本的VTK发布时,你还是可以阅读本书的内容,尽管某些最新的特性没有在本书中提到,但本书中的资源对于将来VTK发布的版本仍会是适用的。如果想了解将来要发布的VTK的新特性,可以关注VTK的邮件列表(http://www.vtk.org/VTK/help/mailing.html)或是Kitware内部发行的免费刊物《Source》(http://www.kitware.com/products/thesource.html)。

我们强烈建议你使用VTK 5.4或者更高的VTK官方发布版本。官方发布版本比Git版本稳定性、一致性要更好以及经过严格的测试。当然,如果你一定要用VTK的最新版本,就先查看一下VTK测试公告栏里的信息。VTK使用了Kitware的软件开发流程(SoftwareProcess)(http://www.kitware.com/solutions/softwareprocess.html)。在你更新Git仓库时,先确认测试公告栏是否为“绿色”,如果不是绿色,有可能所更新的版本就会不稳定。(见“Kitware’sQuality Software Process”一节,了解更多VTK代码质量控制公告栏等信息。)

目录结构

开始学习VTK之前,首先有必要对VTK的目录结构做一个整体的认识。即使你是选择预编译二进制文件的安装方式,了解这部分内容也有助你在VTK源码中更方便快捷地查找例子、代码以及文档文件。下面是VTK文档的组织结构:

l InfoVis– 包含了用于信息可视化的类。

l Views– 包含了对数据可视化的类,包括:过滤器(Filter)、可视化(Visualization)、交互(Interaction)和选择(Selection)。

l VTK/CMake– 用于跨平台编译的配置文件。

l VTK/Common– 核心的类

l VTK/Examples– 包含按主题归档的详细注释的例子。

l VTK/Filtering– 可视化管道中与数据处理有关的类。

l VTK/GenericFiltering– VTK与外部模拟包的接口适配框架。

l VTK/Geovis– 用于地形可视化的视图、数据源和其他对象。

l VTK/Graphics– 处理3D数据的过滤器(Filter)。

l VTK/GUISupport– VTK与MFC和Qt等用户图形界面开发工具的接口类。

l VTK/Hybrid– 同时要求使用图形学和图像处理功能的类。

l VTK/Imaging– 图像处理过滤器。

l VTK/IO– 用于读写数据的类。

l VTK/Parallel– 支持并行处理类,如MPI。

l VTK/Rendering– 用于渲染的类。

l VTK/Utilities– 支持像expat, png, jpeg, tiff和zlib等软件库。Doxygen目录包含了从源代码里生成Doxygen文档的脚本和配置文件。

l VTK/VolumeRendering– 用于体绘制的类。

l VTK/Widgets– 3D Widget类。

l VTK/Wrapping– 支持对Tcl, Python和Java的封装。

文档

除了这本用户指南以及《The Visualization Toolkit AnObject-Oriented Approach to 3D Graphics》,你还可以获取到其他的文档资源。

Doxygen文档。Doxygen文档是学习VTK非常重要的文档工具,每个web页上面都详细地描述了VTK里每个类的用法、数据成员、成员函数等。文档里也列出了类的继承图以及与该类协同工作的其他类的关系图表。每个文档都有链接到其他类以及源代码的超链接。Doxygen文档可通过http://www.vtk.org/doc/nightly/html/在线访问。注意你所用的VTK版本应该与Doxygen文档版本一致。

头文件。每一个VTK类都是由一个.h头文件以及.cxx的实现文件构成。所有在头文件中声明的每一个成员函数都是对该类所提供的方法的一种快速检索。(事实上,Doxygen文档也是通过这些头文件生成的)。

数据

VTK的程序用例以及测试例子里所用到的数据都可以在http://www.vtk.org上下载到,或者通过Git下载。如何使用Git可以访问VTK官方网页。

1.4其他资源

这本用户指南仅仅是学习VTK的可用资源之一,下面列出了一些在线资源、服务、应用程序以及其他的出版物,相信这些资源对你学习VTK会有很大的帮助。

l 与这本指南配套的教科书《The VisualizationToolkit An Object-Oriented Approach To 3D Graphics》深入讲解了许多VTK里使用到的算法、数据结构等。这本书是Kitware公司出版的,你可以在Kitware网站或者亚马逊网站上购买到。

l 《Source》是Kitware公司按季度发行的内部刊物,里面涵盖了Kitware公司的所有开源项目。一旦有新的功能加进VTK时,会有相关的文章发表在《Source》上。与VTK有关的其他有用的资源、入门等东西也会在季刊上发表。你可以在线访问《Source》(http://www.kitware.com/products/thesource.html),或者通过邮箱注册请求发送每期的《Source》季刊。

l VTK官网上含有大量的资源,如在线帮助文档、Wiki、常见问题解答、dashboard、bug跟踪以及vtkusers邮件列表的搜索引擎。不管是初学者还是经验丰富的开发者,Doxygen文档都是不可多得的好资源。

l vtkusers邮件列表可以让用户和开发者提问题以及接收别人的解答、发布更新、bug修复和改进的内容,以及提出改进系统的建议。请访问VTK官网查询如何加入vtkusers邮件列表(注册地址:http://public.kitware.com/mailman/listinfo/vtkusers)。

l Kitware公司开设了专业的培训课程。涵盖了Kitware公司的所有开源项目,包括VTK,ITK,CMake和ParaView等,每年在纽约北部地区举办两次。另外Kitware公司也可以根据你的开发团队提供一些定制的培训课程。更多信息请访问Kitware官网或者直接发邮件到courses@kitware.com咨询。

l Kitware公司也提供了商业支持和顾问。主要包括VTK专家辅助项目开发、根据你的项目详细说明书Kitware为你提供大规模的顾问等。你可以访问Kitware官网或者发送邮件到sales@kitware.com获取更多信息。

l ParaView是用VTK实现的针对科学可视化的应用程序。可从http://paraview.org上下载。使用ParaView来学习VTK是比较不错的选择,因为你可以通过用户图形界面来熟悉VTK的大部分常用的功能。这也是非常有参考价值的,你可以加载自己的数据,看看主要有哪些可视化技术是可以使用以及你自己希望具有什么样的性能等等。

l CMake是用于跨平台构建编译环境的开源工具。对于VTK初学者来说,只要掌握非常少的关于CMake的知识就可以在标准的Windows,Linux或Mac OSX平台上成功编译VTK;对于一些高级用户来说,他们会觉得CMake在开发过程中起到的作用是相当明显的,要把VTK移植到非标准的平台上时就需要掌握更多的关于CMake的知识。可以访问CMake官网http://cmake.org了解更多的信息。

l CDash是VTK采用的用于源码测试的开源平台。你可以在VTK官网上找到VTK的测试公告栏(由CDash提供技术支持)。公告栏显示了在不同的平台上经过测试的一些结果。对于一些在非标准的平台上进行开发的人员可以贡献他们的测试结果。10.8节中会有详细内容介绍Kitware的软件开发流程。

 

译者:国内目前学习VTK入门的中文资料,主要有【东灵工作室】撰写以及整理的VTK系列教程。希望大家能多多支持我们,一起推动VTK在中华地区的发展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VTK User’s Guide -11th edition 第01章-欢迎学习VTK 的相关文章

  • Windows下编译VTK-9.1.0

    VTK 9编译要点 VTK 9 1 0 src CMake vtkModule cmake 第4075行可以修改Debug的库后缀 VTK 9 2 0 src CMake vtkModule cmake 第4230行可以修改Debug的库后
  • AndroidManifest中activity属性参数设置大全

    activity属性设置大全 android alwaysRetainTaskState true false android clearTaskOnLaunch true false android configChanges mcc m
  • 如何在 Ubuntu 20.04 上添加和删除用户

    配置新 Ubuntu 系统时的首要任务之一是添加和删除用户 每个用户可以对各种命令行和 GUI 应用程序拥有不同的权限级别和特定设置 本文介绍如何在 Ubuntu 18 04 上添加和删除用户帐户 在你开始之前 仅 root 或具有 sud
  • 关于 VTK 7.1.0 + python3.X 的 pycharm 开发环境的搭建

    在此记录一下关于关于 VTK 7 1 0 python3 X 的 pycharm 开发环境的搭建中碰到的问题 一 什么是 VTK 以及支持 python 的版本 VTK visualization toolkit 是一个开源的免费软件系统
  • pragma指令简介

    在编写程序的时候 我们经常要用到 pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作 下面介绍了一下该指令的一些常用参数 希望对大家有所帮助 一 message 参数 message 它能够在编译信息输出窗 口中输出相应的
  • C++11 chrono计时

    我的C 文章列表 C 中Duration Time point和Clocks 万里归来少年心的博客 CSDN博客 time point C 11中的chrono库 实现时间相关的功能 1 time point time point表示一个时
  • Hibernate用法:查询,更新,删除!

    一 基本数据查询 使用Hibernate进行数据查询是一件简单的事 Java程序设计人员可以使用对象操作的方式来进行数据查询 查询时使用一种类似SQL的HQL Hibernate Query Language 来设定查询的条件 与SQL不同
  • vtk使用之Mapper和actor的关联

    参考博客 VTK的Mapper Dezeming的博客 CSDN博客 vtk mapper VTK 图形进阶 vtkPolyData数据生成与显示 简 单的博客 CSDN博客 vtkpolydata 类vtkMapper及其派生类 把输入的
  • Usbkey原理介绍

    不好意思 百度来的 大家一起学习吧 文库中竟然收费5个币 Usbkey原理介绍 一 usbkey实现身份认证原理 采用冲击响应的认证方法 登录时在服务器端和客户端同时进行计算 客户端计算前要先验证USER PIN 通过后在硬件中使用HMAC
  • 如何在vtk中以不同的颜色显示点云?

    我有一个点云 我想在 vtk 中可视化 我想根据某些条件看到它们具有不同的颜色 我正在使用Python 关于如何做到这一点有什么建议吗 多谢 下面是一个根据 z 轴值设置点颜色的示例 import vtk from numpy import
  • 自 Mac OS 10.11 El Capitan 起,具有系统完整性保护的 DYLD_LIBRARY_PATH 技巧的替代方案

    这是我所拥有的 Mac 操作系统 10 11 埃尔卡皮坦 python 2 7 12 从 python org 安装 Library Frameworks Python framework 皮查姆 2016 2 3 vtk 7 1 0 这是
  • vtkStandardNewMacro 给出错误 C4430:缺少类型说明符

    我有以下代码 include
  • vtk.vtkRender() 导致段错误:11

    我有一个 python 脚本 它不是我编写的 它利用了 vtk 模块 它可以在我的旧 iMac 和 Linux 机器上运行 在安装了 OS X Mavericks 的 Macbook Pro 上尝试时 我在渲染过程中遇到了段错误 我已经追踪
  • vtkRenderer 错误

    我是 vtk 的新手 所以我首先使用 CMake 和 Visual Studio 2017 构建 vtk 8 1 1 并使用默认选项和示例 许多示例运行良好 但其中一些会出现错误 这是 CreateTree 示例 但 HelloWorld
  • vtk中顶点和点的区别

    顶点和点之间的主要区别是什么VTK http www vtk org 好吧 我正在将一些计算点分配给vtkPolyData http www vtk org doc nightly html classvtkPolyData html ou
  • Python导入vtk时DLL导入错误

    我需要使用VTK我在 Windows 10 机器上使用 python 编写了库 版本 5 10 因为我正在处理现有代码 但如果没有 我无法导入它DLLImport error Python 2 7 12 v2 7 12 d33e0cf915
  • 在 Python 中保存 VTK 中的数据数组

    Question 如何从 Python 中的 VTK 中提取数据集数组并将其保存在新文件中 e g 对于具有幅度数据集的 VTKforce 移位 and current仅提取移位并将其保存在较小的文件中 Problem 我在远程服务器上有数
  • 如何用VTK存储矢量场? C++、VTKWriter

    比方说 我有一个向量场 u 其分量为 ux uy 和 uz 定义在空间 rx ry 和 rz 中的 非结构化 位置 我想要的只是用 VTK 格式存储这个向量场 即使用 libvtk 中的 vtkwriter 类来存储 Paraview 的可
  • python 3+ 的缓冲函数

    我试图使用 vtk show 打开一个 vtk 窗口 但是每次我这样做时 我的 Ipython 控制台都会崩溃 显然这是因为 Ipython 无法显示外部窗口 而这正是 vtk show 所做的 我在谷歌上搜索了一个解决方案 但它是为 py
  • 使用 vtk 给定一组点创建多条折线

    我需要使用 vtk 和 paraview 显示 50 个粒子空间中的轨迹 目前我的数据是pos x y t n 其中 n 是第 n 个粒子的标签 我已将所有数据保存在 vtk 文件中 该文件的组织方式如下 vtk DataFile Vers

随机推荐

  • 300个韩国网站欣赏

    300个韩国网站欣赏 http www homepg co kr http www yoondesign com http www rodingallery org http www toyota co kr HYUNDAI http ww
  • 使用WinRAR来创建分卷压缩包

    因为科研需求 xff0c 需要将数据备份到百度云盘 xff0c 但很多数据量很大 xff0c 单个文件超过了20G xff0c 因此 xff0c 没有办法直接上传到百度云盘上去 xff0c 如下图 为了解决这个问题 xff0c 考虑到经常玩
  • 写论文时优雅的在word中添加程序代码

    一 工具 打开这个网页PlanetB 如下图 xff1a 二 步骤 1 将你需要插入在word中的代码完整的复制到该网站提示的文本框内 xff0c 选择你的代码类型 xff0c 如C C 43 43 HTML等 xff0c 并点击提交 如下
  • stm32中库函数和hal库的区别

    今天在b站看一个关于嵌入式的视频 xff0c 讲述使用stm32cube软件的 了解这些的小伙伴们应该知道STM32CubeMX 是意法半导体推出的图形化配置工具 xff0c 通过傻瓜化的操作便能实现相关配置 xff0c 最终能够生成C语言
  • python+selenium自动化能打开火狐浏览器但是打不开网址

    python 43 selenium 执行自动化脚本时能打开火狐浏览器而打不开网址时 提示 xff1a Unsupported Marionette protocol version 2 required 3 是由版本不兼容导致的 我安装的
  • 使用docker运行gitlab服务

    之前 xff0c 在服务器上直接安装配置过gitlab xff0c 感觉需要配置安装的东西还是挺多的 xff1a git xff0c redis xff0c postgresql xff0c nginx等 这么多服务一起 xff0c 备份和
  • Kubernetes运维之使用Prometheus全方位监控K8S (概念篇)

    目录 xff1a Prometheus架构 K8S监控指标及实现思路 在K8S平台部署Prometheus 基于K8S服务发现的配置解析 在K8S平台部署Grafana 监控K8S集群中Pod Node 资源对象 使用Grafana可视化展
  • Grafana 告警配置、告警通道及告警内容的安装和配置

    本文主要介绍grafana的告警是如何配置的 xff0c 以及在触发告警时通过邮件和企业微信消息将告警通知给用户 xff0c 最后介绍了如何在告警内容中添加告警时刻的panel图片 告警配置 grafana的告警触发以panel为基础 xf
  • 【面经】momenta 二面

    二面好像主要针对C 43 43 研发来的 所以就基本上问的算法题 面试官小哥哥超nice的 xff0c 整个过程都很耐心 xff0c 最后还细心的讲解了全部的题目 这也太好了8 map的底层实现 xff0c 红黑树 C 43 43 11的了
  • stm32串口通信

    stm32串口通信 基于寄存器与基于固件库编写的差异 使用固件库 xff0c 目前比较多的例程是使用固件库编写的 固件库编写方式 xff0c 特点是简单易于理解 xff0c 资料多 新手适合用这种方式入门 使用寄存器 xff0c 想要深入理
  • markdown和reStructuredText语法简单比较

    PyCharm默认的代码注释就是reStructuredText风格的 加之之前学习 实验设计 这门课的时候 用过readthedocs 43 sphinx写过文档 其默认的格式就是reStructuredText风格的 所以比较好奇 当时
  • python之BeautifulSoup之二 带属性值的抓取(find_all('tag', attrs={'class':'value'})

    系统 xff1a Windows python 2 7 11 利用BeautifulSoup库抓取页面的一些标签TAG值 再抓取一些特定属性的值 示例标签 xff1a lt cc gt lt div id 61 34 post conten
  • 关于租用香港服务器疑问解答

    关于租用香港服务器许多用户还有很多疑问 xff0c 那么下面由专门做海外服务器租用 托管的RAKsmart机房进行疑问解答 香港服务器器租用疑问如下 xff1a 问题一 xff1a 租用香港服务器违法吗 xff1f 租用香港服务器不违法 x
  • 三维重建方法--激光or视觉

    导读 xff1a 激光雷达则是无人驾驶和扫地机器人等领域的核心一环 那么为什么出现多种方案呢 xff1f 它们到底有什么差异 xff1f 看似很酷炫的技术 xff0c 实际上并没有外界想得那么高大上 Realsense之所以能够识别物体的深
  • 虚拟机中ubuntu的中文输入法安装

    1 安装中文语言包 xff0c 在终端里面运行 这个不是很熟悉 xff0c 下面还有些命令 xff0c 但是我只运行了这几个 xff0c 后面就可以顺利安装了 原理不太清楚 sudo apt get install scim sudo ap
  • 1、Ubuntu下安装软件报错

    今天在ubuntu下安装任何软件都提示以下错误 xff1a ideallic 64 ubuntu sudo apt get install git sudo password for ideallic Reading package lis
  • 查看安装的ROS版本号

    1 先在终端输入roscore 2 打开新终端 xff0c 再输入 xff0c rosparam list 3 再输入rosparam get rosdistro就能得到版本
  • [fake_turtlebo.launch] is neither a launch file in package [rbx1_bringup] nor is [rbx1_bringup] ...

    1 问题描述如下 xff1a 2 执行如下命令 export grep ROS 发现ROS PACKAGE PATH不包含本包的路径 3 执行以下命令 cd catkin ws catkin make source devel setup
  • 用C++实现一个简单的PID控制器

    用C 43 43 实现一个简单的PID控制器 先上代码 xff0c 原理后面再补充 span class token macro property span class token directive keyword include spa
  • VTK User’s Guide -11th edition 第01章-欢迎学习VTK

    本节对应原书中的第3页至第7页 欢迎开启VTK之旅 VTK用户指南 VTK是一个开源的 面向对象的计算机图形 可视化和图像处理的软件系统 虽然VTK比较庞大 复杂 xff0c 但是当你了解了它基本的面向对象的设计和实现的方法以后 xff0c