要理解VTK的工作原理,首先应明确几个类型:

1.vtkSource(数据源)   这个就好比一个剧本里面的角色,让演员知道要演的是什么人物。

数据源有:vtkConeSource,vtkSphereSource,vtkOutlineSource...等等。

它们都继承与vtkPolyDataAlgorithm类,该类用于提供不同的类型的数据源

2.vtkMapper(映射器)   它就像是一个剧本,应该如何塑造角色的装扮

映射器有:vtkDataSetMapper,vtkMultiGroupPolyDataMapper,vtkPolyDataMapper。

它们都继承于vtkMapper类。所有的数据对象都要通过映射器Mapper映射到vtkActor中。

3.vtkActor(演员) 有了剧本,有了角色,得找个真人来演出这个剧本了。

该类继承于vtkProp3D,有4个子类:vtkFollow,vtkLODActor,vtkMesaActor,vtkOpenGLActor.

4.vtkRenderer(渲染器)   这个过程就相当于对演员进行化妆并布置场景;

该类继承于vtkViewport,有2个子类:vtkMesaRender,vtkOpenGLRender.

该类另外一个作用是设置窗口vtkRenderWindow的背景.

5.vtkRenderWindow(窗口)    这个就相当于个舞台 ,把准备好的演员放进去,准备表演了;

该类继承于vtkWindow,有2个子类:vtkMesaWindow,vtkOpenGLWindow.

6.vtkRenderWindowInteractor(窗口交互器)    这个像摄像机,用于捕捉演员的动作,然后传给导演看

该类的继承关系在vtkRenderWindowInteractor文章中已给出。

7.vtkInteractorObserver(观察者)        有点导演的意思,导演通过观看录像后,做出一系列调整

该类的继承关系在vtkRenderWindowInteractor文章中已给出

Example:

vtkConeSource * s=vtkConeSource::New();                //棱锥数据源,用于构造描述棱锥的点、线、面
vtkPolyDataMapper * m=vtkPolyDataMapper::New();   //映射器,可以根据点、线、面构造图形
m->SetInput(s->GetOutput());                                      //完成点、线、面的传递
vtkActor * a=vtkActor::New();                                        //创建一个物体(演员)
a->SetMapper(m);                                                         //设置描述物体的图形
vtkRenderer * r=vtkRenderer::New();                            //绘制器,能够绘制物体
r->AddActor(a);                                                             //把物体交给绘制器绘制
vtkRenderWindow * w=vtkRenderWindow::New();         //绘制窗,提供绘制的平面
w->AddRenderer(r);                                                     //设置绘制器工作的平面
for (int i=0;i<65535;i++)                                                  //循环绘制
   w->Render();

vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();//交互器
iren->SetRenderWindow(w);

vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();//观察者
iren->SetInteractorStyle(style);

vtkMyCallback *callback = vtkMyCallback::New();                             //对观察到的事件响应
iren->AddObserver(vtkCommand::InteractionEvent, callback);
iren->Initialize();
iren->Start();

vtk工作流的更多相关文章

  1. Oozie分布式任务的工作流——Spark篇

    Spark是现在应用最广泛的分布式计算框架,oozie支持在它的调度中执行spark.在我的日常工作中,一部分工作就是基于oozie维护好每天的spark离线任务,合理的设计工作流并分配适合的参数对于 ...

  2. Oozie分布式任务的工作流——邮件篇

    在大数据的当下,各种spark和hadoop的框架层出不穷.各种高端的计算框架,分布式任务如乱花般迷眼.你是否有这种困惑!--有了许多的分布式任务,但是每天需要固定时间跑任务,自己写个调度,既不稳定, ...

  3. 解析大型.NET ERP系统核心组件 查询设计器 报表设计器 窗体设计器 工作流设计器 任务计划设计器

    企业管理软件包含一些公共的组件,这些基础的组件在每个新项目立项阶段就必须考虑.核心的稳定不变功能,方便系统开发与维护,也为系统二次开发提供了诸多便利.比如通用权限管理系统,通用附件管理,通用查询等组件 ...

  4. .Net开源工作流Roadflow的使用与集成

    序言 最近公司要整理公司内部oa系统,需要使用到工作流,所以就开始了开源工作流挑选,使用,到集成到公司内部系统的工作. 首先在网上搜了文档,自己也有补充,整理啦国内几款工作流的比较,由于没有个个击破式 ...

  5. ASP.NET MVC5+EF6+EasyUI 后台管理系统(42)-工作流设计-表建立

    系列目录 工作流在实际应用中还是比较广泛,网络中存在很多工作流的图形化插件,可以做到拉拽的工作流设计,非常简便,再配合第三方编辑器,可以直接生成表单,我没有刻意的浏览很多工作流的实际设计,我认为工作流 ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(43)-工作流设计-字段分类设计

    系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立,就知道表的关系和用处了,当然,我的设计只是一个参考,你可能有很多改进的地方. 我们的工作流具体细节流程是这样的: 最终我们的模 ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(44)-工作流设计-设计表单

    系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四步. 开始之前先说说表的结构. 其实表Flow_Form与Flow_FormContent设计是有一个缺陷的.我总共是设置最 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(48)-工作流设计-起草新申请

    系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分支执行. 起草的同时,我们分解流转的规则中的审批人并保存,具体流程如下 接下来创建DrafContoller控制器,此控制器只 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(53)-工作流设计-我的批阅

    系列目录 前言:由于工作原因工作流一直没时间更新,虽然没有更新,但是批阅和申请差不多,改变一下数据的状态字段就行,有几个园友已经率先完成了 说句实话,一个工作流用文章表达很难,我起初以为这是一个很简单 ...

随机推荐

  1. B-Tree索引在sqlserver和mysql中的应用

    在谈论数据库性能优化的时候,通常都会提到“索引”,但很多人其实并没有真正理解索引,也没有搞清楚索引为什么就能加快检索速度,以至于在实践中并不能很好的应用索引.事实上,索引是一种廉价而且十分有效的优化手 ...

  2. WindowsAPI调用和OCR图片识别

    傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...

  3. Meta标签详解(HTML JAVASCRIPT)

    Meta标签详解,在网上转的,希望对大家有用 您的个人网站即使做得再精彩,在“浩瀚如海”的网络空间中,也如一叶扁舟不易为人发现,如何推广 个人网站,人们首先想到的方法无外乎以下几种: ● 在搜索引擎中 ...

  4. git将本地仓库推送到远程仓库

    如何将本地仓库推送到公司远程仓库? 1:前提是你本地安装好git.先把远程git仓库克隆到本地  git clone 远程仓库的地址(SSH) 2: git  branch //查看本地分支 3: g ...

  5. 使用原生JS实现一个风箱式的demo,并封装了一个运动框架

    声明,该DEMO依托于某个培训机构中,非常感谢这个培训结构.话不多说,现在开始改demo的制作. 首先,在前端的学习过程中,轮播图是我们一定要学习的,所以为了更加高效的实现各种轮播图,封装了一个运动的 ...

  6. ReactiveCocoa代码实践之-更多思考

    三.ReactiveCocoa代码实践之-更多思考 1. RACObserve()宏形参写法的区别 之前写代码考虑过 RACObserve(self.timeLabel , text) 和 RACOb ...

  7. 【Swift 2.1】共享文件操作小结(iOS 8 +)

    前言 适用于 iOS 8 + 本地共享文件列表 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs ...

  8. MS SQL 错误:无法绑定由多个部分组成的标识符 "xxxxx"

    今天有个同事问我一个SQL问题,觉得有点意思,虽然能很快定位并解决问题,但是就是有种说不清道不明的感觉.因为不能解释清楚(很多是建立在假设上),顺便记录一下,希望有清楚原理的人能解答一二. 原SQL语 ...

  9. YourSQLDba备份失败案例锦集

    使用YourSQLDba做备份.维护.管理时,偶尔会收到一些备份失败的邮件.导致YourSQLDba备份失败的情况比价多,打算在此篇中对YourSQLDba备份失败的案例做一些总结.整理. 1:You ...

  10. 探索RegisterAllAreas

    在MVC中注册Area时,我们一般会在相应的区域下定义一个继承与AreaRegistration的类,代码如下: public class AdminAreaRegistration : AreaRe ...