Tips

modoのバインド

modoの「バインド」について書いてみたいと思います。

バインドとはスケルトンとメッシュアイテムを関連付けて、スケルトンのトランスフォーム(移動/回転/スケール)を使用してメッシュを変形できるようにする機能です。一般的にスケルタルアニメーション(ボーンアニメーションやスキンアニメーションとも呼ばれる)するために必要な工程です。

 

バインド方法

バインドを実行するするには、いくつかの手続きが必要です。

  1. メッシュアイテムとスケルトンを準備する
  2. セットアップモードをONにする
  3. メッシュアイテムとスケルトンが選択された状態で「バインド」を実行する

 

バインドは何をしているのか

バインドを実行するとメッシュにウェイトマップが生成されるほか、シーン内にいくつかのアイテムが作成されることに気がつくと思います。

バインドは実行時にいくつかの処理を自動的におこないます。具体的には以下の通りです。

  1. 各スケルトンごとにウェイトマップを作成する
  2. ジェネラルインフルエンスを作成してメッシュ、ウェイトマップ、スケルトンを関連付ける
  3. 正規化フォルダを作成してジェネラルインフルエンスを入れる

 

手動でバインド

バインド済みのメッシュに後からスケルトンを追加したい場合など、手動でスケルトンとウェイトを関連付けたい場合があるかと思います。手動で設定するとこんな感じの手順になります。

 

バインドで使用されてる機能について

バインドで使用される機能について解説してみます。

ウェイトマップ

ウェイトマップは「頂点マップ」というメッシュの頂点にメタ情報を持たせる機能の1つです。modoは「UV」「モーフ」「頂点カラー」「法線」「トランスフォーム」など様々な情報を頂点に格納します。

ウェイトマップはその名称通り「重さ」という抽象的な値を頂点に格納します。このウェイトマップはmodoの様々な機能で利用することができます。

ウェイトマップの使用例

バインドで作成されるウェイトマップは、デフォーマがメッシュを変形するときの「影響の強さ」を指定するのに使用します。ウェイトの値が100%であればスケルトンのトランスフォームの影響を100%受けます。1つの頂点が複数のスケルトンから影響を受ける場合は、後述の「正規化フォルダ」によって正規化されたウェイト値が使用されます。

 

ウェイトマップのメリット

ウェイトマップはメッシュの頂点に情報を持たせることができるため、UVやテクスチャを作成することなく直接メッシュに選択範囲やマスクのようなものを作成することができて便利です。

また、modoの頂点マップはメッシュを編集してもある程度補間してくれるため、ウェイト/モーフ/UVなどを非破壊的にメッシュ編集できるという特徴があります。他の3Dソフトではありがちな、バインド後にメッシュを編集したらウェイトを最初からつけ直しというような問題が発生しません。

 

ジェネラルインフルエンス

ジェネラルインフルエンスは、メッシュのどこを変形するか指定するアイテムです。modoのデフォーマはプロシージャルモデリングやパーティクルシステムと同じようにノードベースの設計になってます。デフォーマは主に以下のノードで構成されています。

  • アイテム
  • インフルエンス
  • エフェクタ

「アイテム」は変形対象になるメッシュアイテムです。
「エフェクタ」はベンドやマグネットのように、どんな風に変形するか指定します。
「インフルエンス」はどこを変形するか指定します(ウェイトマップなど)。

ジェネラルインフルエンスはベンドやスケルトンによる変形など、一般的にアニメーションで使用するデフォーマ機能で使用されます。下の画像はベンド エフェクタを使用してメッシュを変形するときのノード構成です。

 

正規化フォルダ

正規化フォルダ(Normalizing Folder)はデフォーマの計算を1度におこなうための機能です。modoのデフォーマは「デフォーマリスト」の順番で変形を処理します。しかし、スケルトンで制御されるキャラクターのようなメッシュを変形する場合は、デフォーマを順番に計算するのではなく一度に変形を加える必要があります。

例えば下の画像では、センターのボックスにウェイトマップを100%ずつ重複するように設定しています。スケルトンを回転や移動したとき、センターのボックスは2つのスケルトンのトランスフォームが加算され2重に変形してしまいます。
General InfluenceをNormalizing Folderに入れると、ウェイトの上限が100%(スケルトンのそれぞれ50%ずつ)に正規化された変形になります。

 

スケルトンの変形は「トランスフォームデフォーマ」と同じ

スケルトン/ボーン変形まわりの仕様は3Dソフトによって様々ですが、modoのスケルトンによる変形は「トランスフォームデフォーマ」と同じです。

modoでは基本的にエフェクタ (ベンド、マグネット、ボルテックスなど)がジェネラルインフルエンスに変形方法を指示しますが、トランスフォーム(移動/回転/スケール)を持つアイテムは全てトランスフォームデフォーマとしてジェネラルインフルエンスに接続することができます。

バインドコマンドはロケータにしか対応していませんが、カメラ、ライト、メッシュアイテムなどトランスフォームを持つアイテムはスケルトンの代わりに使用することができます。

Mayaを使用した経験があればmodoのデフォーマのノード構成に違和感を感じることはないと思いますが、3dsMaxやLightWaveではエフェクタとインフルエンスがまとまった機能として提供されるため、ノード構成が少し複雑に見えるかも知れません。

恐らくエフェクタとインフルエンスを分けているのは汎用性を高めるための設計だと思います。サードパーティ製のエフェクタが開発されたとしても、ウェイトやフォールオフはインフルエンスによって一貫性のある動作が期待できます。
古いソフトはパラメータ固定のものが多かったので、このデフォーマではウェイトが使用できるのに、こっちのデフォーマではウェイトが使えない。というような一貫性のなさに苦労することがありました。

 

バインドが作成する特殊なウェイトマップ

バインドを使用して作成されたウェイトマップは少し特殊なウェイトマップです。バインドで作成されたウェイトマップは「頂点マップリスト」でロケータアイコン付きのマップとして表示され区別できます。下の画像では上が通常のウェイトマップ、下がバインドによるウェイトマップです。

なぜこのウェイトマップが特殊かというと、関連付けられたスケルトンを削除したタイミングでウェイトマップも同時に削除されます。

デフォーマリストにはジェネラルインフルエンスが残るので注意が必要です。有効なジェネラルインフルエンスが残ったままだと意図しない変形が加わることがあるため、バインドを繰り返して使用する場合はジェネラルインフルエンスを手動で削除する必要があります。

 

特殊なウェイトマップの作成手順

この特殊なウェイトマップは手動で作成することもできます。作成方法は「頂点マップ作成」するとき「__item_+シーンが管理するアイテム名」を入力します。

modoはアイテムツリーで表示されるアイテム名の他に、シーンが管理している名前を持っています。例えばシーンにLocatorを作成して選択します。「コマンド履歴」を見ると「select.item locator004 add」のようにシーンが管理するアイテム名を確認することができます。

頂点マップ作成ダイアログで「頂点マップの名称」に「__item_locator004」と入力してマップを作成すると、頂点マップリストではLocatorがアイコンつきの特殊なウェイトマップとして作成されたのが確認できます。

 

せっかくウェイトを調整したのに、スケルトンと一緒にウェイトマップが削除されると困る場合があると思います。そんな時のための便利なスクリプトを紹介します。

 

Convert Skeleton Weight to normal Weight

modoのバインドを使用した場合に生成される特殊なウェイトマップを、通常のウェイトマップに変換するスクリプトです。

http://modogroup.jp/tipsblog/scripts/cnv_skwgt2wgt/

 

Connect Weight Skeleton

同名前のウェイトマップとスケルトンを関連付けるスクリプトです。他のソフトで設定したウェイトをmodoのスケルトンに関連付けしたい場合に便利です。

http://www.modonote.com/script/connect-weight-skeleton/

Modo Tips



 

記事のまとめページ

コメントを残す