1

3 次元データ ポイントのセットを含む txt ファイルがあり、それらのポイントに基づいて vtkPolyData を作成したいと考えています。

ファイルには、最初の行に点の数があり、私の場合は 6 x 6 です。その後に、各点の実際の座標が続きます。ファイルの中身はこんな感じ。

6 6 
1 1 3
2 1 3.4
3 1 3.6
4 1 3.6
5 1 3.4
6 1 3
1 2 3
2 2 3.8
3 2 4.2
4 2 4.2
5 2 3.8
6 2 3
1 3 3
2 3 3
3 3 3
4 3 3
5 3 3
6 3 3
1 4 3
2 4 3
3 4 3
4 4 3
5 4 3
6 4 3
1 5 3
2 5 3.8
3 5 4.2
4 5 4.2
5 5 3.8
6 5 3
1 6 3
2 6 3.4
3 6 3.6
4 6 3.6
5 6 3.4
6 6 3

このデータを含む txt ファイルを使用して vtkPolyData 構造を構築するにはどうすればよいですか?

4

2 に答える 2

3

定期的にグリッド化された一連のポイントがあるように見えますよね?その場合、vtkImageData の方が適している可能性があります。本当に必要な場合は、後でいつでもジオメトリ フィルターを使用してポリデータに変換できます。

  1. vtkImageData インスタンスを作成します。
  2. その次元を (6, 6, 1) に設定します (3 番目の次元は無視されます)。
  3. そのデータ型を適切な型 (float または double だと思います) に設定します。
  4. AllocateScalars(); を呼び出します。
  5. C++ の場合、

    1. GetScalarPointer() を呼び出して、3 で設定したデータ型にキャストします。
    2. このポインターは、サイズ 36 の配列を指します。通常どおり、各ポイントを埋めることができます。
  6. 別の言語 (TCL/Python/Java) の場合は、引数 (x、y、0、0、値) を指定して、画像データに対して SetScalarComponentFromFloat を呼び出します。最初の 0 は 3 番目の次元で、2 番目は最初のコンポーネント用です。

これによりグリッドが得られ、ポリデータよりもはるかにメモリ効率が高くなります。

ポイントのみを視覚化する場合は、vtkDataSetMapper を使用し、SetRepresentationToPoints() でアクターのプロパティをセットアップして、適切なポイント サイズを設定します。それは視覚化の簡単な仕事をします。

于 2011-06-18T15:23:42.330 に答える
0

これらの例は役に立ちますか? 特に、これはポイントとポリゴンの生成を行うため、適応できるはずです。コアは次のようです(多くは省略されています):

# ...
vtkPolyData shell
vtkFloatPoints points
vtkCellArray strips

# Generate points...
loop {
   ...
   points InsertPoint $k $x0 $x1 $x2
}
shell SetPoints points
points Delete

# Generate triangles/polygons...
loop {
   strips InsertNextCell $NP2
   # ...
   strips InsertCellPoint [expr $kb +$ke ]
   # ...
   strips InsertCellPoint [expr $kb +$ke ]
}
shell SetStrips strips
strips Delete

# ...
于 2010-11-15T15:15:18.057 に答える