vtk文件格式

vtk文件格式
最近学了一下vtk文件的格式, 做一个小结。文中用方括号标示出来的文字是根据实际需要自己定义的部分,其他的如DATASET, POINTS,CELLS等是vtk本身的格式要求一部分。
1. 第一部分,数据版本声明(不重要)
这是强制的一句话,说明文件版本
# vtk DataFile Version 3.0
2. 第二部分,标题 (不重要)
不重要,相当于自己其一个标题,以回车结束,最多256个字符
3. 第三部分,文件格式声明
文件格式,ASCII
或者 BINARY
于是前面三部分可以写为
- 1
- 2
- 3
4.第四部分,几何拓扑结构(重要)
- 1
format
表示数据的格式,可以是
- STRUCTURED_POINTS
- STRUCTURED_GRID
- UNSTRUCTURED_GRID
- POLYDATA
- STRUCTURED_POINTS
- RECTILINEAR_GRID
- FIELD
例如,如果是非结构网格的化,就写DATASET
UNSTRUCTURED_GRID
。这里的非结构网格不一定是四面体或三角形网格,只要是没有规则的都能用UNSTRUCTURED
GRID表示,比如一个三角形和一个六面体的混合。
如果是UNSTRUCTURED_GRID
,
那么接下来就需要指定节点和单元
- 1
- 2
- 3
- 4
然后是单元声明
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
5. 第五部分,物理量(重要)
有两种:节点上的值和单元上的值,分别用POINT_DATA
CELL_DATA
表示。可以表示多个物理量,物理量可以是标量(scalar),向量(vector),或者是张量(tensor)。
- 1
- 2
- 3
- 4
- 5
上述格式中,数据可以是SCALAR,VECTOR或TENSOR,不同类型的数据需要不同的格式
- 1
- 2
- 3
- 4
- 5
- 6
6. 牛刀小试
(1)一个最简单的示例
下面的vtk文件定义了一个六面体,顶点为(0,0,0), (50,0,0), (0,50,0), (50,50,0),
(0,0,50), (50,0,50), (0,50,50), (50,50,50).
注意:构成一个单元的节点的排列顺序一定要按照vtk文档所定义的,不同几何体节点编号也不一样
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
(2) 一个六面体网格示例
一个六面体网格的模型, 用paraview显示
https://img-blog.csdn.net/20180502093054466?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1hfQW5kX1k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70
学习资源
- python和vtk的一个入门讲义:http://www.cb.uu.se/~aht/Vis2014/lecture2.pdf
-
vtk官网:
https://www.vtk.org/ -
各种语言接口的VTK例子,VTKExamples:
https://lorensen.github.io/VTKExamples/site/