2021/10/12
デフォーマをスキンクラスタウェイトに変換
こんにちは。
ゆはらです。
今回は、deformerを単一のskinClusterに変換する内製ツールをご紹介します。
1.ツール概要
skinClusterを含む様々なdeformerの変形を、1つのskinClusterに変換します。
ツール名は『ConvertSkincluster』です。
機能をそのままツール名にしました。
deformerをskinClusterに変換する機能としては、
maya2017以降で『BakeDeformerTool』が搭載されています。
Maya『BakeDeformerTool』公式ページ
Maya『BakeDeformerTool』使用方法公式ページ
BakeDeformerToolでもdeformerをskinClusterに変換できますが、
実行時に各ジョイントを回転して動かしながら計算を行うため、下記のような特性があります。
- 指定したルート以下すべてのジョイントが処理対象になる。
- ジョイント数が多いと処理に時間がかかる。
- rotateがコネクション等で拘束されているジョイントは処理されない。
または意図しない結果になる時がある。
とても便利な機能ですが、上記の仕様が少し窮屈に感じたため、
自社で使いやすいように開発したのが『ConvertSkincluster』ツールになります。
2.機能
ConvertSkinclusterツールには、大きく分けて2つの機能があります。
◆Custom convert
変換対象ジオメトリの上流ヒストリにあるskinClusterを参照し、
単一のskinClusterのウェイトに変換します。
上流ヒストリのデフォーマの種類や数には依存しません。
複数の異なるデォーマが設定されていても、単一のskinClusterのみのウェイトに変換します。
wrap制御されたジオメトリをskinClusterのデフォームに変換する時や、
靴をバインドする時などにとても便利です。
下図ではlatticeを仲介したバインドをskinClusterの直バインドに変換しています。
◆BlendShape convert
別々のskinClusterを持つジオメトリのウェイトをブレンドして、
単一のskinClusterのウェイトに変換します。
ブレンドする箇所は、Mayaの標準機能のPaintBlendShapeWeightsToolでペイントして指定します。
※ペイントした範囲だけウェイトがブレンドされます。
例えば、下図のように
「Ⓐ背骨にバインドされた青ジオメトリ」のウェイトを
「Ⓑスカート骨にバインドされた赤ジオメトリ」に移す場合、
ⒶをターゲットとしてⒷにブレンドシェイプを設定します。
Ⓐの腰付近のウェイトをⒷに移したいので、
腰以下の値が徐々に0になるようにペイントします。
この状態でBlendShape convertを実行すると、
ペイントした値を参照して単一のskinClusterのウェイトに変換します。
3.応用例
上記の2つの機能を使用し、まぶたのウェイトを調整してみます。
①wireデフォーマの変形をskinClusterに変換
ジョイントの位置にカーブ(赤)を作成します。
作成したカーブを使用して、顔のジオメトリにwireデフォーマを適用します。
カーブをジョイントにバインドします。
- 顔ジオメトリ ⇒ カーブにwireデフォーマで制御されている。
- カーブ ⇒ ジョイントにバインド(skinCluster)で制御されている。
Custom convertでwireデフォーマの変形をskinClusterのウェイトの変形に変換します。
少しガタガタしていますね。
Mayaの標準機能のDeltaMushを設定して、滑らかにデフォームするように調整します。
再びCustom convertでDeltaMushの変形をskinClusterのウェイトの変形に変換します。
②眉毛とまぶたのスキンクラスタウェイトをブレンド
「まぶた以外のウェイトが調整されたジオメトリ(baseGeo)」に先ほどの
「まぶたのみのウェイトが調整されたジオメトリ(wireGeo)」のまぶた回りのウェイトを移植します。
まぶたのブレンド範囲をペイントして実行します。
4.おわりに
是非チェックしてみてください。
まとめ
更に効率よくスキニングを行う事ができます。
今回ご紹介した内製ツール以外にも、
ちょっと気の利いたツールがあると時間の有効活用にもつながりますね。
他のツールもいずれご紹介できればと思います…!
ではまた。
※免責事項※
本記事内で公開している全ての情報について、その完全性、正確性、適用性、有用性等いかなる保証も行っておりません。
これらの情報のご利用により、何らかの不都合や損害が発生したとしても、当社は何らの責任を負うものではありません。
自己責任でご使用ください。