1

単純なジオメトリとベクトル フィールドの両方をいくつかの VTK ファイルにエクスポートする必要があります。ジオメトリをエクスポートすることはできましたが、ベクトル フィールドをエクスポートする方法を理解するのに苦労しています。必要なファイルの構造/形式は何ですか?

これは私がこれまでに持っているものです(ちなみに、ベクトルは任意に配置する必要があります。つまり、構造化されたグリッドなどは機能しません):

<?xml version="1.0"?>

<VTKFile type="PolyData" version="0.1" byte_order="LittleEndian">
  <PolyData>
    <Piece NumberOfPoints="8" NumberOfVerts="0" NumberOfLines="0" NumberOfStrips="0" NumberOfPolys="5">
      <Points>
        <DataArray type="Float32" NumberOfComponents="3" format="ascii">
        //point data//
        </DataArray>
      </Points>

      <Polys>
        <DataArray type="Int32" Name="connectivity" format="ascii">
        //connectivity data//
        </DataArray>

        <DataArray type="Int32" Name="offsets" format="ascii">
        //offsett data//
        </DataArray>
      </Polys>

    </Piece>
      //Need to put vector field with it's own points here//
  </PolyData>
</VTKFile>

更新: Chris からの提案の後 (以下の回答を参照)、ファイルを次の形式に更新しました。

<?xml version="1.0"?>

<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
  <UnstructuredGrid>
    <Piece NumberOfPoints="50" NumberOfCells="0">
      <PointData Vectors="Velocity">
        <DataArray Vectors="Velocity">
          //vector data//
        </DataArray>
      </PointData>
      <Points>
        <DataArray type="Float32" NumberOfComponents="3" format="ascii">
          //point data//
        </DataArray>
      </Points>
      <Cells/>
     <CellData/>
   </Piece>
 </UnstructuredGrid>
</VTKFile>
4

1 に答える 1

1

XML ファイルの例から、ベクター フィールドは PolyData のノードとは異なる座標で定義されているようです。この場合、2 つの異なるファイルを使用する必要があります。VTK ユーザーガイドの一部である VTK ファイル形式の仕様から (www.vtk.org/VTK/img/file-formats.pdf を参照):

慣例により、各データ タイプとファイル タイプは特定のファイル拡張子とペアになっています。

ベクター フィールドUnstructuredGridは、グリッド ノードの座標を明示的に指定する必要があるデータのように聞こえます (ImageGridノード座標がデータの間隔と範囲によって暗黙的に定義される s とは異なります)。これは明らかに PolyData VTK ファイルには入れられません (例の XML ファイルの 2 行目を参照してください)。

したがって、アウトラインを使用してベクター データの新しいファイルを作成してみてください (ファイル形式のドキュメントから取得)。

<VTKFile type="UnstructuredGrid" ...>
  <UnstructuredGrid>
    <Piece NumberOfPoints="#" NumberOfCells="0">
      <Points>
          <DataArray type="Float32" NumberOfComponents="3" format="ascii">
          //point data//
          </DataArray>
      </Points>
      <Cells>
          <DataArray type="Int32" Name="connectivity" .../>
          <DataArray type="Int32" Name="offsets" .../>
          <DataArray type="UInt8" Name="types" .../>
      </Cells>
      <PointData>
          <DataArray Vectors="MyVector">
            //Vector data goes here//
          </DataArray>
      </PointData>
      <CellData/>
    </Piece>
  </UnstructuredGrid>
</VTKFile>

更新: コメントで説明されているように、Cells要素を指定する必要があります (CellDataポイント データのみが指定されているため、要素を空のままにすることができます)。このCells要素は、セルの種類、接続性、およびオフセットを指定します。一連の接続されていないポイント (つまり、粒子) の場合、この情報は length の配列として指定されますn。ここnで、 はデータ ポイントの数であり、

type = 1, 1, .... 1
connectivity = 0, 1, 2, ... n
offsets = 1, 2, 3, ... n
于 2012-04-26T15:11:27.257 に答える