VTK小白笔记(pipline、映射器、角色、映射器)

VTK,是一个用于科学数据可视化的开源软件系统。它的核心概念是可视化管线,也就是一系列的数据处理模块,每个模块都有输入和输出,可以相互连接,形成一个数据流网络。可视化管线的基本组成部分有三种:数据源、数据过滤器和数据映射器

1 可视化管线pipline

  • 数据源:数据源是可视化管线的起点,它可以从文件、内存或其他来源读取数据,然后将数据转换为vtk的标准数据结构,如多维数组、网格、点云等。
  • 数据过滤器:数据过滤器是可视化管线的中间环节,它可以对数据进行各种操作,如裁剪、平滑、提取、变换、计算等。数据过滤器可以有多个输入和多个输出,可以实现复杂的数据处理逻辑
  • 数据映射器:数据映射器是可视化管线的终点,它可以将数据转换为图形原语,如点、线、面、体等。数据映射器还可以将数据的属性,如颜色、透明度、纹理等,映射到图形原语上,从而实现数据的可视化表达。

可视化管线的优点是,它可以实现数据的模块化、可重用和可交互的处理和显示。用户可以根据自己的需求,灵活地组合不同的数据源、数据过滤器和数据映射器,形成不同的可视化效果。用户还可以通过修改数据源的参数或数据过滤器的设置,实时地更新可视化结果。

所以,根据这个路线,我们使用vtk编写代码的时候通常是:定义数据源、过滤器、Mapper、actor、render、window、interactor,然后将他们组装起来。

所以一个完整的VTK可视化流程包括以下几个部分:

  • Source 数据源
  • Filter 过滤器
  • Mapper 映射器
  • Actor 角色
  • Render 渲染窗口

1.1 映射器 Mapper

vtk的映射器Mapper是一个抽象类,它定义了将数据集映射到图形系统中进行可视化的接口。vtk的映射器Mapper有多个子类,根据不同的数据类型和渲染方式,可以分为以下几类:

  • vtkPolyDataMapper:将多边形数据(vtkPolyData)映射到图形原语,如点、线、面等。它是最常用的映射器类,可以实现各种几何数据的可视化。
  • vtkDataSetMapper:将任意类型的数据集(vtkDataSet)映射到图形原语,如点、线、面等。它是一个通用的映射器类,可以处理不规则的数据结构,如体数据、非结构化网格等。
  • vtkImageMapper:将图像数据(vtkImageData)映射到屏幕坐标中,以像素为单位进行显示。它是一个二维的映射器类,可以实现图像数据的可视化。
  • vtkVolumeMapper:将体数据(vtkImageData)映射到体元素(voxel)中,以体绘制的方式进行显示。它是一个三维的映射器类,可以实现体数据的可视化。
  • vtkCompositePolyDataMapper:将复合多边形数据(vtkCompositeDataSet)映射到图形原语,如点、线、面等。它是一个复合的映射器类,可以处理由多个多边形数据组成的数据集,如多块数据、多分辨率数据等。

vtk的映射器Mapper的主要功能是:

  • 将数据的属性,如颜色、透明度、纹理等,映射到图形原语上,从而实现数据的可视化表达。
  • 将数据的坐标,如世界坐标、模型坐标、纹理坐标等,映射到图形系统中,从而实现数据的空间变换。
  • 将数据的拓扑,如点、线、面、体等,映射到图形系统中,从而实现数据的结构表示。

vtk的映射器Mapper的主要属性有:

  • Input:设置或获取映射器的输入数据集。
  • LookupTable:设置或获取映射器的颜色查找表,用于将数据的标量值映射到颜色值。
  • ScalarRange:设置或获取映射器的标量范围,用于指定颜色查找表的有效区间。
  • ScalarVisibility:设置或获取映射器的标量可见性,用于控制是否使用标量数据来控制图形原语的颜色。
  • ScalarMode:设置或获取映射器的标量模式,用于指定是使用点数据还是单元数据来作为标量数据。
  • ColorMode:设置或获取映射器的颜色模式,用于指定是使用颜色查找表还是直接使用RGB颜色值来作为图形原语的颜色。

1.2 角色 actor (prop)

vtk的角色Actor是一个继承自vtkProp3D的类,它表示了一个可视化对象(几何数据和属性)在渲染场景中的存在。vtk的角色Actor主要包含以下几个部分:

  • Mapper:设置或获取角色的映射器,用于将数据集转换为图形原语,如点、线、面、体等。
  • Property:设置或获取角色的属性,用于控制图形原语的外观,如颜色、透明度、纹理等。
  • Texture:设置或获取角色的纹理,用于给图形原语添加表面细节,如图案、贴图等。
  • Position:设置或获取角色的位置,用于指定角色在世界坐标系中的原点位置。
  • Orientation:设置或获取角色的方向,用于指定角色在世界坐标系中的旋转角度。
  • Scale:设置或获取角色的缩放,用于指定角色在世界坐标系中的缩放比例。

vtk的角色Actor的主要功能是:

  • 将数据集映射到图形原语,并根据属性和纹理进行渲染,从而实现数据的可视化表达。
  • 将角色的位置、方向和缩放映射到世界坐标系,并根据渲染器的相机进行投影,从而实现数据的空间变换。
  • 将角色的可见性、透明度、阴影、光照等映射到渲染器的设置,并根据渲染模式进行绘制,从而实现数据的渲染控制。

1.3 过滤器 filter

在vtk中前两者是必要的,filter则可以根据实际需求进行添加。vtk的过滤器Filter是一种用于处理数据的算法类,它可以接收一个或多个输入数据集,经过一定的变换或计算,产生一个或多个输出数据集。Filter的输入和输出数据集可以是不同的类型,例如,vtkPolyData、vtkImageData、vtkUnstructuredGrid等。Filter之间可以通过端口(Port)连接,形成一个可视化管线(Pipeline)。

vtk的过滤器Filter可以分为三大类:源对象(Source)、可视化滤波器(Visualization Filter)和成像滤波器(Imaging Filter)。

源对象(Source)是一种没有输入数据集,只有输出数据集的Filter,它可以从文件中读取数据,或者根据一些参数生成数据,例如,vtkConeSource、vtkSphereSource、vtkImageNoiseSource等。
可视化滤波器(Visualization Filter)是一种用于处理几何数据的Filter,它可以对输入数据集进行剪切、平滑、细分、采样、映射等操作,以便于渲染和显示,例如,vtkClipPolyData、vtkSmoothPolyDataFilter、vtkGlyph3D等。
成像滤波器(Imaging Filter)是一种用于处理图像数据的Filter,它可以对输入图像进行滤波、变换、分析、融合等操作,以便于图像处理和分析,例如,vtkImageGaussianBlur、vtkImageFFT、vtkImageBlend等。
vtk的过滤器Filter类都继承自vtkAlgorithm类,它提供了一些通用的方法和属性,例如,SetInputConnection、GetOutputPort、Update等。Filter类还可以根据输入和输出数据集的类型,继承自一些特定的基类,例如,vtkPolyDataAlgorithm、vtkImageAlgorithm、vtkUnstructuredGridAlgorithm等,这些基类提供了一些方便的方法和属性,例如,GetInput、GetOutput、SetOutput等。

vtk的过滤器Filter类的核心方法是RequestData,它负责处理输入数据集,并生成输出数据集。Filter类还可以重写一些其他的方法,例如,RequestInformation、RequestUpdateExtent、FillInputPortInformation等,以实现更复杂的功能和逻辑。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容