Beim Exportieren von Meshes mit assimp
über Code wie unten gezeigt, erhalte ich sehr begrenzte Präzisionsausgabe. Gibt es einen Weg in assimp
Exportzuwachs zu erhöhen? (Nichts deutet dies in der Dokumentation.)Wie können Sie Ausgabedateien mit höherer Genauigkeit von ASSIMP exportieren?
void export(aiScene* scene, const std::string & outputFile)
{
Assimp::Exporter exporter;
// exporter.mOutput.precision(16); ???
exporter.Export(scene, "obj", outputFile);
}
Ausgabe in der .obj
Datei nicht mehr als 6 Ziffern pro Wert enthalten:
v 557760 4.07449e+06 -49.1995
v 557760 4.07449e+06 -49.095
v 557760 4.0745e+06 -49.0082
v 557760 4.0745e+06 -49.1127
Wenn bei der tatsächlichen Exporteur Klasse suchen (ObjExporter.cpp
) Alle Daten werden durch eine öffentliche stringstream
geschrieben:
public:
std::ostringstream mOutput, mOutputMat;
[...]
mOutput << "# " << vp.size() << " vertex positions" << endl;
for(const aiVector3D& v : vp) {
mOutput << "v " << v.x << " " << v.y << " " << v.z << endl;
}
mOutput << endl;
Ist da eine Möglichkeit, die stringstream
Präzision (http://www.cplusplus.com/reference/ios/ios_base/precision/) zu erhöhen, ohne die assimp
Quelle zu ändern?
6 die Standardgenauigkeit für Ströme ist, haben Sie versucht, mit std :: setprecision (http: // en .cppreference.com/w/cpp/io/manip/setprecision)? – kfsone
Nein, ich habe das nicht versucht, aber könnte ich das einfach in meinem Code tun (der statisch mit 'assimp' verknüpft ist)? (um klar zu sein - ich suchte nach einer Lösung, ohne den Code in 'assimp' zu ändern, aber das ist vielleicht nicht realistisch) – Chris
Vielleicht erlaubt das Format nicht mehr Präzision? – Mikhail