2016年4月6日水曜日

【メモ】CAD→xやらMMD等への変換関係 おぼえがき

かなり徒然の未整理メモ。
今のところの結論→精度はcgr化時に調整してwrl出力


これからVRが流行ると、3Dデータがメッチャ必要な時代がきてしまう。
んで、現実世界の製品PRのために、3Dデータを公開していきたいという話が出てきた。
しかし、CADとゲームなんかで使われる表示用の3Dはあまり互換性がなかったりする。

でも、そんな事に理解のある人ばかりではなく、
というか、たとえ理解していても理解していないフリをして、
無茶な工数をわりあてる事になるので、
ちょっと緩和策を漁っていくとともに、理解を深めたい。

また教育上の問題もある。
自分みたいな設計者は、オタクが多く昔からゲームでポリゴンに慣れ親しんでおり、
表示用のデータについて、詳しい人の話を聞いても理解できるのだが、
実際にデータ加工する人は、ゲームなんかはしない女性になる。
この辺、説明できるように理解を深めたい。

表示用の3Dは、法線やテクスチャを工夫することで、
頂点数を減らしつつ見栄えの良いデータが作れるらしい。
これを無視して変換するだけでよければ話は早いのだが、
それで始めてしまうとその方向が標準化してしまいそう。
他の道がないものか。

CAD系からMMD用のファイルを作るには、
Blenderを解してやるのが良いようだ。
Blenderはテクスチャを作ったり、法線編集もでき、覚えた方が良さそうだ。
・・・が変な操作形でストレスマッハなのであまり関わりたくもない

CADでstlファイルが吐き出せるなら、
Blenderでそのままインポートできる。
CAD─[stlファイル]→ Blender ─[xファイル]→PME

しかしstlは三角面のファイル形式。
3つの頂点座標と、面の法線ベクトル一つのデータ。
xファイルなどは、面ではなく頂点に法線ベクトルがある。その辺が違う。
つなぎ合わせた面を滑らかに見せるためには法線編集が必要になるかもしれない。

CATIAでstlを書き出す場合、精度の設定項目がない。
しかし、表示精度で設定された精度で書き出されるようなので、それで設定。
うんこCADめ。
この情報は、3Dプリンタ用データにも関連する話なので、思わぬ収穫。

っていうか、stlとxやMMDデータの扱いに慣れると、
ネットに転がってる表示用の3DデータをCADに取り込んだり、
3Dプリンタ出力したりって相談にも乗れそうな気がする。
倫理的な問題はあるが、
表示用に最適化されていないデータなら、たぶん簡単に出来てしまう。
むしろ、そういった懸念があるから、
表示用データはそれ用に最適化するべきって話になるのかな?
「ほらぁ、単純にデータ変換しただけだと、簡単にコピーできちゃいますよ」
なんてデモは分かりやすくて工数の交渉ネタになる気がする。

CATIAでいうと、cgrデータがまさにxファイルに近いデータ形式だと思う。
なので、そちらの方面から探す方向もありかもしれない。
コレが出来れば、おそらく誰でも出来る。
cgrフォーマットの詳細資料をネットで探したが見つからない。
cgr→stlは、無償はないが有償はありそう。
しかし、その場合はやはり頂点の法線をなんとかする必要が出てきそう。
cgrには法線データも含まれていそうなんだがな・・・
何か良い方法がないものか。

cgrデータの資料は、「cgrから形状を起こせないの?」っていう
よくある相談に上手く説明できるようになるためにも欲しかったんだがな・・・
しかし、表示用データについて理解してもらえば、
逆にcgrについて説明しやすくなりそうではある。
が、その場合「ならcgrデータを出せばいいじゃん」って話になるんだろうな。
やっぱcgrからxやobjの変換方法は必須になるかもしれない。

それにしてもcgr形式の資料が見つからぬ・・・

「CrossManager」というソフトであればcgr形式の読み込みが出来るようだ。
objへの書き出しも対応している。お値段、18万円程。
cgrを使えばいいじゃんって言われたら提案?。
体験版は書き出しがpdfのみのため詳細確認未。

AutoDeskのInvertorもcgrが読めるようだ。

pdf-3Dなんてものもあるようだ。これ、普通に使える気がする。
CAD端末にacrobatを入れてもらう必要があるが。

dxfで書き出して読み込んでいく手もあるようだ。
しかし、blender側でのインポートの際のメッシュ精度の設定がみつからない。
ちまちま修正すれば可能だが、ハゲそう。

dxfはメタセコイアでも読めたりするが、
メタセコは法線編集がないので却下。

「CAD Exchanger」というフリーソフトが結構便利そう。
igesやstpまで読めて、stlやobjの吐き出しが出来る。
さらに、メッシュの精度もある程度設定できる。
CAE用のメッシュまで作れるようだ。
しかも結構軽い。
しかし、もう一段荒いメッシュにしたい。
Rを通している部分などはR部を2分割にしたいが、3~4分割になってしまう。
ハゼ折りみたいなR形状でも、2分割でいいんだがな。
しかし、これでobjにしてからblenderで修正なら、ハゲ具合がマシになりそう。

「MeshLab」というフリーソフトもメッシュの設定が各種できそうだ。
こちらは、3Dプリンタ用のstlを作るのに良く使われているもよう。
最近よくある、3Dスキャナで読み取った点群データ(PCD、PointCloud)も扱えるらしい。
しかし、igesやstpなどのインポートはなさげ?
stpやobjの読み込みと書き出しはあるようなので、
「CAD Exchanger」でobjあたりに変換してから、MeshLabで修正という事になるのかな?
Blenderでの修正とMeshLabでの修正のどちらが楽か探りたい。
MeshLabメッシュの編集用のフィルターがそろって居そう。
Blenderもそういったのあるし、スクリプトが使えればさらにいろいろ出来そうではあるが・・・

あれこれ他のソフトを使うより、
CATIA上でメッシュを切りたいように面を分割してから、
超荒くした表示設定でstl書き出しして、
dxfやiges書き出しベースの重い形状の法線を焼き付けるのが正解な気がしてきた。
Blenderで法線ベクトルのベイクってあるのかな?ありそうだけど・・・
他CADの操作に慣れていると、本当にBlender触るのが嫌に成る。

CATIAで出力できるVRML(wrl)から作るのもありなようだ。
っていうか、Blenderでもwrl読めるな。
あれ?これなら法線ベクトルもちゃんとしたまま持ってける?
おそらく、ライセンス的にもVRMLの方が汎用的な方法かもしれない。
しかも、cgrもproductで組めばwrlに出来る。
これが正解な気がしてきた。
Blenderで読み込んだときにバラバラになる問題はあるが、
それくらいならなんとかなるだろう。
平面とRのつなぎ目の部分で、平面とRの頂点の法線が違うのが少し気になるが・・・
っていうか、頂点一つにまとめたいんだが?

その辺はblenderの操作でありそう。学ばねば・・・

CATIAのVRMLの出力設定でテクスチャの出力設定もあるな。
これまでテクスチャなんて貼ったことなかったが、
CATIA側で全て設定できるなら運用しやすい。

CATIA側のテクスチャは微妙だな・・・やっぱBlenderのがよさげ

Blener側での結合と重複頂点の削除はそこそこ簡単。
複数オブジェクトの結合はCtrl+J
重複頂点を削除はwで出てきたサブメニューでできる。

しかし、重複頂点の削除は、頂点の法線が平均化されているのか、
それか面の向きにあわせて新しくつくられるか、どちらか分からないが、
新しい法線の向きになってしまう。
これをすると、平面の端の頂点がR側に引きずられるため、
平面部にも微妙に凸Rがかかったようになる。
これはなんとか回避する方法を見つけておきたい。

Blenderの設定でなんとかする方法は見つからなかった。

幸い、VRMLはただのテキストなので
簡単にマクロを書いてやれば修正できると思われ、
それが一番手っ取り早いきがしてきた。

1.平面に使われている頂点座標をあらいだす。
2.そこと同じ座標で、平面ではない頂点があったら、法線を平面にあわせる。
3.もし複数の平面と同じ座標になってしまったら、もとの法線と角度が近い方を選ぶ。

こんな感じだろうか。

あれ?Rがかかってない角部って、重複頂点を削除ってしたらダメ?
確かに、xファイル上では分ける必要があるからそうかも。
っていうと、単純に全部選択で重複頂点を削除ってやるのではなく、
人力で選びながらしないといけないって事か・・・

まぁ、角部にも面を設けるってルールにすれば良いのかもしれないが。
CATIA側で、最後に角部全てにR0.3くらいかけて出せばいいんだろたぶん。

0 件のコメント:

コメントを投稿