第02章-VTK安装(1)

【译者:这个系列教程是以Kitware公司出版的《VTK User’s Guide -11th edition》一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容。敬请期待^_^。欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!】

【本节对应原书中的第9页至第10页】


这一章将详细介绍安装VTK的步骤。安装过程的难点依赖于若干因素。Windows平台下可先安装二进制文件vtk.exe,然后利用它可以运行Tcl脚本文件。使用Python和Java语言开发VTK应用程序时,可以链接VTK库到相应的应用程序中;而在其他非Windows平台下使用VTK时,则必须通过VTK源码来编译VTK(因为要保证VTK在不同平台下预编译文件的实时更新是一件工作量非常庞大的事情,所以我们力求让VTK在各种平台下的编译尽可能的简单)。如果你选择的是从源代码编译VTK,在多核处理器系统中可能只需花费半小时左右或者更快的时间;如果是内存有限的硬件系统,也许就要花费几个小时甚至更长的时间才能编译完成。另外,编译VTK所需时间的长短也取决于你要封装多少种解释性语言到VTK的C++内核中以及你的系统配置。

读者可以参考第三章“VTK系统架构”,这部分内容是关于VTK系统架构的概览,可能有助于你对接下来的编译过程的理解。如果在VTK的编译安装过程中遇到什么问题,读者可以在vtkusers邮件列表提问(参考第一章“其他资源”一节)。

2.1 概览

VTK可以在不同的计算机平台下编译和运行。对于不同的平台,我们必须要考虑不同的操作系统、硬件配置以及编译器等要素,由于这些要素的组合比较多,所以发布针对不同平台、编译环境等都可使用的VTK二进制版本的做法显然是不可取的。因此,建议通过VTK源代码来编译安装VTK,通过编译源代码生成VTK库文件以及可执行程序。

本章首先对CMake作一简要介绍,CMake是一个跨平台的工程构建工具,可用于各种操作系统配置编译环境。接着,本章内容根据不同类型的操作系统分为两个部分:Windows平台和UNIX平台的VTK安装(对于Macintosh OSX或Linux平台,可以参考UNIX平台的进行安装)。读者只需要选读相应的平台安装步骤说明进行VTK的编译安装。VTK不支持早期版本的Windows系统,如Windows 3.1等,同样也不支持版本老于OSX 10.2 (Jaguar) 的Macintosh操作系统。

2.2 CMake

CMake是一个开源的、跨平台的用于配置、管理工程构建过程的工具。简单地说,平台独立文件(CMakeLists.txt)描述了构建工程的一些细节以及所要依赖的库文件等。CMake运行时,它会根据所运行的操作系统以及编译器等环境创建本地编译文件。比如,在Windows平台下,使用Microsoft Visual Studio集成开发环境,CMake会自动生成项目(Solution)文件和工程(Project)文件。而在UNIX平台下,则是创建了makefile文件。通过这种方式,可以非常容易地在任何计算机平台下编译VTK,以及使用各种开发工具(如Editors, Debuggers, Profiles, Compilers等)。想进一步了解更多关于CMake的内容可以访问http://www.cmake.org,或者参考Kitware公司出版的《Mastering CMake》一书。最新版本的CMake可以从CMake网站下载。

运行CMake时,需要指定三方面的信息:使用何种编译器,源文件目录的路径和编译目录的路径。编译目录是指编译过程中产生的目标代码、库文件以及二进制文件等存放的位置。CMake会从源文件目录中读取最顶层的CMakeLists.txt文件,接着在编译目录中生成缓存文件CMakeCache.txt。值得注意的是,CMake可以很好地处理复杂的源文件目录结构,源文件目录树下的每个子目录里可以都放有一个CMakeLists.txt文件。

一旦这些基本的信息都设置好,用户就可以开始“配置”(Configure)。CMake会在这一步读取最顶层的CMakeLists.txt文件,以确定系统配置,定位系统资源以及遍历源文件目录中的每一层子目录。CMake运行时,会出现很多控制工程构建过程的CMake变量和标志(称为CMake的缓存条目“CMake Cache Entries”)。“配置”完成以后,这些条目会显示在CMake的GUI界面上,条目的显示风格可以通过CMake GUI上的视图选项进行切换。当改变某个条目的值时,要重新进行“配置”。直到所有的CMake条目都配置完成以后,就可以进入下一步,即“生成”(Generate)。“生成”阶段会根据指定的编译器生成项目文件、工程文件或者Makefiles文件。

接下来的两部分内容(Windows和UNIX)详细介绍了在不同平台下CMake的运行步骤。注意,上面提到的步骤对所有的平台都是适用的。CMake界面可能会依据不同的操作系统有所不同。但是CMake-gui从CMake 2.6开始及后续版本都是基于Qt的,所以在不同的平台下CMake界面都是大同小异的。建议选择安装CMake的预编译二进制文件,无须从CMake源文件中编译安装,除非你想要研究CMake的源代码。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 应用
我理解您的问题是如何用 Python 代码输出 trame-vtk 的圆颜色变化动画。我建议您可以使用 VTK 库和 Matplotlib 库来实现这个功能。下面是一个简单的示例代码: ``` import vtk import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 创建圆的源 points = vtk.vtkPoints() polys = vtk.vtkCellArray() circle = vtk.vtkPolyData() numPts = 50 for i in range(numPts): x = np.cos(2*np.pi/numPts*i) y = np.sin(2*np.pi/numPts*i) z = 0 points.InsertNextPoint(x, y, z) if i < numPts-1: quad = vtk.vtkQuad() quad.GetPointIds().SetId(0, i) quad.GetPointIds().SetId(1, i+1) quad.GetPointIds().SetId(2, i+numPts+1) quad.GetPointIds().SetId(3, i+numPts) polys.InsertNextCell(quad) circle.SetPoints(points) circle.SetPolys(polys) # 创建圆的渲染器 renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.SetSize(800, 800) renderWindow.AddRenderer(renderer) interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) # 创建圆的mapper和actor mapper = vtk.vtkPolyDataMapper() mapper.SetInputData(circle) actor = vtk.vtkActor() actor.SetMapper(mapper) renderer.AddActor(actor) # 添加颜色映射器 colorLUT = vtk.vtkColorTransferFunction() colorLUT.AddRGBPoint(0.0, 1.0, 0.0, 0.0) colorLUT.AddRGBPoint(1.0, 0.0, 1.0, 0.0) # 创建颜色映射器的bar scalarBar = vtk.vtkScalarBarActor() scalarBar.SetLookupTable(colorLUT) # 将颜色映射器的bar添加到渲染器 renderer.AddActor2D(scalarBar) # 创建颜色变化的动画 animationSteps = 100 for i in range(animationSteps): t = float(i) / float(animationSteps-1) color = colorLUT.GetColor(t) actor.GetProperty().SetColor(color) scalarBar.SetOrientationToHorizontal() scalarBar.SetWidth(0.8) scalarBar.SetHeight(0.15) scalarBar.SetPosition(0.1, 0.1) renderWindow.Render() ``` 这个代码会输出一个圆形的动画,圆的颜色会随着时间变化。您可以根据自己的需求修改代码来输出不同的动画效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值