Ich habe gerade angefangen zu lernen, VTK zu erhalten. VTU-Format-Dateien. Ich mache WriteVTU, die ein Beispiel für VTK ist. Ich habe den Code leicht modifiziert, so dass zwei Tetraeder in ParaView angezeigt werden, aber nur ein Tetraeder in ParaView angezeigt wird.Ich möchte mehrere vtkUnstructuredGrids in Paraview anzeigen
Offensichtlich vermisse ich etwas, aber ich kann nicht wo. Ich wäre dankbar für Hinweise.
Dies ist der Code.
#include <vtkVersion.h>
#include <vtkSmartPointer.h>
#include <vtkTetra.h>
#include <vtkCellArray.h>
#include <vtkXMLUnstructuredGridReader.h>
#include <vtkDataSetMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkXMLUnstructuredGridWriter.h>
#include <vtkUnstructuredGrid.h>
#include <vtkPointData.h>
#include <vtkVertexGlyphFilter.h>
int main(int argc, char *argv[])
{
// Parse command line arguments
if(argc != 2)
{
std::cout << "Required arguments: OutputFilename" << std::endl;
return EXIT_FAILURE;
}
std::string filename = argv[1];
vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(0, 0, 0);
points->InsertNextPoint(1, 0, 0);
points->InsertNextPoint(1, 1, 0);
points->InsertNextPoint(0, 1, 1);
points->InsertNextPoint(-1, 0, 0);
points->InsertNextPoint(-1, -1, 0);
points->InsertNextPoint(0, -1, -1);
vtkSmartPointer<vtkTetra> tetra =
vtkSmartPointer<vtkTetra>::New();
tetra->GetPointIds()->SetId(0, 0);
tetra->GetPointIds()->SetId(1, 1);
tetra->GetPointIds()->SetId(2, 2);
tetra->GetPointIds()->SetId(3, 3);
vtkSmartPointer<vtkTetra> tetra2 =
vtkSmartPointer<vtkTetra>::New();
tetra->GetPointIds()->SetId(0, 0);
tetra->GetPointIds()->SetId(1, 4);
tetra->GetPointIds()->SetId(2, 5);
tetra->GetPointIds()->SetId(3, 6);
vtkSmartPointer<vtkCellArray> cellArray =
vtkSmartPointer<vtkCellArray>::New();
cellArray->InsertNextCell(tetra);
cellArray->InsertNextCell(tetra2);
vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid =
vtkSmartPointer<vtkUnstructuredGrid>::New();
unstructuredGrid->SetPoints(points);
unstructuredGrid->SetCells(VTK_TETRA, cellArray);
// Write file
vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer =
vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
writer->SetFileName(filename.c_str());
#if VTK_MAJOR_VERSION <= 5
writer->SetInput(unstructuredGrid);
#else
writer->SetInputData(unstructuredGrid);
#endif
writer->Write();
return EXIT_SUCCESS;
}
Dies ist die .vtu-Datei.
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
<UnstructuredGrid>
<Piece NumberOfPoints="7" NumberOfCells="2" >
<PointData>
</PointData>
<CellData>
</CellData>
<Points>
<DataArray type="Float32" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0" RangeMax="1.4142135624" offset="0" />
</Points>
<Cells>
<DataArray type="Int64" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="56" />
<DataArray type="Int64" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="108" />
<DataArray type="UInt8" Name="types" format="appended" RangeMin="" RangeMax="" offset="152" />
</Cells>
</Piece>
</UnstructuredGrid>
<AppendedData encoding="base64">
_AQAAAACAAABUAAAAGAAAAA==eJxjYEAGDfaobGz8hv1IYvux8QElFQn3AQAAAACAAABAAAAAFAAAAA==eJxjYIAAFijNCqXZGIgDAAMAABA=AQAAAACAAAAQAAAADgAAAA==eJxjYYAADigNAACQAA0=AQAAAACAAAACAAAACgAAAA==eJzj4gIAACAAFQ==
</AppendedData>
</VTKFile>