VTK教程之一 可视化管线.docx_第1页
VTK教程之一 可视化管线.docx_第2页
VTK教程之一 可视化管线.docx_第3页
VTK教程之一 可视化管线.docx_第4页
全文预览已结束

下载本文档

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

文档简介

VTK教程之一 可视化管线VTK是一个基于面向对象的开源三维绘图软件包,和其它的的三维绘图引擎如OSG、OGRE不同之处在于,VTK可视化对象主要是各种数据,更加注重对数据分析处理后的可视化,可视化的内容是人们无法直接感受到的东西,如地质构造、地层分布、矿床分布、三维空间应力场的状态变化等等,而OSG、OGRE是基于场景的可视化,更强调视觉感官的感受,所以OSG主要应用于虚拟现实领域,而VTK主要应用于科学计算可视化领域,本教程主要介绍VTK的可视化应用。 VTK的可视化设计是基于管线流的设计模式,将要处理的数据作为流动介质在管线中流动,不同的阶段对数据有不同的处理方式,VTK的可视化管线主要由图形模型和可视化模型组成,如下图所示:可视化模型主要对数据进行处理,生成可被绘制的几何体,而图形模型主要对生成的几何体进行绘制,在VTK的可视化管线中所包含的对象一般包括:源对象、过滤器对象(可选)、映射器对象、Props对象、绘制器对象、绘制窗口,其中源对象、过滤器对象(可选)、映射器对象、绘制器对象、绘制窗口为处理对象,Props对象为数据对象,映射器对象是可视化模型和图形模型的接口。 有了可视化管线,VTK的可视化过程就可以用数据在可视化管线流动的过程来描述(数据在管线中流动过程中,被管线不同的对象处理,最终以图形的方式表现数据信息),VTK的可视化管线具有如下特点:1、变换数据从原始的形式变换成图元的形式,最终以图形的形式显示。2、表现用VTK内部定义的数据结构描述数据,形成数据集,用图形的方式表现数据。3、是基于面向对象的 用面向对象的观点描述可视化管线,表现是数据对象,变换是处理对象。 下面我们对VTK可视化管线的各个对象分别介绍,在可视化管线中,按对数据处理方式的不同,分为数据对象和处理对象,其中数据对象主要作用是表现数据信息,并对表现的信息进行维护(创建、访问、删除),处理对象主要是对输入的数据进行处理后生成输出新的数据,处理对象主要包括:1、源对象 数据生成的源头,数据来源主要包括从磁盘读取数据文件,如VTK所支持的各种格式文件生成数据源对象,这种源对象被称为读源对象,或者利用数学方法生成源对象,如利用多个四边形构建一个圆柱体,这种对象被称为程序源对象。2、过滤器对象 对源对象进行处理,生成新的数据集输出。3、映射器对象 映射器对象主要作用是将可视化模型生成的数据转换到图形模型进行绘制,或者以磁盘文件的形式进行输出。以上对VTK可视化管线做了一个简单的介绍,下面通过一个示例程序来说明数据是如何在可视化管线中流动的。#include stdafx.h#include vtkCamera.h#include vtkGenericRenderWindowInteractor.h#include vtkInteractorStyleJoystickCamera.h#include vtkInteractorStyleTrackballCamera.h#include vtkLODActor.h#include vtkLight.h#include vtkPolyData.h#include vtkPolyDataMapper.h#include vtkPropPicker.h#include vtkProperty.h#include vtkRenderWindow.h#include vtkRenderer.h#include vtkSTLReader.h#include vtkShrinkPolyData.hint main( int argc, char *argv ) /创建绘制器对象 vtkRenderer *ren1 = vtkRenderer:New(); /设置相机 ren1-GetActiveCamera()-SetClippingRange(0.294421 , 29.4421); ren1-GetActiveCamera()-SetDistance(7.94348); ren1-GetActiveCamera()-SetFocalPoint(-66.9367 , -49.4539 , 258.453); ren1-GetActiveCamera()-SetPosition(-67.8091 , -57.3489 , 258.377); ren1-GetActiveCamera()-SetViewAngle(20); ren1-GetActiveCamera()-SetViewUp(-0.82718 , 0.0860684 , 0.555306); ren1-GetActiveCamera()-SetParallelProjection(0); ren1-GetActiveCamera()-SetUseHorizontalViewAngle(0); ren1-SetBackground(0.1 , 0.2 , 0.4); ren1-SetLightFollowCamera(1); /创建绘制窗口 vtkRenderWindow *renWin = vtkRenderWindow:New(); renWin-AddRenderer(ren1); renWin-SetSize(1134 , 624); /创建交互器 vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor:New(); iren-SetRenderWindow(renWin); iren-SetLightFollowCamera(1); /读源对象读取stl数据文件 vtkSTLReader *part = vtkSTLReader:New(); part-SetOutput(part-GetOutput(); part-SetFileName(42400-IDGH.stl); /创建过滤器对象,该对象将输入数据集的每个单元向单元质心收缩 /将会导致相邻单元之间出现裂缝 vtkShrinkPolyData *shrink = vtkShrinkPolyData:New(); /将源对象和过滤器连接 shrink-SetInput(vtkPolyData *) part-GetOutput(); /设置收缩系数,如果为1,不收缩 shrink-SetShrinkFactor(0.9); /创建映射器对象 vtkPolyDataMapper *partMapper = vtkPolyDataMapper:New(); partMapper-SetInput(vtkPolyData *) shrink-GetOutput(); partMapper-SetNumberOfPieces(1); partMapper-SetScalarRange(0 , 1); partMapper-SetColorMode(0); partMapper-SetResolveCoincidentTopology(0); partMapper-SetScalarMode(0); partMapper-SetImmediateModeRendering(0); partMapper-SetScalarVisibility(1); partMapper-SetUseLookupTableScalarRange(0); /创建Props对象(Actor) vtkLODActor *partActor = vtkLODActor:New(); partActor-SetMapper(partMapper); partActor-GetProperty()-SetAmbientColor(0.8275 , 0.8275 , 0.8275); partActor-GetProperty()-SetColor(0.8275 , 0.8275 , 0.8275); partActor-GetProperty()-SetDiffuseColor(0.8275 , 0.8275 , 0.8275); partActor-GetProperty()-SetOpacity(1); partActor-GetProperty()-SetInterpolation(1); partActor-GetProperty()-SetRepresentation(2); partActor-GetProperty()-SetBackfaceCulling(0); partActor-GetProperty()-SetEdgeVisibility(0); partActor-GetProperty()-SetFrontfaceCulling(0); partActor-SetOrigin(0 , 0 , 0); partActor-SetPosition(0 , 0 , 0); partActor-SetScale(1 , 1 , 1); partActor-SetVisibility(1); /将Actor对象添加到绘制器中 ren1-AddActor( partActor ); /绘制 ren1-ResetCamera(); ren1-ResetCamera

温馨提示

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

评论

0/150

提交评论