




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,报告人:邹水中日期:2010.4.2,VTK使用总结,.,2,内容简介,一、VTK程序一般流程二、VTK的数据对象接口三、VTK的面绘制、体绘制、多平面显示四、视点变换与相机控制五、VTK事件交互、VTK与MFC混合编程六、VTK视窗控制与文本标注七、VTK在测量中应用与VTK数据切割,.,3,第一部分VTK程序一般流程,.,4,VisualizationToolkit的机制VisualizationToolkit是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库OpenGL的基础上采用面向对象的设计方法发展起来的。它将在可视化开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。比如VisualizationToolkit将在表面重建中比较常见的MarchingCubes算法封装起来,以类的形式给以支持,这样在对三维规则点阵数据进行表面重建时就不必再重复编写MarchingCubes算法的代码而直接使用VisualizationToolkit中已经提供的vtkMarchingCubes类。,.,5,VisualizationToolkit的框架结构,.,6,.,7,图形流水线:将几何数据转换为图像;可视化流水线:将信息转换为几何数据.另一种看法是:可视化流水线:负责构建几何表示;图形流水线:负责绘制.vtk使用一种lazy评价机制.对于lazy评价机制,通常无需人工地调用Update(),因为filters连接着可视化流水线,当actor接收到绘制本身的要求会将方法回馈到他的mapper,然后Update方法自动发送至可视化流水线。Render方法通常开始数据要求,数据被通过流水线向下投递。依赖于流水线的哪个端口过时,流水线中的filters可能重新执行,将数据送至更新的流水线末端,通过actor绘制.,可视化模型,.,8,VTK图形模型由以下核心对象组成vtkActor,vtkActor2D,vtkVolumevtkProp和/或vtpProp3D的子类vtkLightvtkCameravtkProperty,vtkProperty2DvtkMaper,vtkMapper2DvtkAbstractMapper的子类vtkTransformvtkLookupTable,vtkColorTransferFunction-vtkScalarsToColors的子类/forobjectsthatconvertscalarstocolorsvtkRendervtkRenderWindowvtkRenderWindowInteractor,图形模型,.,9,vtkLight用来展示和操控场景中的灯光,只在3D中用到.VtkCamera控制3D几何投影到2D。定位:定点、方向,还控制视角投影和立体视图.vtkMapper与查找表vtkLookupTable联合使用,用于转换和绘制几何体。Mapper提供可视化流水线和图形模型.vtkLookupTable是vtkScalarsToColors和vtkColorTransferFunction的子类.,.,10,vtkRenderer和vtkRenderWindow用来管理图形机与电脑窗口系统的接口.可以生成多个renderwindows,每个renderwindows中有多个renderer去绘制.一个renderwindow中可以有多个区域(视窗).vtkRenderWindowInteractor用于与场景交互,操纵camera,选择对象.vtkWin32OpenGLRenderWindow和vtkWin32RenderWindowInteractorvtkWin32OpenGLRenderWindowisaconcreteimplementationoftheabstractclassvtkRenderWindow.vtkWin32OpenGLRendererinterfacestothestandardOpenGLgraphicslibraryintheWindows/NTenvironment.implementsWin32specificfunctionsrequiredbyvtkRenderWindowInteractor.,.,11,vtkActor的子类vtkAssembly,vtkFollower,vtkLODActor等.vtkAssembly允许actors分层,在层级平移、旋转、缩放时合理转换.vtkLODActor在改变几何表示时保持交互帧速率,.,12,示例代码1演示VTK一般流程及常用类的使用,.,13,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,.,14,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);,.,15,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();,.,16,示例代码3演示视窗显示控制、相机控制,.,17,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);,.,18,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);,.,19,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);,.,20,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);,.,21,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();,.,22,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();,.,23,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);i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度黑龙江省气象部门高校毕业生招聘4人(第三批次气象类)考前自测高频考点模拟试题附答案详解(完整版)
- 2025北京华商电力产业发展有限公司2025年搞笑毕业生招聘29人(第三批)考前自测高频考点模拟试题及答案详解(易错题)
- 2025年上海市第一人民医院酒泉医院自主招聘专业技术人员30人考前自测高频考点模拟试题带答案详解
- 2025江西吉安市直三家公立医院编外招聘33人模拟试卷及答案详解(全优)
- 2025年氨纶锦纶包覆丝项目合作计划书
- 2025黑龙江绥化望奎县事业单位招聘71人模拟试卷及1套完整答案详解
- 2025湖南湘江爱乐乐团招聘考前自测高频考点模拟试题及答案详解(夺冠)
- 2025贵州茅台酒股份有限公司高层次人才(博士研究生)引进14人模拟试卷及一套答案详解
- 2025春季河南新乡工商职业学院招聘考前自测高频考点模拟试题及答案详解(名师系列)
- 2025年临沂市工业学校公开招聘教师(40名)模拟试卷带答案详解
- 跨境电商股权分配协议范文
- 2025年深圳中考化学试卷真题(含答案)
- 三甲医院影像科管理制度
- T/CCAS 015-2020水泥助磨剂应用技术规范
- 江苏省南京市2024-2025学年高二物理上学期10月月考试题
- 2025年入团考试时事热点及试题与答案
- TSG D2002-2006燃气用聚乙烯管道焊接技术规则
- 会计工作规范与行业标准研究计划
- GB/T 320-2025工业用合成盐酸
- 深基坑工程监理实施细则
- 2024年公路水运工程助理试验检测师《水运结构与地基》考前必刷必练题库500题(含真题、必会题)
评论
0/150
提交评论