2019年11月11日月曜日

エッジをスピンさせる

メカもののモデルデータとかでは、似たような部品のポリゴンメッシュを流用するとか良く行うみたいです。ハードサーフェイスモデリングって云うやつですか?
まぁ、CADとかでアセットみたいにして流用するんではなく、昔作ったモデルデータから抜き出して持ってくるとかでも良いんですが。

で、こういった部品モノのモデリングは、けっこうMAXとかLightWaveのほうが作り易いので、FBXを経由してmayaへ持ってくる事になったりするわけです。




そんな場合に困るのがFBXの出力設定で、メッシュを全部三角にしてエクスポートしてきやがる輩が多すぎること。

mayaの Quadranglate(コマンドで言うところの polyQuad)は、お世辞にも性能が宜しくない。
maya上で Trianglate したものを Quadranglate するのは、まぁまぁの精度なんですが、ほかのDCCツールで作成したモデルをインポートした場合、なかなか思ったような四角になってくれません。
なので、まだ nポリゴンを修正する方がマシだったりします。

まぁ、納品データに nポリゴンが混じっているのもどうかと思いますが・・・


良く見つかる部分としては、ベベルをかけた所とかシリンダーのキャップ部分。

こーゆーのがFBXで持ち込まれると、たいていがこんな感じになります。

そっ閉じしたいくらいに酷いもんです。

そんなことしても何も進まないので、修正していく訳なのですが、nポリゴンはどんなDCCツールであっても、結構アクロバティックな分割をされてしまうわけなのです。

なるべく四角ポリゴンにしたいので、エッジをフリップしたりスピンさせたりするのですが、たいていパーツごとでオブジェクトに分割されています。なので、オブジェクト(多分右腕と左腕みたいなシンメトリーの部分)を複数選択して編集するのですが、しかし、そんな状態でスピンさせると、mayaはこんなエラーを吐いてくれます。

// Error: line 0: Doesn't work with multiple objects selected. //


エッジスピンは複数選択での実行に対応していないようです。
シンメトリーなオブジェクトなのに一個ずつ作業していては効率が悪くて仕方ありません。

こんな時こそスクリプトの出番ですね。

/* edge spin */
{
    string $edges[]=`ls -sl -fl`;
    string $tmp[];
    for( $edge in $edges )
    {
        if(!`gmatch $edge "*.e*"`) continue;

        polySpinEdge -ch 0 -offset 1 $edge;
        $tmp[size($tmp)]=$edge;
        
    }
    
    select -r $tmp;
    
}

まぁこんな感じでしょうか。

ちなみに、モデルプレビュー上でエッジを選択するなんてのは、かなり難易度が高いので、UVエディタで選択するのが楽できてオススメ。

Quadranglate するときもUVエディタ使うとUV境界が確認出来て一石二鳥です。

0 件のコメント:

コメントを投稿