Writing PTFX Files
The PtfxDatasetWriter allows you to convert simulation output into the PTFX binary
format for efficient playback:
#include "CeeParticleModel/PtfxDatasetWriter.h"
cee::pt::PtfxDatasetWriter writer;
cee::pt::Error error;
std::vector<cee::pt::PtfxScalarFieldInfo> scalarFields = {
{"Temperature", 273.0f, 1500.0f},
{"Pressure", 0.0f, 101325.0f}
};
if (!writer.open("output.ptfx",
/*maxParticleCount=*/10000,
/*timestepCount=*/200,
/*bboxMin=*/{-1.0f, -1.0f, -1.0f},
/*bboxMax=*/{1.0f, 1.0f, 1.0f},
scalarFields,
&error))
{
// Handle error
}
for (size_t frame = 0; frame < 200; ++frame)
{
std::vector<uint32_t> ids = /* ... */;
std::vector<float> positions = /* interleaved x,y,z ... */;
std::vector<std::vector<float>> scalars = /* one vector per field ... */;
writer.writeFrame(ids, positions, scalars, &error);
}
writer.close(&error);
You can query the writer state during the write process:
if (writer.isOpen())
{
size_t written = writer.framesWritten(); // Number of frames written so far
}
The writer produces a directory structure with a header file and one binary frame file per timestep. The
PtfxScalarFieldInfo struct defines the name and pre-computed min/max range for
each scalar field.