环境信息可视化-vtk课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《环境信息可视化-vtk课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 环境 信息 可视化 vtk 课件
- 资源描述:
-
1、本节课内容VTK:A Tutorial,介绍VTK的基本内容1 What is VTK?2 VTK图形模型3 VTK可视化模型3.0 VTK安装在,有vtk 5.0版已编译好的安装文件:VTK.ZIP把VTK.ZIP解压到目录python25下。(2)VTK的主站点 在可在该站点上下载最新版的源代码、特定平台的二进制代码、例子、数据和文档等。VTK 是几个较为广泛使用的可视化系统之一。AVS 是商用系统,IBM s Data Explorer(DX)原先为商用系统,目前已转为开放源代码系统并改名为OpenDX.其它还有NAG Explorer 4 and Template Graphics A
2、mira.VTK是一个通用可视化系统,已被许多大学和研究机构采用,作为教学和研究工具。许多公司也在其基础上开发了各种可视化系统,包括医学可视化,体可视化,石油勘探,声学系统,流体系统,有限元分析,表面重构等。3.1 What is VTK?开放源代码、可移植(WinTel/Unix)、面向对象的3D计算 机图形,可视化,和图像处理系统;以 C+语言实现,支持Tcl、Python和Java语言;支持复杂应用程序开发,应用程序快速原型开发;支持多种GUI开发环境,如Tk、X/Motif、MFC、wxWidgets。提供数据表达类型,包括无结构点集,多边形数据,图像,体元,结构 格网,正交格网,以及
3、无结构格网等.通过 readers/import以及writers/export和其它程序交换数据。提供数百个数据处理器处理各种数据,从图像变换到三角网构建.VTK绘制模式支持2D、多边形、体元和纹理绘制,以及它们的各 种组合。3.2 VTK结构3.2.1 VTK 在API访问接口上包括两个主要部分:C实现的核心层 自动生成的接口层,包括Tcl、Java和Python.C实现的核心层:数据结构、算法和对计算时间要求高的系统函数在C核心层中实现。核心层中采用对象工厂和虚拟函数等提高系统可移植性以及可扩展性。VTK在核心层独立于任何GUI,不依赖于某一特定的窗口系统。应用程序开发者能很方便地把VT
4、K插入到自己开发的系统中。VTK通过抽象的图像模型实现图形的可移植性。自动生成的接口层:核心层提供速度和效率,接口层提供的是灵活和可扩展能力。例如使用GUI原型开发工具如Tcl/Tk,Python/Tk,Python/wxPython,或 Java AWT可进行专业应用程序的快速开发。3.2.2 VTK内部组成VTK内部包括两个主要的子系统 图形模型子系统和可视化管道子系统。(1)图形模型子系统图形模型是建立在图形语言(如OPENGL)基础上的抽象层,提供跨平台的可移植性。在1993年,不同的计算机平台有各自的图形语言:XGL for Sun,Starbase for Hewl tt-Pack
5、ard,gl for Silicon Graphics.为了实现图形的平台与设备无关,提出了图形模型.图形模型中的对象采用电影工业中的名称命名。灯光、相机、演员和道具是 用户创建场景所使用的类。通过抽象图形模型,3D多边形绘制(lights,cameras,actors)和体绘制以及其它绘制方式就有了一致的访问接口。绘制窗口和绘制器:可视化具体的数据前,必须在计算机屏幕上打开一个绘制窗口。vtkRenderWindow是一个或多个绘制器在其上进行绘制的窗口的抽象基类。直接调用vtkRenderWindow 可以自动生成所在平台上与设备相关的窗口子类。vtkRenderWindow是vtkRen
6、derer对象的容器对象。多个vtkRenderer对象可以平铺在一个vtkRenderWindow 中,从而创建复合的可视化系统。下面例子把两个绘制器放在一个绘制窗口中。每一个有不同的背景颜色:from vtk import*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.SetViewpor
7、t(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道具的抽象基类,包含可
8、见性、方向、大小和位置信息。道具与映射器及特性对象关联.映射器引用输入数据对象并知道如何绘制该输入对象.特性对象包含绘制参数,如颜色和材质等.绘制3D 几何数据vtkActor是在场景中绘制3D几何数据的 vtkProp道具类的子类。演员类对象自动创建缺省的vtkProperty对象,但要求用户自己创建vtkMapper子类。根据几何特性的不同,从vtkDataSetMapper或vtkPolyDataMapper中选择一个.如果数据是用vtkPolyData表示的,包含点,线,和多边形,则使用 vtkPolyDataMapper,否则使用vtkDataSetMapper。下例创建一个立方体:
9、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
10、.0)cubeActor.RotateY(20.0)cubeActor.GetProperty().SetColor(1.0,0.7,0.7)renWin Render使用演员的GetProperty()访问自动创建的特性对象。运行ch3cubecolor.py 3D体数据绘制vtkImageData是vtkDataSet的子类,可表示1D、2D和3D图像数据。作为vtkDataSet的子类,vtkImageData可用vtkActor表示,并可用 vtkDataSetMapper进行绘制。在3D下,vtkImageData数据被看作体元,相应的,它就可用vtkVolume表示,并用 vtkV
11、olumeMapper的子类绘制.VTK目前支持三种类型的体绘制 光线跟踪,2D纹理映射,以及VolumePro图形卡.下例中,首先读入一个3D结构数据,然后使用vtkVolumeTextureMapper2D绘制:negReader=vtkSLCReader()negReader.Set(“neghip.slc”)negMapper=vtkVolumeTextureMapper2D()negMapper.SetInput(negReader.GetOutput()体绘制最困难的是定义转换函数,把标量值转成颜色和透明度。negOpacityvtkPiecewiseFunction()negOp
12、acity.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(negO
13、pacity)negVolume=vtkVolume()negVolume.SetMapper(negMapper)negVolume.SetProperty(negProperty)ren2.AddProp(negVolume)ren2.ResetCamera()renWin.Render()运行 几何与体元的混合:VTK在一个场景中可以混合多个演员和体元进行绘制。下例,多边形和体元混合在一起。posReader=vtkPolyDataReader()posReader.Set(“poshipsurface.vtk”)posMapper=vtkPolyDataMapper()posMappe
14、r.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()title
15、Mapper.SetInput(“This is a Pink Cube”)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.A
展开阅读全文