當通過如下所示的代碼導出assimp
網格時,我收到非常有限的精度輸出。 assimp
有沒有辦法提高出口精度? (沒有在文件中暗示了這一點)。如何從ASSIMP導出更高精度的輸出文件?
void export(aiScene* scene, const std::string & outputFile)
{
Assimp::Exporter exporter;
// exporter.mOutput.precision(16); ???
exporter.Export(scene, "obj", outputFile);
}
輸出在.obj
文件將包含每值不超過6個位數:
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
當實際出口類看(ObjExporter.cpp
)的所有數據通過公共stringstream
寫着:
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;
有一種方法,我可以增加stringstream
精度(http://www.cplusplus.com/reference/ios/ios_base/precision/),而不必更改assimp
源?
6是流的默認精度,你有沒有嘗試使用的std :: setprecision(HTTP:// EN .cppreference.com/W/CPP/IO/MANIP/setprecision)? – kfsone
不,我沒有嘗試過,但我可以在我的代碼中做到這一點(與'assimp'靜態鏈接)? (要清楚 - 我正在尋找一個解決方案,而不更改'assimp'中的代碼,但這可能不現實) – Chris
也許格式不允許更精確? – Mikhail