第一部分 VTK程序一般流程ppt课件_第1页
第一部分 VTK程序一般流程ppt课件_第2页
第一部分 VTK程序一般流程ppt课件_第3页
第一部分 VTK程序一般流程ppt课件_第4页
第一部分 VTK程序一般流程ppt课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

.,报告人:邹水中日期:2010.4.2,VTK使用总结,.,内容简介,一、VTK程序一般流程二、VTK的数据对象接口三、VTK的面绘制、体绘制、多平面显示四、视点变换与相机控制五、VTK事件交互、VTK与MFC混合编程六、VTK视窗控制与文本标注七、VTK在测量中应用与VTK数据切割,.,第一部分VTK程序一般流程,.,VisualizationToolkit的机制VisualizationToolkit是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库OpenGL的基础上采用面向对象的设计方法发展起来的。它将在可视化开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。比如VisualizationToolkit将在表面重建中比较常见的MarchingCubes算法封装起来,以类的形式给以支持,这样在对三维规则点阵数据进行表面重建时就不必再重复编写MarchingCubes算法的代码而直接使用VisualizationToolkit中已经提供的vtkMarchingCubes类。,.,VisualizationToolkit的框架结构,.,.,图形流水线:将几何数据转换为图像;可视化流水线:将信息转换为几何数据.另一种看法是:可视化流水线:负责构建几何表示;图形流水线:负责绘制.vtk使用一种lazy评价机制.对于lazy评价机制,通常无需人工地调用Update(),因为filters连接着可视化流水线,当actor接收到绘制本身的要求会将方法回馈到他的mapper,然后Update方法自动发送至可视化流水线。Render方法通常开始数据要求,数据被通过流水线向下投递。依赖于流水线的哪个端口过时,流水线中的filters可能重新执行,将数据送至更新的流水线末端,通过actor绘制.,可视化模型,.,VTK图形模型由以下核心对象组成vtkActor,vtkActor2D,vtkVolumevtkProp和/或vtpProp3D的子类vtkLightvtkCameravtkProperty,vtkProperty2DvtkMaper,vtkMapper2DvtkAbstractMapper的子类vtkTransformvtkLookupTable,vtkColorTransferFunction-vtkScalarsToColors的子类/forobjectsthatconvertscalarstocolorsvtkRendervtkRenderWindowvtkRenderWindowInteractor,图形模型,.,vtkLight用来展示和操控场景中的灯光,只在3D中用到.VtkCamera控制3D几何投影到2D。定位:定点、方向,还控制视角投影和立体视图.vtkMapper与查找表vtkLookupTable联合使用,用于转换和绘制几何体。Mapper提供可视化流水线和图形模型.vtkLookupTable是vtkScalarsToColors和vtkColorTransferFunction的子类.,.,vtkRenderer和vtkRenderWindow用来管理图形机与电脑窗口系统的接口.可以生成多个renderwindows,每个renderwindows中有多个renderer去绘制.一个renderwindow中可以有多个区域(视窗).vtkRenderWindowInteractor用于与场景交互,操纵camera,选择对象.vtkWin32OpenGLRenderWindow和vtkWin32RenderWindowInteractorvtkWin32OpenGLRenderWindowisaconcreteimplementationoftheabstractclassvtkRenderWindow.vtkWin32OpenGLRendererinterfacestothestandardOpenGLgraphicslibraryintheWindows/NTenvironment.implementsWin32specificfunctionsrequiredbyvtkRenderWindowInteractor.,.,vtkActor的子类vtkAssembly,vtkFollower,vtkLODActor等.vtkAssembly允许actors分层,在层级平移、旋转、缩放时合理转换.vtkLODActor在改变几何表示时保持交互帧速率,.,示例代码1演示VTK一般流程及常用类的使用,.,vtkVolume16Reader*v16=vtkVolume16Reader:New();v16-SetDataDimensions(64,64);v16-SetDataByteOrderToLittleEndian();v16-SetFilePrefix(D:/VTK5.4/VTKData/Data/headsq/quarter);v16-SetImageRange(1,93);v16-SetDataSpacing(3.2,3.2,1.5);vtkContourFilter*skinExtractor=vtkContourFilter:New();skinExtractor-SetInputConnection(v16-GetOutputPort();skinExtractor-SetValue(0,500);vtkPolyDataNormals*skinNormals=vtkPolyDataNormals:New();skinNormals-SetInputConnection(skinExtractor-GetOutputPort();skinNormals-SetFeatureAngle(60.0);/ifthesurfacenormalbetweentwoadjacenttrianglesis=FeatureAngle,anedgeexistsvtkStripper*skinStripper=vtkStripper:New();skinStripper-SetInputConnection(skinNormals-GetOutputPort();vtkPolyDataMapper*skinMapper=vtkPolyDataMapper:New();skinMapper-SetInputConnection(skinStripper-GetOutputPort();skinMapper-ScalarVisibilityOff();,示例代码1,.,vtkActor*skin=vtkActor:New();skin-SetMapper(skinMapper);skin-GetProperty()-SetDiffuseColor(1,.49,.25);skin-GetProperty()-SetSpecular(.3);skin-GetProperty()-SetSpecularPower(20);vtkLookupTable*bwLut=vtkLookupTable:New();bwLut-SetTableRange(0,2000);bwLut-SetSaturationRange(0,1);bwLut-SetHueRange(0,1);bwLut-SetValueRange(0.5,1);bwLut-Build();/effectivebuilt/TheresultisanimageoftypeVTK_UNSIGNED_CHARvtkImageMapToColors*saggitalColors=vtkImageMapToColors:New();saggitalColors-SetInputConnection(v16-GetOutputPort();saggitalColors-SetLookupTable(bwLut);vtkImageActor*saggital=vtkImageActor:New();saggital-SetInput(saggitalColors-GetOutput();saggital-SetDisplayExtent(32,32,0,63,0,92);,.,vtkRenderer*aRenderer=vtkRenderer:New();vtkRenderWindow*renWin=vtkRenderWindow:New();renWin-AddRenderer(aRenderer);vtkRenderWindowInteractor*iren=vtkRenderWindowInteractor:New();iren-SetRenderWindow(renWin);vtkCamera*aCamera=vtkCamera:New();aCamera-SetViewUp(0,0,-1);aCamera-SetPosition(0,1,0);aCamera-SetFocalPoint(0,0,0);aCamera-ComputeViewPlaneNormal();aRenderer-AddActor(saggital);skin-GetProperty()-SetOpacity(0.5);aRenderer-SetActiveCamera(aCamera);aRenderer-Render();aRenderer-ResetCamera();aCamera-Dolly(1.5);aRenderer-SetBackground(1,1,1);aRenderer-ResetCameraClippingRange();renWin-SetSize(640,480);iren-Initialize();iren-Start();,.,示例代码3演示视窗显示控制、相机控制,.,classvtkWidgetWindowLevelCallback:publicvtkCommandpublic:staticvtkWidgetWindowLevelCallback*New()returnnewvtkWidgetWindowLevelCallback;voidExecute(vtkObject*caller,unsignedlongvtkNotUsed(event),void*callData)vtkImagePlaneWidget*self=reinterpret_cast(caller);if(!self)return;double*wl=static_cast(callData);,.,if(self=this-WidgetX)this-WidgetY-SetWindowLevel(wl0,wl1);this-WidgetZ-SetWindowLevel(wl0,wl1);elseif(self=this-WidgetY)this-WidgetX-SetWindowLevel(wl0,wl1);this-WidgetZ-SetWindowLevel(wl0,wl1);elseif(self=this-WidgetZ)this-WidgetX-SetWindowLevel(wl0,wl1);this-WidgetY-SetWindowLevel(wl0,wl1);,.,vtkWidgetWindowLevelCallback():WidgetX(0),WidgetY(0),WidgetZ(0)vtkImagePlaneWidget*WidgetX;vtkImagePlaneWidget*WidgetY;vtkImagePlaneWidget*WidgetZ;intmain(intargc,char*argv)vtkRenderer*ren1=vtkRenderer:New();vtkRenderer*ren2=vtkRenderer:New();vtkRenderer*ren3=vtkRenderer:New();vtkRenderer*ren=vtkRenderer:New();vtkRenderWindow*renWin=vtkRenderWindow:New();vtkRenderWindowInteractor*iren=vtkRenderWindowInteractor:New();iren-SetRenderWindow(renWin);renWin-AddRenderer(ren1);renWin-AddRenderer(ren2);renWin-AddRenderer(ren3);renWin-AddRenderer(ren);,.,vtkDICOMImageReader*v16=vtkDICOMImageReader:New();v16-SetDataByteOrderToLittleEndian();v16-SetDirectoryName(E:/MedImageData/336);v16-Update();vtkOutlineFilter*outline=vtkOutlineFilter:New();outline-SetInputConnection(v16-GetOutputPort();vtkPolyDataMapper*outlineMapper=vtkPolyDataMapper:New();outlineMapper-SetInputConnection(outline-GetOutputPort();vtkActor*outlineActor=vtkActor:New();outlineActor-SetMapper(outlineMapper);,.,vtkWidgetWindowLevelCallback*cbk=vtkWidgetWindowLevelCallback:New();cbk-WidgetX=planeWidgetX;cbk-WidgetY=planeWidgetY;cbk-WidgetZ=planeWidgetZ;/planeWidgetX-AddObserver(vtkCommand:EndWindowLevelEvent,cbk);/planeWidgetY-AddObserver(vtkCommand:EndWindowLevelEvent,cbk);/planeWidgetZ-AddObserver(vtkCommand:EndWindowLevelEvent,cbk);cbk-Delete();,vtkImageMapToColors*colorMap1=vtkImageMapToColors:New();colorMap1-PassAlphaToOutputOff();colorMap1-SetActiveComponent(0);colorMap1-SetOutputFormatToLuminance();colorMap1-SetInput(planeWidgetX-GetResliceOutput();colorMap1-SetLookupTable(planeWidgetX-GetLookupTable();vtkImageActor*imageActor1=vtkImageActor:New();imageActor1-PickableOff();imageActor1-SetInput(colorMap1-GetOutput();,.,ren-AddActor(outlineActor);ren1-AddActor(imageActor1);ren2-AddActor(imageActor2);ren3-AddActor(imageActor3);ren-SetBackground(0.1,0.1,0.2);ren1-SetBackground(0.1,0.2,0.1);ren2-SetBackground(0.2,0.1,0.2);ren3-SetBackground(0.2,0.2,0.2);renWin-SetSize(600,400);ren-SetViewport(0,0.5,0.5,1);ren1-SetViewport(0.5,0.5,1,1);ren2-SetViewport(0,0,0.5,0.5);ren3-SetViewport(0.5,0,1,0.5);renWin-Render();,.,ren-GetActiveCamera()-Elevation(110);ren-GetActiveCamera()-SetViewUp(0,0,-1);ren-GetActiveCamera()-Azimuth(45);ren-GetActiveCamera()-Dolly(1.15);ren-ResetCameraClippingRange();iren-Initialize();iren-Start();renWin-Render();iren-SetKeyCode(z);iren-InvokeEvent(vtkCommand:CharEvent,NULL);iren-SetKeyCode(z);iren-InvokeEvent(vtkCommand:CharEvent,NULL);iren

温馨提示

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

评论

0/150

提交评论