LoginSignup
9
8

More than 5 years have passed since last update.

VTKによるファイル読み込みと書き込み

Last updated at Posted at 2015-07-15

VTKによるファイル読み込みと書き込み

VTKによるファイルからの読み込みと書き込み(保存)の方法について説明する.

対応ファイル形式

VTK独自のフォーマットの他にもSTLなどの汎用的な形式の読み込みにも対応している.
* VTKフォーマット (.vtp, .vti, .vtu, .vtkなど)
* STL (.stl)
* PLY (.ply)
* OBJ (.obj)
* テキスト

読み込み

読み込むファイル形式によって,使用するReaderが異なるが基本的には.以下の手順で行う.
1. Readerを宣言してNew.
2. SetFileName()でファイル名を指定して,Update().
3. GetOutput()でデータを取得.

一例としてVTKフォーマットのポリゴンデータ(.vtp)をvtkPolyDataに読み込む方法は以下の通り.
(公式サンプル)

vtkSmartPointer<vtkXMLPolyDataReader> reader = vtkSmartPointer<vtkXMLPolyDataReader>::New();
reader->SetFileName("filename.vtp");
reader->Update();
vtkPolyData* polydata = reader->GetOutput();

また,ファイル拡張子でReaderを切り替えるようには以下のようにする.
(参考)

vtkSmartPointer<vtkPolyData> output;

if (extension == ".stl")
  {
  vtkNew<vtkSTLReader> reader;//vtkSmartPointer<vtkSTLReader>でもOK.
  reader->SetFileName(filename);
  reader->Update();
  output = reader->GetOutput();
  }
else if (extension = ".vtk")
  {
  vtkNew<vtkPolyDataReader> reader;
  reader->SetFileName(filename);
  reader->Update();
  output = reader->GetOutput();
  }

書き込み

読み込みと同様に書き込むファイル形式によって,使用するReaderが異なる.
1. Writerを宣言して,New.
2. SetFileName()で書き込みファイル名を指定.
3. SetInputData()でデータをセット.
4. Write()を呼ぶ.正常に保存した場合には1を返し,失敗した場合には0を返す.

VTKフォーマットのポリゴンデータ(.vtp)を保存するコードを以下に示す.
(参考)

//vtkPolyData* polydataを書き込みたいデータとする.
vtkSmartPointer<vtkXMLPolyDataWriter> writer = vtkSmartPointer<vtkXMLPolyDataWriter>::New();
writer->SetFileName("file.vtp");
writer->SetInputData(polydata);

//保存形式を選べる.アスキー/バイナリを選択可能.
//writer->SetDataModeToBinary();
//writer->SetDataModeToAscii();
writer->Write();
9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8