VTK ファイルフォーマット

2009年12月23日

はじめに

VTK ファイルフォーマットについて説明します。

バージョン

VTK Ver. 4.2

VTK ファイル

VTK ファイルは、形状と属性を含みます。ファイル名の接尾子には ".vtk" が使われます。テキストとバイナリで記述できますが、ここではテキストで記述する場合だけを説明します。以下、全部大文字の語はキーワードで、小文字交じりの語はユーザー指定を意味します。

ヘッダー

ファイルの先頭は以下のように書きます。

# vtk DataFile Version 2.0
Header
ASCII
DATASET UNSTRUCTURED_GRID

1 行目は、ファイルの種類を表わすためのオマジナイです。Header の部分は、任意の文字列を書くことができます。"ASCII" は、全部テキストで書きますよという指定です。"DATASET" の "UNSTRUCTURED_GRID" は、非構造格子のデータですよという意味です。

形状

UNSTRUCTURED_GRID の形状は、以下のような書式で記述します。

POINTS NumPoints DataType
x0 y0 z0 x1 y1 z1 ...

CELLS NumCells DataSize
num0 p00 p01 ... num1 p10 p11 ...

CELL_TYPES NumCells
TypeNum0 TypeNum1 ...

NumPoints は点の数、DataType は "int" や "float" を指定します。NumCells はセルの数、DataSize はそれに続く数値の個数を指定します。numi はセル i を構成する点の数、pi0 pi1 ... はその点です。点の ID は 0 からはじまります。TypeNumi はセル i のセルタイプ番号です。主なセルタイプ番号を以下に示します。

  • 1 : 点
  • 5 : 三角形
  • 9 : 四辺形
  • 10 : 四面体
  • 12 : 六面体
  • 13 : 三角柱
  • 14 : ピラミッド

例を示しましょう。

三角形 triangle.vtk

# vtk DataFile Version 2.0
triangle
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 float
0 0 0
1 0 0
1 1 0
CELLS 1 4
3 0 1 2
CELL_TYPES 1
5

四辺形 quad.vtk

# vtk DataFile Version 2.0
quad
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 float
0 0 0
1 0 0
1 1 0
0 1 0
CELLS 1 5
4 0 1 2 3
CELL_TYPES 1
9

四面体 tetra.vtk

# vtk DataFile Version 2.0
tetra
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 float
0 0 0
1 0 0
1 1 0
0.8 0.2 1
CELLS 1 5
4 0 1 2 3
CELL_TYPES 1
10

六面体 hexahedron.vtk

# vtk DataFile Version 2.0
hexahedron
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 float
0 0 0
1 0 0
1 1 0
0 1 0
0 0 1
1 0 1
1 1 1
0 1 1
CELLS 1 9
8 0 1 2 3 4 5 6 7
CELL_TYPES 1
12

三角柱 wedge.vtk

# vtk DataFile Version 2.0
wedge
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 float
0 0 0
1 0 0
1 1 0
0 0 1
1 0 1
1 1 1
CELLS 1 7
6 0 1 2 3 4 5
CELL_TYPES 1
13

ピラミッド pyramid.vtk

# vtk DataFile Version 2.0
pyramid
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 5 float
0 0 0
1 0 0
1 1 0
0 1 0
0.5 0.5 1
CELLS 1 6
5 0 1 2 3 4
CELL_TYPES 1
14

属性

属性というのは、要するにシミュレーションデータでいうところの流速やら応力やらのデータのことですが、点とセルでそれぞれ指定できます。

POINT_DATA numPoints
...
CELL_DATA numCells
...

点、セルそれぞれにおいて、スカラーデータとベクトルデータを指定できます。

SCALARS Name DataType
LOOKUP_TABLE default
...
VECTORS Name DataType
...

Name には任意の名前を指定できます (空白を入れるのはダメ)。

例を示しましょう。

スカラーデータ scalar.vtk

# vtk DataFile Version 2.0
scalar
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 float
0 0 0
1 0 0
1 1 0
0 1 0
CELLS 1 5
4 0 1 2 3
CELL_TYPES 1
9
POINT_DATA 4
SCALARS point_scalars float
LOOKUP_TABLE default
1
2
3
4
CELL_DATA 1
SCALARS cell_scalars float
LOOKUP_TABLE default
5

ベクトルデータ vector.vtk

# vtk DataFile Version 2.0
vector
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 float
0 0 0
1 0 0
1 1 0
0 1 0
CELLS 1 5
4 0 1 2 3
CELL_TYPES 1
9
POINT_DATA 4
VECTORS point_vectors float
1 1 0
-1 1 0
-1 -1 0
1 -1 0
CELL_DATA 1
VECTORS cell_vectors float
1 1 0