环境信息可视化-vtk.ppt_第1页
环境信息可视化-vtk.ppt_第2页
环境信息可视化-vtk.ppt_第3页
环境信息可视化-vtk.ppt_第4页
环境信息可视化-vtk.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本节课内容 VTK ATutorial 介绍VTK的基本内容1WhatisVTK 2VTK图形模型3VTK可视化模型 3 0VTK安装 在把VTK ZIP解压到目录python25 下 2 VTK的主站点在www vtk org可在该站点上下载最新版的源代码 特定平台的二进制代码 例子 数据和文档等 VTK是几个较为广泛使用的可视化系统之一 AVS是商用系统 IBM sDataExplorer DX 原先为商用系统 目前已转为开放源代码系统并改名为OpenDX 其它还有NAGExplorer4andTemplateGraphicsAmira VTK是一个通用可视化系统 已被许多大学和研究机构采用 作为教学和研究工具 许多公司也在其基础上开发了各种可视化系统 包括医学可视化 体可视化 石油勘探 声学系统 流体系统 有限元分析 表面重构等 3 1WhatisVTK 开放源代码 可移植 WinTel Unix 面向对象的3D计算机图形 可视化 和图像处理系统 以C 语言实现 支持Tcl Python和Java语言 支持复杂应用程序开发 应用程序快速原型开发 支持多种GUI开发环境 如Tk X Motif MFC wxWidgets 提供数据表达类型 包括无结构点集 多边形数据 图像 体元 结构格网 正交格网 以及无结构格网等 通过readers import以及writers export和其它程序交换数据 提供数百个数据处理器处理各种数据 从图像变换到三角网构建 VTK绘制模式支持2D 多边形 体元和纹理绘制 以及它们的各种组合 3 2VTK结构3 2 1VTK在API访问接口上包括两个主要部分 C 实现的核心层自动生成的接口层 包括Tcl Java和Python C 实现的核心层 数据结构 算法和对计算时间要求高的系统函数在C 核心层中实现 核心层中采用对象工厂和虚拟函数等提高系统可移植性以及可扩展性 VTK在核心层独立于任何GUI 不依赖于某一特定的窗口系统 应用程序开发者能很方便地把VTK插入到自己开发的系统中 VTK通过抽象的图像模型实现图形的可移植性 自动生成的接口层 核心层提供速度和效率 接口层提供的是灵活和可扩展能力 例如使用GUI原型开发工具如Tcl Tk Python Tk Python wxPython 或JavaAWT可进行专业应用程序的快速开发 3 2 2VTK内部组成VTK内部包括两个主要的子系统 图形模型子系统和可视化管道子系统 1 图形模型子系统图形模型是建立在图形语言 如OPENGL 基础上的抽象层 提供跨平台的可移植性 在1993年 不同的计算机平台有各自的图形语言 XGLforSun StarbaseforHewltt Packard glforSiliconGraphics 为了实现图形的平台与设备无关 提出了图形模型 图形模型中的对象采用电影工业中的名称命名 灯光 相机 演员和道具是用户创建场景所使用的类 通过抽象图形模型 3D多边形绘制 lights cameras actors 和体绘制以及其它绘制方式就有了一致的访问接口 绘制窗口和绘制器 可视化具体的数据前 必须在计算机屏幕上打开一个绘制窗口 vtkRenderWindow是一个或多个绘制器在其上进行绘制的窗口的抽象基类 直接调用vtkRenderWindow可以自动生成所在平台上与设备相关的窗口子类 vtkRenderWindow是vtkRenderer对象的容器对象 多个vtkRenderer对象可以平铺在一个vtkRenderWindow中 从而创建复合的可视化系统 下面例子把两个绘制器放在一个绘制窗口中 每一个有不同的背景颜色 fromvtkimport renWin vtkRenderWindow renWin SetSize 600 300 ren1 vtkRenderer ren1 SetViewport 0 0 0 0 0 5 1 0 ren1 SetBackground 0 8 0 4 0 2 renWin AddRenderer ren1 ren2 vtkRenderer ren2 SetViewport 0 5 0 0 1 0 1 0 ren2 SetBackground 0 1 0 2 0 4 renWin AddRenderer ren2 renWin Render 运行 交互器 一般 我们使用鼠标控制场景中的相机位置和方向 以及其它道具 vtkRenderWindowInteractor提供交互功能 iren vtkRenderWindowInteractor iren SetRenderWindow renWin iren Initialize iren Start 道具 映射器 和特性道具是被加到绘制器中创建场景的对象 vtkProp是所有2D和3D道具的抽象基类 包含可见性 方向 大小和位置信息 道具与映射器及特性对象关联 映射器引用输入数据对象并知道如何绘制该输入对象 特性对象包含绘制参数 如颜色和材质等 绘制3D几何数据vtkActor是在场景中绘制3D几何数据的vtkProp道具类的子类 演员类对象自动创建缺省的vtkProperty对象 但要求用户自己创建vtkMapper子类 根据几何特性的不同 从vtkDataSetMapper或vtkPolyDataMapper中选择一个 如果数据是用vtkPolyData表示的 包含点 线 和多边形 则使用vtkPolyDataMapper 否则使用vtkDataSetMapper 下例创建一个立方体 cubeData vtkCubeSource cubeMapper vtkPolyDataMapper cubeMapper SetInput cubeData GetOutput cubeActor vtkActor cubeActor SetMapper cubeMapper Ren1 AddProp cubeActor Ren1 ResetCamera renWin Render 运行由于vtkCubeSource对象是多边形数据 使用vtkPolyDataMapper绘制数据 ResetCamera 把相机对准数据 旋转与改变颜色 cubeActor RotateX 30 0 cubeActor RotateY 20 0 cubeActor GetProperty SetColor 1 0 0 7 0 7 renWinRender使用演员的GetProperty 访问自动创建的特性对象 运行ch3 cubecolor py 3D体数据绘制vtkImageData是vtkDataSet的子类 可表示1D 2D和3D图像数据 作为vtkDataSet的子类 vtkImageData可用vtkActor表示 并可用vtkDataSetMapper进行绘制 在3D下 vtkImageData数据被看作体元 相应的 它就可用vtkVolume表示 并用vtkVolumeMapper的子类绘制 VTK目前支持三种类型的体绘制 光线跟踪 2D纹理映射 以及VolumePro图形卡 下例中 首先读入一个3D结构数据 然后使用vtkVolumeTextureMapper2D绘制 negReader vtkSLCReader negReader SetFileName neghip slc negMapper vtkVolumeTextureMapper2D negMapper SetInput negReader GetOutput 体绘制最困难的是定义转换函数 把标量值转成颜色和透明度 negOpacity vtkPiecewiseFunction negOpacity AddPoint 0 0 0 negOpacity AddPoint 255 0 2 negColor vtkColorTransferFunction negColor AddRGBPoint 64 1 0 0 0 0 0 negColor AddRGBPoint 128 0 0 0 0 1 0 negColor AddRGBPoint 196 0 0 1 0 0 0 创建体元特性和体元道具 negProperty vtkVolumeProperty negProperty SetColor negColor negProperty SetScalarOpacity negOpacity negVolume vtkVolume negVolume SetMapper negMapper negVolume SetProperty negProperty ren2 AddProp negVolume ren2 ResetCamera renWin Render 运行 几何与体元的混合 VTK在一个场景中可以混合多个演员和体元进行绘制 下例 多边形和体元混合在一起 posReader vtkPolyDataReader posReader SetFileName poshipsurface vtk posMapper vtkPolyDataMapper posMapper SetInput posReader GetOutput posActor vtkActor posActor SetMapper posMapper ren2 AddProp posActor renWin Render 运行 2D数据绘制除了3D几何和体元数据 VTK能够可视化2D数据 如几何 图像 和文本 演员 映射器 和特性同样适用于2D数据 下例把2D数据和3D数据混合绘制 vtkActor2D表示场景中的标题 vtkTextMapper绘制文本数据 vtkActor2D自动创建vtkProperty2D对象 titleMapper vtkTextMapper titleMapper SetInput ThisisaPinkCube titleMapper GetTextProperty SetJustificationToCentered titleActor vtkActor2D titleActor SetMapper titleMapper titleActor GetProperty SetColor 1 1 0 pc titleActor GetPositionCoordinate pc SetCoordinateSystemToNormalizedViewport Pc SetValue 0 5 0 92 ren1 AddProp titleActor renWin Render 运行 2D数据常用于注记 VTK提供了一些对象 能够把多个2D演员和映射器组合成一个2D演员 例如 vtkScalarBarActor把文本和2D多边形组合成图例 scalarBar vtkScalarBarActor scalarBar SetLookupTable negColor scalarBar SetTitle Density sPC scalarBar GetPositionCoordinate sPC SetCoordinateSystemToNormalizedViewport sPC SetValue 0 8 0 1 ren2 AddProp scalarBar renWin Render 运行 灯光 相机VTK应用程序不需要显式创建vtkLight或vtkCamera 如果没有创建 系统会自动创建 从绘制器可以修改位置 焦点以及视场等 相机包含一些方法 通过它们可调整位置 旋转等 如Azimuth Elevation Roll Pitch andYaw cam ren2 GetActiveCamera cam Azimuth 20 0 cam Elevation 10 0 renWin Render 运行 灯光缺省是白光 位置和焦点缺省情况下和相机一致 下例加入第二个光源 绿色 light vtkLight light SetFocalPoint 0 0 0 0 0 0 light SetPosition 1 0 0 0 0 0 light SetColor 0 0 1 0 0 0 light SetIntensity 0 5 ren2 AddLight light renWin Render 运行 2 VTK可视化管道VTK数据处理管道把数据变换成可由图形子系统绘制的形式 或变换成其它形式 以待管道的后续处理 例如 读入离散点 通过三角化创建多边形 使用面绘制显示mesh面等构成一个数据处理管道 管道 也叫做可视化网络 通过连接处理对象和数据对象构成 数据对象提供对数据的访问 处理对象操作数据对象 在实现上 连接通过SetInput GetOutput 方法实施 aFilter SetInput bFilter GetOutput Filters创建与它的输出类型一致的内部数据对象 只有输出与输入类型匹配的连接能够成立 上例中 bFilter的输出类型和aFilter的输入类型必须一致 类型检查可在编译时或运行时进行 一旦管道构建起来 Filters则只有在内部状态改变了或它的输入数据改变了才能重新执行 VTK采用分布式隐含更新方法控制管道的运行 每个对西那个管理一个内部时间标记 只有过时的对象才能重新运算 数据对象 VTK一般把数据表示成场数据 数据集是带有拓扑和几何结构的数据对象 除了结构 数据集还附带有属性数据 属性数据包括 标量 矢量 张量 法向 纹理坐标 以及场数据 处理对象 VTK提供了数百个处理对象 其中多数只处理一种数据类型 如图像处理对象 一些处理对象如vtkContourFilter接受一种类型的数据输入 输出另一种类型的数据 处理对象一般被称为Filters VTK把处理对象分为三类 源处理对象 过滤器 和映射器 源处理对象没有VTK数据输入 但产生一到多个输出 如读入器 过滤器接受一到多个输入 产生一到多个输出 映射器是管道的终点 它或者和图形系统耦合在一起 或者把数据写到磁盘或另一管道 例子 读取数字化的多边形数据 然后简化 用Laplacian光滑减少面噪声 生成面法线 修饰表面 读多边形数据 Reader vtkBYUReader Reader SetGeometryFileName fran g 创建管道 由decimator smoother 和normalgenerator组成 Deci vtkDecimatePro Deci SetInput reader GetOutput Deci SetTargetReduction 0 9 Deci PreserveTopologyOn Smoother vtkSmoothPolyDataFilter Smoother SetInput deci GetOutput Normals vtkPolyDataNormals Normals SetInput smoother GetOutput Normals SetFeatureAngle 60 mapper vtkPolyDataMapper Mapper SetInput normals GetOutput fran vtkActor Fran SetMapper mapper Fran GetProperty SetColor 1 0 49 0 25 ptMask vtkMaskPoints ptMask SetInput normals GetOutput ptMask SetOnRatio 10 ptMask RandomModeOn cone vtkConeSource Cone SetResolution 6 Transform vtkTransform Transform Translate 0 5 0 0 0 0 transformF vtkTransformPolyDataFilter transformF SetInput cone GetOutput transformF SetTransform transform Glyph vtkGlyph3D Glyph SetInput ptMask GetOutput Glyph SetSource transformF GetOutput Glyph SetVectorModeToUseNormal Glyph SetScaleModeToScaleByVector Glyph SetScaleFactor 0 004 spikeMapper vtkPolyDataMapper spikeMapper SetInput glyph GetOutput spikeActor vtkActor spikeActor SetMapper spikeMapper spikeActor GetProperty SetColor 0 79 34 ren3 vtkRenderer renWin2 vtkRenderWindow renWin2 AddRenderer ren3 Iren2 vtkRenderWindowInteractor Iren2 SetRenderWindow renWin2 Ren3 AddActor fran Ren3 AddActor spikeAc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论