文档章节

认识VTK工作原理(包括各个模块作用、数据流等)

天蚕宝衣
 天蚕宝衣
发布于 2017/03/12 22:22
字数 772
阅读 83
收藏 2
点赞 1
评论 0

VTK有两个子系统组成:一个是编译生成的C++类库,一个是通过Java,Tcl,Python语言来使用这些类的解释包。

VTK是通过数据流的方法,实现变信息为图形数据的。

数据流一般为:

source——filter——mapper——actor——render——renderwindow——interactor。

Actor用来在场景中表现一个可视化实体,也可以成为3D图形的描绘实现,主要用于对图形的描绘

Actor类还包含一些属性,用来对显示的对象进行设置,如Actor->GetProperty->SetColor(1,1,1,)表示白色,也就是将绘制的对象着色为白色。

Camera在VTK中可以理解为视点(FocalPoint),即观察者的位置,或者称为虚拟照相机实现3D视图。

操作方法比较简单,强调的使另外两个重要的方法:

Azimuth(150)表示Camera的视点位置沿着顺时针旋转150角度;

Elevation(60)表示Camera的视点位置沿着向上方向旋转60角度。

Filter是一种数据处理机制,有一个或者多个输入,但仅有一个输出。其目的是对图形图像数据进行处理,以便得到我们期望的数据。

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

1. vtkSource(数据源)

这个就好比一个剧本里面的角色,让演员知道要演的是什么人物。

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

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

2. vtkMapper(映射器)

它就像是一个剧本,应该如何塑造角色的装扮。

映射器有:vtkDataSetMapper,vtkMultiGroupPolyDataMapper,vtkPolyDataMapper.

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

3. vtkActor(演员)

有了剧本,有了角色,得找个真人来演出这个剧本了。

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

4. vtkRenderer(渲染器)

负责管理场景的渲染过程,这个过程就相当于对演员进行化妆并布置场景,组成场景的对象包括Prop、相机(vtkCamera)和光照(vtkLight),一个vtkRenderWindow中可以有多个vtkRenderer对象。

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

该类的一个主要作用是设置vtk渲染窗口vtkRenderWindow的背景颜色。

vtkRenderer::AddActor();      // 该方法用于将vtkProp类型的对象添加到渲染场景中。 
vtkRenderer::SetBackground(); // 该方法用于设置渲染场景的背景颜色。

5. vtkRenderWindow(窗口)

这个就相当于个舞台,把准备好的演员放进去,准备表演了;

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

6. vtkRenderWindowInteractor(窗口交互器)    

这个像摄像机,用于捕捉演员的动作,然后传给导演看。

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

7. vtkInteractorObserver(观察者)        

有点导演的意思,导演通过观看录像后,做出一系列调整

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

总结:

这里写图片描述

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
天蚕宝衣
粉丝 18
博文 236
码字总数 178069
作品 0
天津
VTK面绘制(SR)与体绘制(VR)

面绘制 (Surface Rendering) VTK中基于面绘制实现三维重建,使用的是经典的Marching Cubes(移动立方体法)算法。      面绘制是采用分割技术对一系列的二维图像进行轮廓识别、提取等操作,...

006玩命 ⋅ 05/08 ⋅ 0

详解网络流量监控

详解网络流量监控 网络的行为特征可以通过其承载的流量的动态特性来反映,所以有针对性地监测网络中流量的各种参数(如接收和发送数据报大小、丢包率、数据报延迟等信息),能从这些参数中分析...

OSSIM ⋅ 2016/04/10 ⋅ 0

详解网络流量监控

详解网络流量监控 网络的行为特征可以通过其承载的流量的动态特性来反映,所以有针对性地监测网络中流量的各种参数(如接收和发送数据报大小、丢包率、数据报延迟等信息),能从这些参数中分析...

OSSIM ⋅ 2016/04/10 ⋅ 0

详解网络流量监控​

详解网络流量监控 网络的行为特征可以通过其承载的流量的动态特性来反映,所以有针对性地监测网络中流量的各种参数(如接收和发送数据报大小、丢包率、数据报延迟等信息),能从这些参数中分析...

李晨光 ⋅ 2016/04/07 ⋅ 0

如何通过学习开源项目来提高自己

学习各种开源项目,已经成为很多朋友不可回避的工作内容了。笔者本人也是如此。在接触并学习了若干个开源项目之后,笔者试图对自己工作过程中的若干体会加以总结,以期对一些希望借鉴的朋友有...

thinkyoung ⋅ 2014/05/04 ⋅ 0

ELSE 技术周刊(2017.11.13期)

团队分享 魔幻语言 JavaScript 系列之 call、bind 以及上下文 从一行代码来看看 JavaScript 是一门多么魔幻的语言,顺便谈谈 JavaScript 中的 call、apply 和 bind 以及上下文。 前端开发 Pr...

风清洋ELSE ⋅ 2017/11/14 ⋅ 0

Activiz 使用笔记-3 数据源(1)

activiz本身自带的user guide 比较简单,所以我按着vtk的user guide来慢慢学。从简单例子入手去学习VTK。当然我之前已经看过很多VTK相关的东西了,但是没有自己去写去总结,导致我一段时间不...

小王爷和老王爷 ⋅ 2015/09/07 ⋅ 0

VTK相机类vtkCamera原理及用法

vtk是著名的开源三维渲染库,在三维渲染过程中的一个非常重要的内容就是相机即vtkCamera类的设置。在VTK中,相机的实质是一个观测点。VTK的官方Doc对vtkCamera写的十分简略,暗坑很多。在学习...

wzheng92 ⋅ 04/14 ⋅ 0

侧滑菜单之NavigationView原理分析

大家好,上次我们分析了侧滑菜单DrawerLayout的实现原理,明白了它是如何管理主体内容和侧滑菜单之间的关系,包括布局,触摸事件等的分析。我们同时也知道,侧滑菜单的内容大致上是顶部一块头...

Ihesong ⋅ 2017/10/19 ⋅ 0

程序员逆袭应具备的7大技能

程序员一直被认为是一个苦逼的职业,工资一般般,但工作压力却很大,类似“程序员职业病、程序员光棍”等话题充斥着整个行业的讨论区。程序员需要逆袭,做好以下这7点,你可以混得更好一点。...

oschina ⋅ 2014/08/02 ⋅ 33

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 数据库设计总结

规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节...

OSC_cnhwTY ⋅ 59分钟前 ⋅ 0

多线程(四)

线程池和Exector框架 什么是线程池? 降低资源的消耗 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池没有或者减少T1和T3 提高线程的可管理性。 线程池要做些什...

这很耳东先生 ⋅ 今天 ⋅ 0

使用SpringMVC的@Validated注解验证

1、SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 [java] view plain copy edit.userna...

瑟青豆 ⋅ 今天 ⋅ 0

19.压缩工具gzip bzip2 xz

6月22日任务 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 6.1 压缩打包介绍: linux中常见的一些压缩文件 .zip .gz .bz2 .xz .tar .gz .tar .bz2 .tar.xz 建立一些文...

王鑫linux ⋅ 今天 ⋅ 0

6. Shell 函数 和 定向输出

Shell 常用函数 简洁:目前没怎么在Shell 脚本中使用过函数,哈哈,不过,以后可能会用。就像java8的函数式编程,以后获取会用吧,行吧,那咱们简单的看一下具体的使用 Shell函数格式 linux ...

AHUSKY ⋅ 今天 ⋅ 0

单片机软件定时器

之前写了一个软件定时器,发现不够优化,和友好,现在重写了 soft_timer.h #ifndef _SOFT_TIMER_H_#define _SOFT_TIMER_H_#include "sys.h"typedef void (*timer_callback_function)(vo...

猎人嘻嘻哈哈的 ⋅ 今天 ⋅ 0

好的资料搜说引擎

鸠摩搜书 简介:鸠摩搜书是一个电子书搜索引擎。它汇集了多个网盘和电子书平台的资源,真所谓大而全。而且它还支持筛选txt,pdf,mobi,epub、azw3格式文件。还显示来自不同网站的资源。对了,...

乔三爷 ⋅ 今天 ⋅ 0

Debian下安装PostgreSQL的表分区插件pg_pathman

先安装基础的编译环境 apt-get install build-essential libssl1.0-dev libkrb5-dev 将pg的bin目录加入环境变量,主要是要使用 pg_config export PATH=$PATH:/usr/lib/postgresql/10/bin 进......

玛雅牛 ⋅ 今天 ⋅ 0

inno安装

#define MyAppName "HoldChipEngin" #define MyAppVersion "1.0" #define MyAppPublisher "Hold Chip, Inc." #define MyAppURL "http://www.holdchip.com/" #define MyAppExeName "HoldChipE......

backtrackx ⋅ 今天 ⋅ 0

Linux(CentOS)下配置php运行环境及nginx解析php

【part1:搭建php环境】 1.选在自己需要安装的安装包版本,wget命令下载到服务器响应目录 http://php.net/releases/ 2.解压安装包 tar zxf php-x.x.x 3.cd到解压目录执行如下操作 cd ../php-...

硅谷课堂 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部