我需要将简单几何和矢量字段导出到某些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>
答案 0 :(得分:1)
从您的示例XML文件中可以看出,矢量字段是在PolyData节点的不同坐标处定义的。如果是这种情况,那么您将需要使用两个不同的文件。来自VTK文件格式规范,它是VTK用户指南的一部分(参见www.vtk.org/VTK/img/file-formats.pdf):
按照惯例,每种数据类型和文件类型都与特定的文件扩展名配对。
您的矢量字段听起来像UnstructuredGrid
数据,您必须明确指定网格节点的坐标(与ImageGrid
s不同,其中节点坐标由间距隐式定义,并且数据范围)。这显然无法进入PolyData VTK文件(请参阅示例XML文件的第二行)。
因此,尝试使用大纲(取自文件格式文档)为您的矢量数据编写一个新文件:
<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
元素指定单元格类型,连接和偏移。对于一系列未连接的点(即粒子),此信息被指定为长度为n
的数组,其中n
是数据点的数量,其中
type = 1, 1, .... 1
connectivity = 0, 1, 2, ... n
offsets = 1, 2, 3, ... n