Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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();
vs4sh
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした