
Ubuntu日本語フォーラム

ログインしていません。
初めて、投稿します。
OSはubuntu10.04.1を使用しています。
実は「Gerris」という流体解析ソフトを使用したくubuntuを導入したのですが、
これ自体は、チュートリアル通り動画の取得まで出来ました。
そこで、3Dデータを変更したく、gtsファイルを作成しようと思ったのですが、いろいろ調べても、分からず、
ここに投稿する事にした次第です。
ネット上にあるgtsファイルでは、うまく動作しないので、出来れば、作成できる、もしくは、変換できるソフトウェアをご存知の方、
御享受下さい。
よろしくお願いします。
オフライン
gtsファイルの書式については、検索サイトで「GTSファイルフォーマット」にてひっかかるところの記載ではいかがでしょうか。
また、gtsのオフィシャルサイトには(3Dモデリングとしての)サンプルデータがいくつかありますから、Gerrisにて使用することはできませんでしょうか(流体解析に向いてそうかどうかはちょっと微妙なところですが・・・)
オフライン
早速の回答ありがとうございます。
weyk による投稿:
gtsファイルの書式については、検索サイトで「GTSファイルフォーマット」にてひっかかるところの記載ではいかがでしょうか。
また、gtsのオフィシャルサイトには(3Dモデリングとしての)サンプルデータがいくつかありますから、Gerrisにて使用することはできませんでしょうか(流体解析に向いてそうかどうかはちょっと微妙なところですが・・・)
GTSファイルフォーマットについては↓
http://www.hiramine.com/programming/3dmodelfileformat/gtsfileformat.html
で、確認しました。
これで、中身は理解出来たのですが、球体や箱等より、ちょっと複雑な形状をやりたいので、
コードで書いていくのは自信がありません。
GTS Libraryのサイトにある↓
http://gts.sourceforge.net/samples.html
こちらの場合、形状がNGなのか、うまく動作しません。
そこで、できればgtsファイルで3Dデータを生成できるソフトか、もしくは、ベターな3Dデータを変換出来るソフトがあればと思い質問しました。
オフライン
VirtualBOXの環境へのgerrisのインストールに失敗しつつ、少し調べていました。
(11.04でのblcr-DKMSの既バグで止まってました。カーネルのバージョンに合わせて、10.04にしたら、すんなり行きました。)
gfsに付属のツールで、STLのデータをGTSへと変換するものが付いているようです。これを使う前提にすると、Ubuntuで動作して、かつ、フリーのものだと、OpenSCADで生成するのが良さそうかなぁ という感じです。
ただし、OpenSCADのexample1のデータをそのままSTL形式でexportして、stl2gtsにかけたところ、assertionにひっかかったため、利用はできませんでした(図形の形状かなにかに制限があるのだとは思いますが・・・3D-CADがさっぱりわかりません・・・)
STLもGTSも、どちらも、3角形をずらずら列挙する形式のようなので、変換の相性は悪くないと思っています。
Wineを使用する前提でAlibreDesign Xpressも動くかも という感じですが、本当に「動くかも?」なため、こちらは試していません。
オフライン
weykさん。度々の回答ありがとうございます。
自分でも調べてはいるのですが、なかなか答えに辿りつかない所で、
調べて下さっている方がいる事が心強く、感謝します。
weyk による投稿:
VirtualBOXの環境へのgerrisのインストールに失敗しつつ、少し調べていました。
(11.04でのblcr-DKMSの既バグで止まってました。カーネルのバージョンに合わせて、10.04にしたら、すんなり行きました。)
OSまで、やって頂きありがとうございます。
weyk による投稿:
gfsに付属のツールで、STLのデータをGTSへと変換するものが付いているようです。これを使う前提にすると、Ubuntuで動作して、かつ、フリーのものだと、OpenSCADで生成するのが良さそうかなぁ という感じです。
ただし、OpenSCADのexample1のデータをそのままSTL形式でexportして、stl2gtsにかけたところ、assertionにひっかかったため、利用はできませんでした(図形の形状かなにかに制限があるのだとは思いますが・・・3D-CADがさっぱりわかりません・・・)
STLもGTSも、どちらも、3角形をずらずら列挙する形式のようなので、変換の相性は悪くないと思っています。
なるほど。STLの変換ツールがあったんですね?気が付きませんでした。
自分でも、他の方法でGTSまで変換する事は出来たのですが、これもエラーが出てしまい、なかなか進んでいません。
ちなみに、変換の方法は、
Windowsソフトで「Hira3DViewer」というソフトが見つかりまして、これが、GTS形式のエキスポートに対応してました。
そこで、早速、「SketchUp」で作成したデータを、OBJ形式にエキスポートし、「Hira3DViewer」で読み込み、再度、GTS形式で出力するという事で、
とりあえず、データは完成したのですが、それを「gerris」で実行させると、"expecting a number (z coordinate)"というエラーが出ます。
下の、GTSソースの中を見ると"GTS_INT"と"GTS_FLOAT"の条件に引っかかっている様ですが、それが何か解らない所です。
static void point_read (GtsObject ** o, GtsFile * f)
{
GtsPoint * p = GTS_POINT (*o);
if (GTS_POINT_CLASS ((*o)->klass)->binary) {
if (gts_file_read (f, &(p->x), sizeof (gdouble), 1) != 1) {
gts_file_error (f, "expecting a binary number (x coordinate)");
return;
}
if (gts_file_read (f, &(p->y), sizeof (gdouble), 1) != 1) {
gts_file_error (f, "expecting a binary number (y coordinate)");
return;
}
if (gts_file_read (f, &(p->z), sizeof (gdouble), 1) != 1) {
gts_file_error (f, "expecting a binary number (z coordinate)");
return;
}
}
else {
if (f->type != GTS_INT && f->type != GTS_FLOAT) {
gts_file_error (f, "expecting a number (x coordinate)");
return;
}
p->x = atof (f->token->str);
gts_file_next_token (f);
if (f->type != GTS_INT && f->type != GTS_FLOAT) {
gts_file_error (f, "expecting a number (y coordinate)");
return;
}
p->y = atof (f->token->str);
gts_file_next_token (f);
if (f->type != GTS_INT && f->type != GTS_FLOAT) {
gts_file_error (f, "expecting a number (z coordinate)");
return;
}
p->z = atof (f->token->str);
gts_file_next_token (f);
}
}このコードで解る方、いらっしゃるでしょうか?
あと、もう少しだと思うので、自分でも、さらに調べて見ます。
オフライン
こんにちは。
gtsのライブラリの型判定を見たところ、あまり高度なチェックはしていないようです(大雑把に、トークン内の文字が、"+-0123456789"だけならINT、"+-0123456789Ee."だけならFLOAT という感じ)
行末の項目でエラーとなっていることから、おそらく、MS-Windowsで生成したgtsのテキストファイルを、そのままUbuntuに転送して指定したために、行末が「CR+LF」になっているのではと思います。改行コードの指定が可能なテキストエディタ等で「LF」にしてみてください。
参考までに ですが、当方のassertitonも、一応原因がわかりました。STLも3角形の面のずらずら書き連ねた書式なのですが、3つの座標のうち、2つの座標が等しいときにでるものだと判明しました(面じゃなくて線?)。STLファイルのデータとして正しいのかどうかは不明です(「E1 != E2 && E1 != E3 && E2 != E3」という条件に失敗。)
オフライン
回答ありがとうございます。
早速、確認しました。
weyk による投稿:
gtsのライブラリの型判定を見たところ、あまり高度なチェックはしていないようです(大雑把に、トークン内の文字が、"+-0123456789"だけならINT、"+-0123456789Ee."だけならFLOAT という感じ)
行末の項目でエラーとなっていることから、おそらく、MS-Windowsで生成したgtsのテキストファイルを、そのままUbuntuに転送して指定したために、行末が「CR+LF」になっているのではと思います。改行コードの指定が可能なテキストエディタ等で「LF」にしてみてください。
確かに、コレが原因で、エラーが出ていました。
そこで、geditで名前を「別名で保存」にして、名前をそのままで、改行を「Unix/Linux」に選択し、上書きで直りました。
ただ、gerrisで確認するまで、ちょっと手間が・・・・。
3Dの寸法サイズが異常に小さかったり、変換の時にZ軸とY軸が入れ替わってたり、表面の裏表(SketchUPだと裏にしないとダメ)だったりして。
とりあえず、作ったもので、なんとか実行できました。
いろいろ御教授下さり、ありがとう御座いました。
オフライン
こんにちは。
おめでとうございます。gts形式のファイルでしたら、gfs(gerris)にtransformというコマンドがあります。これで、単純な加工(回転、拡大、正規化(normalize)、裏返し(revert)、平行移動)ができそうですので、元となる形状のデータさえ準備できれば、調整はコマンドラインツールでなんとかなりそうです。
オフライン