vtk文件格式

news/2024/11/18 11:34:19/

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

文章目录

    • 1. 第一部分,数据版本声明(不重要)
    • 2. 第二部分,标题 (不重要)
    • 3. 第三部分,文件格式声明
    • 4.第四部分,几何拓扑结构(重要)
    • 5. 第五部分,物理量(重要)
    • 6. 单元类型与节点顺序
    • 7. 牛刀小试
    • 学习资源

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_GRIDPOINTS	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	50CELLS 1 9
8	0	1	2	3	4	5	6	7	CELL_TYPES 1
11CELL_DATA 1
SCALARS density double 1
LOOKUP_TABLE table1
1SCALARS resistivity double 1
LOOKUP_TABLE table2
2SCALARS temperature double 1
LOOKUP_TABLE table3
3SCALARS susceptibility double 1
LOOKUP_TABLE table4
4SCALARS 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/

http://www.ppmy.cn/news/372529.html

相关文章

Ti-KV

目录 TiKV 持久化 TiKV架构及作用 RocksDB RocksDB:查询 RocksDB:列簇 TiKV 分布式事务 TiKV Raft Propose Append Replicate Committed Apply Raft Leader选举 TiKV读写与Coprocessor ReadIndex Read Lease Read Follower Read C…

vtk能干什么(适用范围)

参考博客:VTK能做什么_51CTO博客_vtk是什么 1、求一点与一条线之间的距离 2、两点之间的距离 3、生成均匀分布的随机数 4、生成高斯分布的随机数 5、确定点是否在面上 6、读取xgml文件 7、读取一个简单的点文件 8、读取XYZ A格式的点文件 9、读取一个文本文…

VTK渲染引擎

本文翻译自VTK user guide. VTK渲染引擎由VTK中的类组成,这些类负责获取可视化管道的结果并将其显示到窗口中。这涉及以下组件。注意,这并不是一个完备的列表,而是渲染引擎中最常用对象的含义。这里使用的副标题是VTK中表示这种类型对象的最高…

VTK简介

VTK(Visualization ToolKit) 是一个开放源码、自由获取的软件系统,全世界的数以千计的研究人员和开发人员用它来进行3D 计算机图形,图像处理,可视化。VTK 包含一个c 类库,众多的翻译接口层,包括Tcl/Tk ,Jav…

VTRK+PICO

碰撞检测 1、通过刚体组件(Rigidbody)和碰撞器组件(Collider)来进行检测 选择一个物体添加刚性物体 2、触发检测条件:至少有一方是刚性物体,双方都有mesh collider ​ 碰撞检测条件:主动方是…

VTK- vtkStripper

前言:本博文主要研究接口vtkStripper的实现原理及主要的应用场景,希望对各位小伙伴有所帮助。 描述:vtkStripper是一个过滤器,用于从输入多边形、三角形带和线中生成三角形带和/或折线。输入多边形仅当它们是三角形时才被组装成三…

git 提交到远程仓库 报错 error: failed to push some refs to ‘https://xxxxxx.git‘

git 学习地址 参考链接 报错如下 error: failed to push some refs to https://github.com/GDDXZ/RobotDenso.git hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushi…

2014世界10大DRAM公司

DRAM(Dynamic Random Access Memory),即动态随机存取存储器,是一种 最常见的半导体存储器,主要的作用原理是利用电容内存储电荷的多寡来代表一个二进制比特(bit)是1还是0。据IHS调查显示,2013年世界DRAM的销售值比上年窜升了32.5%…