チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第109回:スキニングはわかった。その後の編集をどうすれば良いのかがわからないのだ!(頂点移動編)

  • Maya
  • キャラクター・リグ
  • ゲーム
  • コラム
  • チュートリアル
  • モデリング
  • 初心者・学生
スキニングはわかった。その後の編集をどうすれば良いのかがわからないのだ!

モデル作った、ジョイント作った、スムーズスキンでバインドした。
それで作業が絶対に完全に完璧に終わることなどなく…あとから

「頂点の位置を変えたいな」
「ポリゴンを増やしたいな」
「ポリゴンを減らしたいな」
「ジョイントの位置を変えたいな」
「ジョイントの数を増減したいな」

となるのが通常運転です。
データをきれいに保つためにも、余分な編集情報は削除したい。
ゲーム制作ではFBXなどでシーンを書き出しますし、なるべくデータはきれいにしたい。

それではとMayaのドキュメントを見ても、スキニング後の編集をどうすれば良いか手順が書かれていない。(実はちょっとは書かれている)
ウェブを見てもどれが標準的な手順かわからない。公式な手順を知りたい。

というわけで、公式かどうかは微妙なのですけれど、どう進めれば良いかを何回かに分けてご紹介します。
やりたいことをベースにまとめていくので、実際の作業で迷ったときはそれぞれの回を見返せばOK、となっていく予定です。

一回目はスキニング後に頂点を移動したとき、どうすればいいかご紹介します。

スキニング後に頂点を移動、何が問題になる?

Mayaでレンダリングして画像を作るのであれば何も問題ないのですが、スキニング後に頂点を移動するとFBXに書き出しても反映されません。

下の左図はCubeを作ってジョイントにスキニングしています。その後頂点を動かしました。
右図はFBXに書き出してから、読み込んだものです。頂点の移動がなくなっています!

FBX

これは一応、仕様というかなんといいますか…仕様です。(細かい話は次回)
でもUnreal EngineやUnity、自社ゲームエンジンに持っていくときに困りますね。

ちなみにスキニングをすると次のノード構成になります。

スキニング後のノード構成

①pCubeShape1Orig1という、〇〇Origという名前のついているメッシュが変形前のメッシュです。
②skinCluster1ノードがスキニングの計算をします。
③計算結果はpCubeShape1メッシュノードに流れていきます。

頂点を編集するとpCubeShape1のpntsアトリビュートに記録されます。
接続エディタで見てみるとpnts[3]と[5]が出来て、頂点番号3と5の移動値が含まれています。
これが世に言う「ツイーク」情報です。ツイーク、tweak、日本語で微調整。
頂点移動のような微調整は、メッシュノードのpntsアトリビュートに記録されます。

FBXはskinClusterより後にある編集やメッシュのpnts移動値を反映しません。
代わりにどうするかというと、微調整をノードとして記録するようにします。

対処方法1:微調整 (Tweak) ノードを追加する

スキニングした後に頂点の移動だけをしているなら対応は簡単です。
(マルチカットや押し出しなど、スキニング後に作業履歴が色々とついている場合は「デフォーマ以外のヒストリ (Non-Deformer History)」を実行します。これだけで上手くいかない場合もあるので、次回紹介します)

メッシュを選択して、メニューから「デフォーム > 微調整を追加(Deform > Add Tweak) 」を実行します。
次のようにtweak ノードが作られて、移動情報がtweak ノードに転送されます。このあと頂点を動かすと全て tweak ノードに記録されます。

tweak ノード

skinClusterの前にtweakがありますので、FBXに書き出すときも考慮されて頂点移動が反映されます。

FBX

頂点をまだ移動していなくても、tweakノードが無いなら「微調整を追加 (Add Tweak)」で追加しておきます。以後は頂点を移動しても、FBXに書き出されて安心です。

対処方法2:あらかじめ微調整ノードを作るようにする

プリファレンスで設定すれば、スキニングをしたときに同時に微調整ノードを追加できます。

「ウインドウ > 設定/プリファレンス > プリファレンス (Windows > Settings/Preferences > Preferences)」を開き、カテゴリ「設定 > アニメーション (Settings > Animation)」に行きます。
「微調整: □ デフォーマの作成時に微調整ノードを追加」という項目がありますので有効にします。

「微調整: □ デフォーマの作成時に微調整ノードを追加」という項目がありますので有効にします

以後は、スキニングでバインドするときに自動的に微調整ノードが作成されます。頂点を移動してもFBXに反映されます。
ポリゴンの増減を伴う編集をした後に「編集 > 種類ごとに削除 > デフォーマ以外のヒストリ (Edit > Delete by Type > Non-Deformer History)」で不要な履歴を削除するときも、微調整ノードは正常に残ります。

まとめ

今回からスキニング後のメッシュやジョイントの編集をどのように行ってクリーンナップやフリーズをするか、というのをシリーズでご紹介します。
この話題は何年も何度も繰り返し出てくる話題ですので、まとめて欲しいという声も多く…。
一通り考えられるパターンを全て網羅するようにしていきますので乞うご期待!

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。