Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@vs4sh

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

More than 5 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();
7
Help us understand the problem. What is going on with this article?
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
vs4sh

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?