2016-07-06 4 views
0

assimpでメッシュをエクスポートすると、次のようにコードが出力されますが、精度が非常に限られています。輸出の精度を高めるためにはassimpに方法がありますか? (何もドキュメントにこれをヒントません。).objファイルに高精度出力ファイルをASSIMPからエクスポートするにはどうすればよいですか?

void export(aiScene* scene, const std::string & outputFile) 
{ 
    Assimp::Exporter exporter; 

    // exporter.mOutput.precision(16); ??? 

    exporter.Export(scene, "obj", outputFile); 
} 

出力値あたりせいぜい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; 

assimpソースを変更せずにstringstream精度(http://www.cplusplus.com/reference/ios/ios_base/precision/)を増やす方法はありますか?詳細に異なる輸出クラスを見て、それは(世界的に)これを定義したり、外部から渡すための何の方法はそれらのいくつかは、実際に内部stringstreamため高い精度を設定していないが、があることが明らかになっ

+0

6は、ストリームのデフォルトの精度で、あなたはSTDを使用してみました::てSetPrecisionます(http:// EN .cppreference.com/w/cpp/io/manip/setprecision)? – kfsone

+0

いいえ私はそれを試していませんでしたが、私は自分のコード(assimpと静的にリンクしています)でそれを行うことができますか? (明らかに - 私は 'assimp'でコードを変更せずに解決策を探していましたが、これは現実的ではないかもしれません) – Chris

+0

フォーマットで精度が上がらないのでしょうか? – Mikhail

答えて

0

より正確な輸出を求める

技術的に、あなたは実際のエクスポートクラスをインスタンス化し、(それがパブリックメンバ変数だから)手動stringstreamを更新することができるかもしれないが、これは、輸出が多く、より複雑になり、assimpを使用してのポイントを簡単にエクスポートすることでした異なるフォーマット。

私はより高い精度の浮動小数点値(例えば)などをエクスポートするassimpを更新しましたが、ここで説明:How do I print a double value with full precision using cout?

関連する問題