了解vtk文件内容后,才能做一些文件格式转换问题,比如.vtk.off文件互转,之前我写过一篇有兴趣的可以参考。这里详细解读vtk文件格式。
vtk三维模型的数据主要包括:点point、线edge、面surface,点线面的属性scalar,颜色表lookuptable, 下面以polydata数据格式为例:
# vtk DataFile Version 3.0//文件格式版本
vtk output//标记信息,为vtk输出的文件。
ASCII//格式为二进制ASCII格式。
DATASET POLYDATA//数据集的类型为polydata,区别结构非结构等数据集类型。
POINTS 989 float//一共989个点,点的坐标用float类型存储。
-0.300020 -0.500000 0.000000//第0个点的三维x,y,z坐标
-0.376549 -0.484777 0.000000//第1个点的坐标
-0.300020 -0.500000 -0.090006
-0.376549 -0.484777 -0.090006
。。。
0.099278 -0.606015 0.308891//最后一个点的坐标
POLYGONS 1808 7232//一共1808个单元或者叫多边形,当然这里是三角面片,或者三角形、三边形。7232总存储数组的大小。1808*4=7232
3 0 1 2//第一个cellid ,3代表三边形,0,1,2分表表示pointid。由这三个点按照逆时针方向组成三角面片。
3 2 1 3//第2个cellid,。。。
3 1 4 3
3 3 4 5
3 6 7 8
3 8 7 9
3 7 10 9
3 9 10 11
3 12 13 14
3 14 13 15
3 13 16 15
3 15 16 17
3 16 18 17
。。
CELL_DATA 1808//1808个cell scalar值。
POINT_DATA 989//989个point scalar值。本例中的scalar值是标量,当然也可以支持vector矢量。
SCALARS scalars float//属性值类型为float
LOOKUP_TABLE default//颜色映射,为了观察或者渲染,与结构没有任何关系。
0 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 42 43 44
。。//点属性值
NORMALS normals float // 法线信息
-0.097548 -0.990392 0.000000
-0.375333 -0.906127 0.000000
-0.117057 -0.988471 0.000000
-0.375333 -0.906127 0.000000
-0.555569 -0.831470 0.000000
-0.555569 -0.831470 0.000000
。。
TEXTURE_COORDINATES textureCoords 2 float//贴图的坐标,如果只是模型处理,贴图可以不看。
0.424995 0.875000
0.399831 0.874998
0.424995 0.852499
0.399879 0.850411
。。
以上是一个.vtk文件缩略。