私はVTKを使って通常のグリッドに保存したデータを視覚化しようとしています(色付きの等値面を描く)。低解像度バージョンのデータで動作するvtkレガシーフォーマットでデータをダンプするコードを書きました。 ParaViewまたはVTKライブラリを使用して、期待される等値面を抽出して表示することができます。各次元で10倍に分解能を上げると(nxは約100から1000、ny、nzと同じです)、パラビューとVTKライブラリを使って書いたビューアは正しくありません。それらは、単一の「ブロブ」の代わりに、わずかに軸外のシートのセットのように見えます。私は他のテストから、データそのものが正しいことを知っています。vtkデータフォーマットエラー
レガシーvtk形式のダンプコードに何か問題がありますか?私はルックアップテーブルが何をしているのか理解していませんが、低解像度のケースでうまくいくようです。
std::ofstream out(filename);
out << "# vtk DataFile Version 3.0" << std::endl;
out << "Signed distance/biharmonic visualizer" << std::endl;
out << "ASCII" << std::endl;
out << "DATASET STRUCTURED_POINTS" << std::endl;
out << "DIMENSIONS " << nx << " " << ny << " " << nz << std::endl;
out << "ORIGIN 0 0 0" << std::endl;
out << "SPACING " << h << " " << h << " " << h << std::endl;
out << "POINT_DATA " << nx*ny*nz << std::endl;
out << "SCALARS signedDistance double" << std::endl;
out << "LOOKUP_TABLE default" << std::endl;
for(size_t i = 0; i < nx; ++i)
for(size_t j = 0; j < ny; ++j)
for(size_t k = 0; k < nz; ++k)
out << tempPhi(i,j,k) << std::endl;
out << "SCALARS biharmonic double" << std::endl;
out << "LOOKUP_TABLE default" << std::endl;
for(size_t i = 0; i < nx; ++i)
for(size_t j = 0; j < ny; ++j)
for(size_t k = 0; k < nz; ++k)
out << biharmonic(i,j,k) << std::endl;
out.close();
ここで何が間違っているのかわかりません - これはVTKファイルフォーマットの仕様に合ったファイルを出力するように見えますが(C++は実際にはわかりませんが) 1つのスカラ変数だけが出力された場合(より高い解像度で)、読者は機能しますか?実際の出力を見ることができるように、どこかにVTKファイルの例を投稿できますか? – Chris
最初のフィールドを出力していても同じ問題です。完全なサンプルデータファイルはhttp://www.cs.utah.edu/~benjones/gridDump000008.vtkです。 また、isoサーフェスとそれが何であるべきかの写真があります:http://www.cs.utah.edu/~benjones/isoFail.png –