VTK修炼之道5_Procedural Source Object
来源:互联网 发布:淘宝直通车计划 编辑:程序博客网 时间:2024/06/17 03:58
1.编写的程序
#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL);///////////////////////////////////////#include "vtkCylinderSource.h"#include "vtkPolyDataMapper.h"#include "vtkActor.h"#include "vtkProperty.h"#include "vtkRenderer.h"#include "vtkRenderWindow.h"#include "vtkRenderWindowInteractor.h"#include "vtkCamera.h"int main(){/////////////Visualize Pipeline: Source->Mapper->Actor//vtkCylinderSource* cylinder = vtkCylinderSource::New();cylinder->SetResolution(10);vtkPolyDataMapper* cylinderMapper = vtkPolyDataMapper::New();cylinderMapper->SetInputConnection(cylinder->GetOutputPort());vtkActor* cylinderActor = vtkActor::New();cylinderActor->SetMapper(cylinderMapper);///////Actor propertycylinderActor->GetProperty()->SetColor(1.0,0.32,0.27);cylinderActor->RotateX(30.0);cylinderActor->RotateY(-45);//////////Render Engine:Renderer->RenderWindow->RenderWindowInteractor//vtkRenderer* cylinderRenderer = vtkRenderer::New();vtkRenderWindow* cylinderRenderWindow = vtkRenderWindow::New();vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();cylinderRenderWindow->AddRenderer(cylinderRenderer);iren->SetRenderWindow(cylinderRenderWindow);//////////Visualize Pipeline -> Render Engine//cylinderRenderer->AddActor(cylinderActor);cylinderRenderer->SetBackground(0.1,0.2,0.4); // render background propertycylinderRenderWindow->SetSize(400,400); //render window size//////////Camera// The renderer renders into the // render window. The render window interactor captures mouse events // and will perform appropriate camera or actor manipulation // depending on the nature of the events.cylinderRenderer->ResetCamera();cylinderRenderer->GetActiveCamera()->Zoom(1.5); //focus/////////Window Hold Oniren->Start();/////////Clear Memoryiren->Delete();cylinderRenderWindow->Delete();cylinderRenderer->Delete();cylinderActor->Delete();cylinderMapper->Delete();cylinder->Delete();return 0;}
程序运行结果:
2.心得体会
2.1 对“Visualize Pipeline & Render Engine”设计体系的理解
VTK程序设计严格遵循流水线设计风格。根据我的经验,建议程序设计过程中分模块设计。Part1:Visualize Pipeline(Source -> Mapper -> Actor) 此部分还应该包括Actor Property(不知道中文该怎么翻译,权且当给演员化妆)。Part2:Render Engine(Renderer -> RenderWindow -> RenderWindowInteractor) 这一部分主要工作就是显示窗口可以容纳多少RenderWindow,我们可以理解为窗口可以装的下多少演员!Part3:Communication 这是最重要的环节,以上两个部分搭建好了之后,我们要把Actor装进Renderer(通俗的讲,就是要把妆都画好了的演员送到舞台上)。此外这一部分也会涉及到Renderer(渲染器/舞台)背景设置、以及RenderWindow(观众们看到的窗口)的尺寸。2.2 窗口一闪即逝
调试的过程中,我发现最终呈现给我的窗口始终不能稳定的存在(一闪即逝)。这是正常现象,因为程序就是这样设计的,如果想让窗口停留一段时间,就要用到类RenderWindowInteractor(用户与窗口交互),并调用Start函数。3.3 摄像机Camera
Camera在这里用处是不大的,只有在用户交互时才会体会到它的强大。
3.未解决的问题
3.1 Procedural Source Object 怎么翻译?
一脸懵逼,重点应该在Procedural,“程序上的”?3.2 关于TCL语言与C++语言相互转换
User Guide上给的功能还包括一个快捷键调用,可惜不能把它从Tcl转换成C++;东灵的那本书更是对用户手册的翻译,并没有更加深刻地阐明这个事儿,还需要去探索,回头再解决。# Associate the “u” keypress with a UserEvent and start the event loopiren AddObserver UserEvent {wm deiconify .vtkInteract}iren Initialize# suppress the tk windowwm withdraw .
1 0
- VTK修炼之道5_Procedural Source Object
- VTK修炼之道1_初识VTK
- VTK修炼之道2_VTK体系结构1
- VTK修炼之道3_VTK体系结构2
- VTK修炼之道4_Win32控制台项目
- VTK修炼之道14:图像处理_创建
- VTK修炼之道31:图像二值化_阈值法
- VTK修炼之道32:边缘检测_梯度算子
- VTK修炼之道33:边缘检测_Sobel算子
- VTK修炼之道34:边缘检测_Canny算子
- VTK修炼之道35:边缘检测_Laplace算子
- VTK修炼之道36:图像平滑_均值滤波器
- VTK修炼之道38:图像平滑_中值滤波器
- VTK修炼之道39:图像平滑_各向异性滤波
- VTK修炼之道45:图形进阶_vtkPolyData属性数据
- VTK修炼之道65:体绘制裁剪_Cropping技术
- VTK修炼之道66:体绘制裁剪_Cripping技术
- VTK修炼之道73:交互部件_Widget应用综述
- FragmentPagerAdapter和ViewPager实现滑动切换
- 初学mysql(八)-数据库之触发器
- 【洛谷 1613】跑路
- 关于天气程序项目的阶段性反思
- 常用的maven镜像中央库汇总
- VTK修炼之道5_Procedural Source Object
- Java String类深入理解
- 监控Linux环境下JVM应用内存的两种方法
- 反馈专题
- UML类图新手入门级介绍
- python自学之路-01
- ajax基础
- 箭头小三角(向上或向下、两条边)--两种制作方法
- 线程操作范例