一、暂时整理自己用到的vector和scalar数据类型
- vtk主要包括五类
- vtk版本号,低版本的与高版本的是兼容的。
- 头文件,大小不超过256字符,以
\n
结束,可以是一些介绍和其他相关的信息; - 文件格式,介绍了文件类型,是ASCII 还是binary.在这行中,只能用
ASCII
或者BINARY
- 第四部分是数据结构。几何部分极少了数据集的几何结构和拓扑结构,该部分,以
DATASET
格式开始,然后紧跟着是数据类型,然后根据数据类型,定义实际的数据(不同的拓扑结构,不同的维度有所不同) - 然后就是数据集的属性,该部分以POINT_DATA或者CELL_DATA开始,后面是点的数量,或者单元数量。然后下一行写实际的数据集属性(scalars, vectors, tensors, normals, texture coordinates, or field data);
- 前3个内容都是格式比较固定定义起来也很简单,后两个会因为模型的不同而不同。 首先前三个的格式示例:
vtk DataFile version 1.0
vtk file
ASCII
DATA UNSTRUCTURED_GRID //数据类型可以选择
POINTS 4 double
0.3 0.5 1
1.2 1.4 4
0.8 0.2 1.2
1.4 3 4
CELLS 1 5
4 1 2 3 4
CELL_TYPES 1
10
POINT_DATA 4
SCALARS test double
LOOKUP_TABLE default
0.4
2
3
4
CELL_DATA 1
VECTORS test1 doubel
1 4 5
- 从数据结构开始,数据有STRUCTURED_POINTS, STRUCTURED_GRID, UNSTRUCTURED_GRID, POLYDATA, RECTILINEAR_GRID, FIELD.等等
- 我用到的是UNSTRUCTURED_GRID,后面坐标为三维坐标。
CELLS
后面两个数分别是你划分的单元数量 和 单元数量乘以(单元总节点数+1),其实就是CELLS下一行有多少值,比如我这个一行有5个值4 1 2 3 4
, 我一共只有1个单元,所以我这行的数据是:1 5
CELL_TYPES
后面仍然是单元数量,下面的数字表示单元的拓扑结构,如10表示任意四面体;- 接下来就是模型的属性集部分。POINT_DATA 表示在节点上的属性,可以有标量,矢量,张量等等;CELL_DATA表示单元上的属性。
LOOKUP_TABLE default
是仅用在标量数据描述下的,表示一种数据到云图颜色的映射,具体的我也没研究,default表示用默认的映射关系,也可以自己定义一个映射关系,如命名myMap
,然后在后面再定义一下LOOKUP_TABLE的值,具体操作可以再百度。
二、易错点
- 如果我们有两个属性都是点属性或者单元属性,不论其属性是标量还是矢量,张量等,只要是定义在节点上的属性,如果两个属性的定义上下挨着,那么POINT_DATA或者CELL_DATA 只需要且只能声明一次!!!,如果你在两个都是POINT_DATA的属性,且都进行了声明,那么paraview的读入会报错,具体其他软件的处理会不会报错就不知道了。
- 错误示范如下:
POINT_DATA 5
SCALARS test double
1
2.3
3.4
1.5
1.9
POINT_DATA 5
VECTORS test1 double
1.2 4.5 6.7
2.3 5.6 1.6
2.3 5.3 7.8
1.8 4.5 8.9
3.5 6.7 8.1
上面两个错误的连着定义了POINT_DATA,正确示范如下:
POINT_DATA 5
SCALARS test double
1
2.3
3.4
1.5
1.9VECTORS test1 double
1 4 6
2 5 1
2 5 7
1 4 8
3 6 8
CELL_DATA 2
SCALARS test double
2.5
3.5
POINT_DATA 5
VECTORS test1 double
1 4 6
2 5 1
2 5 7
1 4 8
3 6 8