2019年3月2日土曜日

CADデータの読み込み

Autodeskさんのメディア&エンターテインメント事業部のWebサイトAREA Japanのコラムにこのような記事がアップされていました。

チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第76回: ゲームのためのハードサーフェスモデリング時代

内容は、「ハードサーフェスモデリングの為に予めパーツをたくさん作っておいてそれを組み合わせて1つの形状を作っていこう、そのパーツをつくるのにCADのソフトを使い、Mayaで読み込んで使おう」
と、ざっくりとこのような事でした。

僕は仕事柄、クライアントさんから商品のCADデータを頂いてそれを静止画や動画にする事が多いのでこの記事の中でもCADデータをMayaに持っていく所が参考になりました。

ただ、そこで書かれていた方法でやってみましたが個人的には多少の満足にとどまりました。モノによっては使える事もあるかもです。(あくまで「読み込み」「CAD→ポリゴン変換」に関する部分のみで、記事の内容が間違ってるとかということではありませんので念の為。)

この辺は色々な方法があるのかもしれませんが、僕のやり方と、記事にあった方法との比較をしてみたいと思います。

先に書きますが僕のいつもの方法は、
CADデータ→Fusion360に読み込んでSATファイルに書き出し→3DSMAXに読み込んでFBXで書き出し→Mayaに読み込み
という一見ややこしいことをしています。が、これが現状では一番納得できる状態のモデルができます。出来ないときもたまにありますが、、。
(あくまで個人的な方法なので他のご意見もあるかもです。)

----------

CADデータ、そもそもCADで製品を設計してそれを元に製品にしていくのでビジュアライズする必要が無い事が多かった。あっても形や表面の評価をするための表現でした。

広告に載せるにはそのモデルを元にモックアップや実製品をつくって写真や動画の撮影をする、という流れでしょうかね。今でもその方法は基本ではあります。

そこに、色々と理由はあるかと思いますがプロモーション用に、製品になっていない状態でも製品の静止画像や動いてる動画がほしい、という要望があって、そこでそのような表現が出来る3DCGのソフトで処理をしてレンダリングする、という需要が生まれたんだと思います。
まぁ、僕も多少ですがその需要に乗っからせて頂いているわけですが。。

話が逸れました。。
それで昔から、CADデータの変換には色々と苦労させられてました。今もですが、

・面が欠落する
・面が異常な形状に変化する
・データが重い

等々、、


それぞれのCADソフトが保存するオリジナルのデータはそのまま読める事が少ない中、「中間フォーマット」と呼ぶファイルでやり取りします。有名なのは
IGESですが、車業界で発展してきたSTEPが最近は多いです。信頼性もアップしています。
(それでも中間ファイルはファイルサイズが大きくなりがち、担当者が書き出しの設定がわからないとかでもらえないことも多く、オリジナルのフォーマットで来ることもあります。)

データの参考用にFusion360で簡単なモデルを作りました。とりあえずIGESで書き出します。

そしてMayaへ読み込みするのですが、Mayaは昔からCADデータ(IGES)を読み込むとサーフェスの状態で読み込まれます。


・・・久々にそのまま読み込みましたがここまでとは・・。トリムが全く処理されていません。。
さて、この状態ではダメですので、問題がある面を処理していきます。
また、サーフェスの状態でレンダリングまで持っていくこともできますがレンダリング時に自動でポリゴンに変換されるため頂点が揃っていないと穴が空きます。そのためにサーフェス毎の面分割設定を調整したりするのが面倒なので、ポリゴン化することに。
その際には分かれた面をつなぎ直し、エッジを処理して、、という作業が延々と続きました。大量のデータになると何日もその作業にかかってしまい、ツラいことになりました。

何とか出来ないかと色々とトライアンドエラーを繰り返した結果、上記に書いたように中間ファイルにSATを使い、
CADデータ→Fusion360→satを3DSMAXに読み込み→FBXをMayaに読み込み
という手順に行き着いたわけです。

AREA記事によりますと***_ATFプラグインを使う、とあります。Maya2016のExtensionから入ってきたようです。
なので今までスルーしていました。

と、いうことで比べてみました。直に読むデータはSTEPにしています。


左から、
①Fusion360→STEP_ATFのATFTessellationオプションで読み込み
②Fusion360→STEP_ATFのArubaTessellationオプションで読み込み
③Fusion360→SATを3DSMAXに読み込み→FBXを読み込み
になります。
因みに、Maxでは読み込みの際にオプションウインドウが出てそこで分割の細かさ等選択できますがデフォルトのままです。ATFプラグインの方は見た目を合わせるために分割のパラメータを調整しています。

見た目に分割のされ方に違いが出ています。一番きれいなのは③です。AREA記事で紹介されていたのは②の場合です。
ワイヤーフレーム表示をオフにして一部を拡大表示してみます。


どうでしょう。②だけ、ハードエッジが見えます。サーフェス時のエッジラインが見えてしまっています。


サーフェス同士の処理がうまく行っていません。頂点法線の向きが合っていないのですね。さらに②では数字の下辺りが、ボリゴン分割が良くなくて変な陰影が出ています。
ということで②は使えないことになります。
「いやいや、これ、ポリゴンがサーフェス時の面単位で切り離されてて、エッジがくっついてへんから、記事にあるように頂点マージしてソフトエッジにすればええやん」とも思いますが、Mayaで読み込んだ時点でエッジが見える、ということはCADで処理した法線データが削除されている状態です。
なのでMayaでマージしてソフトエッジ処理しても、CADデータの時のような表面にはなりません・・・。

③では、実はサーフェス時の面単位で切り離されているにもかかわらず、面の繋ぎが切れているようにはみえません。頂点や面の法線はCAD設計時の情報がちゃんと残っています。

因みに、「サーフェス時の面単位で切り離されている」というのは以下のような状態です。







表面がきれいで一つの形状に見えますが・・





一つ前の画像にある黒いエッジが境界線で、
パーツのようにバラバラになります。





そうすると?「①の、ATFプラグインATFTessellationオプションでええんちゃうん?」
と考えるでしょう。①ではポリゴンが切り離されていなくて1個の状態になっています。頂点もマージされています。当然エッジ処理もちゃんと残っていますので大丈夫。
ですが、まだ①が使えない理由があります。

僕はポリゴンを三角から四角にするのを好んでやります。コマンドは
メッシュ > 四角化(Quadrangulate)
です。これを①と③に実行してみます。


①では一部エッジが余計に消えて形が崩れてしまいました。
③ではサーフェス単位のポリゴン面がパーツとして残っているためきれいな見た目で四角化されています。これで後の調整作業は大幅に短縮されます。

そんなことで僕はCAD→SAT→3DSMAXからFBX→Mayaというめんどいことをその都度行っています。今の所、ほぼ無理なく出来てます。たま~に、これですらもまともに来ないデータもありますが(苦笑)

他にいい方法あるかなぁ。。

0 件のコメント:

コメントを投稿

Maya2022で以前のカラー管理を使う

 ~2021年6月24日追記~ RedshiftのMaya2022対応版が更新されました。バージョンは3.0.47 https://www.redshift3d.com/product/download Maya2022の新しいカラー管理にも対応!問題なく起動します! -----...