之前使用一篇博文记录了如何利用vtk的轮廓提取技术生成一个函数模型,里面提到使用vtk生成的模型数据,需要转换为OCC数据类型用于CAD建模使用。 查询了许多资料,IVTK是可以做到将OCC的数据直接转换为VTK的数据,但是似乎没有反向转换的途径,最后只能自己动手,丰衣足食。 整个数据转换流程大概是这样。 vtkDataSet 提供了GetPoint()和GetCell()两个函数获取点与单元,只要传入单元的ID即可。 这里需要用到BRep_Builder,这个类用于构建一些OCC的拓扑数据结构。 void Mak…

2022年3月22日 0条评论 4470点热度 1人点赞 大脸猫 阅读全文

这篇博文记录一个解决函数体建模的初步思路。 项目开发需要使用函数描述一个三维模型,然后显示出模型的样子,大概原理是: 现有函数 F(x,y,z)= C  ,然后给函数参数限定限定一个范围 如 { |x| < 2,|y| < 2 ,|z| < 2},对函数F求解,C < 0 的区域构成模型。 目前有两种显示方案,一种是本文记录的方案,继承vtkImplicitFuction 实现一个隐函数类,然后求得该隐函数在函数区域内,C=0的等值面。这样相当于获取了模型的表面,然后使用OCC的面缝补算法,…

2022年3月8日 2条评论 4592点热度 2人点赞 大脸猫 阅读全文

符号化是使用符号表示数据的一种可视化技术,符号可以简单也可以非常复杂, 在 VTK中 vtkGlyph3D 类可以创建一个具有大小、方向和用颜色表示的符号,输入数据对象中的每一个点都可以用符号来可视化。 vtkGlyph3D是一个过滤器,他会将固定的几何数据(符号数据)复制到输入的数据集的每一个点上,符号是通过void SetSourceData (vtkPolyData *pd)函数设置的,vectorMod和scalarMod会决定符号的方向和缩放比例。甚至还可以定义一个符号表,使用scalar的幅度对应每一个…

2022年2月26日 0条评论 4766点热度 2人点赞 大脸猫 阅读全文

参考之前记录的标量颜色映射,很多时候为了搞清楚标量在空间或者平面上的分布趋势,通常会通过提取等值面或者等值线的方式将这些数据可视化,这里会记录怎么使用VTK实现这样的功能。 工欲善其事必先利其器,实现这个功能的核心是vtkContourFIlter类,它提供了等值线(等值面)提取算法,只需要准备好数据,然后设置好轮廓参数,就可以实现了。关于过滤器的使用可以参考之前关于VTK渲染流水线的博客。 这个过滤器的功能是从众多的标量值中找出标量值相等的位置,把这些位置连成线或者生成面,当然这个过程中会使用已有的标量值进行插值…

2022年2月24日 0条评论 6027点热度 6人点赞 大脸猫 阅读全文

使用颜色映射标量数据是数据可视化中为了表现多个维度的数据时常用的一种手段 要作出这种图,数据类型一般为一个空间中的平面数据或者三维模型数据再加上一个或者多个的标量数据,在VTK中使用这样的数据类型需要了解两个关键类,vtkDataSetAttributes和vtkDataSet。 vtkDataSet是一个抽象类,不能直接实例化,它是VTK所有数据集类型的父类,主要为数据集类型声明了一些通用接口以及成员。 从这个继承树中可以看到vtkDataSet所有的子类。 实现颜色标量映射主要关注的只有两个接口: vtkCel…

2022年2月12日 20条评论 12895点热度 6人点赞 大脸猫 阅读全文

数据可视化是以图形的形式描述数据的一种方式,这其中包括三个步骤: 将数据转换为图形元素 将图形元素转换为计算机可绘制的图形 绘制图形 VTK将这个前两个步骤分解成了一些固定的过程,每个过程由不同的对象负责,将这些过程对象链接起来就是VTK的可视化流水线。 如图是一个数据到图形的最简单的可视化流水线。 Source代表数据源,源数据类型可以是多边形数据、网格数据、点数据等等,构造元数据的方式也多种多样,列如使用vtkCylinderSource类构造一个圆柱的数据,或者使用VTK提供的各种读取文件的类,从文件种生成源…

2022年1月12日 1条评论 5213点热度 2人点赞 大脸猫 阅读全文