vtk文件格式

最近学了一下vtk文件的格式, 做一个小结。文中用方括号标示出来的文字是根据实际需要自己定义的部分,其他的如DATASET, POINTS,CELLS等是vtk本身的格式要求一部分。

1. 第一部分,数据版本声明(不重要)

这是强制的一句话,说明文件版本
# vtk DataFile Version 3.0

2. 第二部分,标题 (不重要)

不重要,相当于自己其一个标题,以回车结束,最多256个字符

3. 第三部分,文件格式声明

文件格式,ASCII或者 BINARY

于是前面三部分可以写为

# vtk DataFile Version 3.0
[VTKtitle]
ASCII

4.第四部分,几何拓扑结构(重要)

DATASET [format]

format表示数据的格式,可以是

  • STRUCTURED_POINTS
  • STRUCTURED_GRID
  • UNSTRUCTURED_GRID
  • POLYDATA
  • RECTILINEAR_GRID
  • FIELD

例如,如果是非结构网格的话,就写DATASET UNSTRUCTURED_GRID。这里的非结构网格不一定是四面体或三角形网格,只要是没有规则的都能用UNSTRUCTURED GRID表示,比如一个三角形和一个六面体的混合。

如果是UNSTRUCTURED_GRID, 那么接下来就需要指定节点和单元

POINTS	[n]	[dataType]   (#n_point#域填入实际的点数, dataType为double float等类型)
[x_0] [y_0] [z_0]
[x_1] [y_1] [z_1]
[x_0] [y_0] [z_0]

然后是单元声明

CELLS	[n_cells]  [n_list] #n_cells填入单元个数,n_list填入下方列表包含的数字的个数,即“单元数*(1+每个单元节点数)”)
[单元0上的顶点总数目]		[单元0顶点0的编号]		[单元0顶点1的编号]		[单元0顶点2的编号]		...
[单元1上的顶点总数目]		[单元1顶点0的编号]		[单元1顶点1的编号]		[单元1顶点2的编号]		...
.
.
.

CELL_TYPES	[n_cells]	#n_cells与前面CELLS那一块的n_cells必须一样
[单元0类型]			 #表示几何类型的整数,参考vtk的文档,比如四面体是10,六面体是11
[单元1类型]
.
.
.

5. 第五部分,物理量(重要)

有两种:节点上的值和单元上的值,分别用POINT_DATACELL_DATA表示。可以表示多个物理量,物理量可以是标量(scalar),向量(vector),或者是张量(tensor)。

POINT_DATA [n]
[数据]

CELL_DATA [n]
[数据]

上述格式中,数据可以是SCALAR,VECTOR或TENSOR,不同类型的数据需要不同的格式

SCALARS [dataName] [dataType] [numComp]  #dataName数据名字,dataType是double之类的,numComp一般是1
LOOKUP_TABLE [tableName]    #tableName表名
s_0
s_1
...
s_n-1

6. 单元类型与节点顺序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
各个单元种类以及对应编号,括号中的数字为单元类型标识

7. 牛刀小试

(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文档所定义的,不同几何体节点编号也不一样

# vtk DataFile Version 3.0
Right rectangular prisms grid
ASCII
DATASET UNSTRUCTURED_GRID

POINTS	8	double
0	0	0
50	0	0
0	50	0
50	50	0
0	0	50
50	0	50
0	50	50
50	50	50

CELLS 1 9
8	0	1	2	3	4	5	6	7	

CELL_TYPES 1
11

CELL_DATA 1
SCALARS density double 1
LOOKUP_TABLE table1
1

SCALARS resistivity double 1
LOOKUP_TABLE table2
2

SCALARS temperature double 1
LOOKUP_TABLE table3
3

SCALARS susceptibility double 1
LOOKUP_TABLE table4
4

SCALARS permittivity double 1
LOOKUP_TABLE table4
4

(2) 一个六面体网格示例
一个六面体网格的模型, 用paraview显示
一个六面体网格的模型

学习资源

  • python和vtk的一个入门讲义:http://www.cb.uu.se/~aht/Vis2014/lecture2.pdf
  • vtk官网: https://www.vtk.org/
  • 各种语言接口的VTK例子,VTKExamples: https://lorensen.github.io/VTKExamples/site/
  • 32
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值