环境信息可视化

上传人:F****n 文档编号:97071958 上传时间:2019-09-01 格式:PPT 页数:46 大小:528KB
返回 下载 相关 举报
环境信息可视化_第1页
第1页 / 共46页
环境信息可视化_第2页
第2页 / 共46页
环境信息可视化_第3页
第3页 / 共46页
环境信息可视化_第4页
第4页 / 共46页
环境信息可视化_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《环境信息可视化》由会员分享,可在线阅读,更多相关《环境信息可视化(46页珍藏版)》请在金锄头文库上搜索。

1、本节课内容,VTK: A Tutorial, 介绍VTK的基本内容 1 What is VTK? 2 VTK图形模型 3 VTK可视化模型,3.0 VTK安装,在http:/ 有vtk 5.0版已编译好的安装文件:VTK.ZIP 把VTK.ZIP解压到目录python25下。 (2) VTK的主站点 在www.vtk.org 可在该站点上下载最新版的源代码、特定平台的二进制代码、例子、数据和文档等。,VTK 是几个较为广泛使用的可视化系统之一。AVS 是商用系统,IBM s Data Explorer (DX)原先为商用系统,目前已转为开放源代码系统并改名为OpenDX.其它还有NAG Exp

2、lorer 4 and Template Graphics Amira. 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核心层中实现。 核心层中采用对象工厂和虚拟函数等提高系统可移植性

4、以及可扩展性。 VTK在核心层独立于任何GUI,不依赖于某一特定的窗口系统。应用程序开发者能很方便地把VTK插入到自己开发的系统中。 VTK通过抽象的图像模型实现图形的可移植性。,自动生成的接口层: 核心层提供速度和效率,接口层提供的是灵活和可扩展能力。 例如使用GUI原型开发工具如Tcl/Tk, Python/Tk, Python/wxPython, 或 Java AWT可进行专业应用程序的快速开发。,3.2.2 VTK内部组成 VTK内部包括两个主要的子系统 图形模型子系统和可视化管道子系统。 (1)图形模型子系统 图形模型是建立在图形语言(如OPENGL)基础上的抽象层,提供跨平台的可移

5、植性。 在1993年, 不同的计算机平台有各自的图形语言: XGL for Sun, Starbase for Hewl tt-Packard, gl for Silicon Graphics. 为了实现图形的平台与设备无关,提出了图形模型. 图形模型中的对象采用电影工业中的名称命名。灯光、相机、演员和道具是 用户创建场景所使用的类。通过抽象图形模型,3D多边形绘制(lights,cameras,actors)和体绘制以及其它绘制方式就有了一致的访问接口。,绘制窗口和绘制器: 可视化具体的数据前,必须在计算机屏幕上打开一个绘制窗口。vtkRenderWindow是一个或多个绘制器在其上进行绘制

6、的窗口的抽象基类。直接调用vtkRenderWindow 可以自动生成所在平台上与设备相关的窗口子类。 vtkRenderWindow是vtkRenderer对象的容器对象。多个vtkRenderer对象可以平铺在一个vtkRenderWindow 中,从而创建复合的可视化系统。,下面例子把两个绘制器放在一个绘制窗口中。每一个有不同的背景颜色: from vtk import * renWin =vtkRenderWindow() renWin.SetSize( 600, 300) ren1=vtkRenderer() ren1.SetViewport( 0.0, 0.0, 0.5, 1.0)

7、 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()

8、 iren.SetRenderWindow(renWin) iren.Initialize() iren.Start(),道具, 映射器,和特性 道具是被加到绘制器中创建场景的对象。 vtkProp是所有 2D和3D道具的抽象基类,包含可见性、方向、大小和位置信息。 道具与映射器及特性对象关联. 映射器引用输入数据对象并知道如何绘制该输入对象. 特性对象包含绘制参数,如颜色和材质等.,绘制3D 几何数据 vtkActor是在场景中绘制3D几何数据的 vtkProp道具类的子类。 演员类对象自动创建缺省的vtkProperty对象,但要求用户自己创建vtkMapper子类。根据几何特性的不同,从

9、vtkDataSetMapper或vtkPolyDataMapper中选择一个. 如果数据是用vtkPolyData表示的,包含点,线,和多边形,则使用 vtkPolyDataMapper,否则使用vtkDataSetMapper。,下例创建一个立方体: cubeData=vtkCubeSource() cubeMapper=vtkPolyDataMapper() cubeMapper.SetInput(cubeData.GetOutput() cubeActor=vtkActor() cubeActor.SetMapper(cubeMapper) Ren1.AddProp(cubeActor

10、) Ren1.ResetCamera() renWin.Render() 运行 由于vtkCubeSource对象是多边形数据,使用vtkPolyDataMapper绘制数据,ResetCamera()把相机对准数据,旋转与改变颜色: cubeActor.RotateX( 30.0) cubeActor.RotateY( 20.0) cubeActor.GetProperty().SetColor( 1.0, 0.7, 0.7) renWin Render 使用演员的GetProperty()访问自动创建的特性对象。 运行ch3cubecolor.py,3D体数据绘制 vtkImageData

11、是vtkDataSet的子类,可表示1D、2D和3D图像数据。作为vtkDataSet的子类,vtkImageData可用vtkActor表示,并可用 vtkDataSetMapper进行绘制。在3D下, vtkImageData数据被看作体元,相应的,它就可用vtkVolume表示,并用 vtkVolumeMapper的子类绘制. VTK目前支持三种类型的体绘制 光线跟踪,2D纹理映射,以及VolumePro图形卡.,下例中,首先读入一个3D结构数据,然后使用vtkVolumeTextureMapper2D绘制: negReader=vtkSLCReader() negReader.SetF

12、ileName( “neghip.slc”) negMapper=vtkVolumeTextureMapper2D() negMapper.SetInput(negReader.GetOutput() 体绘制最困难的是定义转换函数,把标量值转成颜色和透明度。 negOpacityvtkPiecewiseFunction() negOpacity.AddPoint(0 ,0.0) negOpacity.AddPoint(255, 0.2) negColor=vtkColorTransferFunction() negColor.AddRGBPoint( 64, 1.0, 0.0, 0.0) ne

13、gColor.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.AddPr

14、op(negVolume) ren2.ResetCamera() renWin.Render() 运行,几何与体元的混合: VTK在一个场景中可以混合多个演员和体元进行绘制。下例,多边形和体元混合在一起。 posReader=vtkPolyDataReader() posReader.SetFileName(“poshipsurface.vtk”) posMapper=vtkPolyDataMapper() posMapper.SetInput(posReader.GetOutput() posActor=vtkActor() posActor.SetMapper( posMapper ) r

15、en2.AddProp( posActor ) renWin.Render() 运行,2D数据绘制 除了3D几何和体元数据,VTK能够可视化2D数据,如几何,图像,和文本。演员,映射器,和特性同样适用于2D数据。下例把2D数据和3D数据混合绘制。vtkActor2D表示场景中的标题, vtkTextMapper绘制文本数据, vtkActor2D自动创建vtkProperty2D对象。 titleMapper=vtkTextMapper() titleMapper.SetInput(“This is a Pink Cube ”) titleMapper.GetTextProperty().Se

16、tJustificationToCentered() 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(“Den

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号