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();