Spline IK のソフトボディ化

Clothシュミレーターなどのプラグインを使用せずに、形状を慣性や力場で動かす方法です。

じつは形状のソフトボディ化によって服や髪の毛をなびかせることはできるのですが、キャラクターアニメーションと組み合わせることはプラグインなどを使用しない限り不可能とされています。
又、シュミレーターでは形状のつきぬけなどの問題が発生し、1頂点が突き抜けたために膨大なパラメーターを編集しなおさないといけないわずらわしさがあります。ここで記述する方法はもう少しマニュアル的に操作でき、形状のソフトボディ化に見られる形状の伸びを起こさない方法です。

髪の毛の場合

人体モデルに対してスケルトンを組み込んでおきます。このとき髪の毛形状、もしくはたなびかせたい部分はスケルトンを通さず、別ノードとしておきます。
髪の毛の形状には別個にスケルトンを組み込んでおきます。頭髪のスケルトンのルートジョイントは後に頭部ジョイントにコンストレイントで位置と回転をくっつけますので、頭部のジョイントと位置が合うように作成しておきます。
 

とりあえず、髪の毛にスケルトンを通しバインドをしておきます。

人体モデル(髪の毛は除外)にスケルトンを作成し、アニメーションもこの時点で作成しておきましょう。

人体モデルの頭部ジョイントに対して、髪の毛のルートジョイントをコンストレイントのポイントとオリエントを実行します。オリエントを実行する場合、向きを合わせるため髪の毛が横に90°回転してしまう場合があります。コンストレイントではフロント方向の変更ができませんので、コンストレイントの間にロケーターを組み込んでおくと、向き合わせが楽になります。コンストレイントの親ジョイントの向きが回転できる場合は必要ありません。

もしくは下図のようにロケーターをペアレントしておき、ヘアーのルートジョイントで向きを合わせる。

ここまでの状態で、髪の毛形状がアニメーションするキャラクターと一緒に動くはずです。

髪の毛のスケルトンに対してIKスプラインハンドルを作成します。
 IKハンドルは髪の毛スケルトンのルートからは通さないでください。

スプラインIKを作成することにより、ジョイント内にスプラインカーブが作成されます。
このスプラインカーブを選択し、DynamicsモードよりCreate SoftBodyを実行します。内部オプションは以下の通り。
WeightはIKハンドル全体の柔らかさになります。ここが1未満の場合、後述するGoalPP値を1にしても、スプラインIKの根元からふらふらと動くことになります。

ソフトボディ化されたカーブを選択し、それぞれのCVのGoal値を編集します。基本的には末端に行くほど数値を小さくします。増減具合はスケルトンの長さ、動きの具合で変わってきます。

ここまでの作業により、キャラクターのアニメーションに伴い、髪の毛がたなびくようになりました。

このままでは、たなびいた髪の毛が体にめり込むことになってしまいます。そこで、人体側に干渉用形状をコンストレイントしておき、スプライン化されたIKハンドルのパーティクルを干渉形状によって跳ね返す設定をします。

干渉形状は髪の毛と同じく人体スケルトンの各部ジョイントにコンストレイントのポイントとオリエントによって追従するようにしています。

スプラインIKのパーティクルと干渉用形状を選択しMakeColideを実行します。

これで、髪の毛が体にほぼめり込まないようなアニメーションができます。

この後、髪の毛のスケルトンジョイントのアニメーションをBakeによりキーフレームに置き換え、都合の悪い部分をグラフカーブの編集によって修正していきます。

修正前

修正後

 

スカートの場合

基本的には髪の毛と同じです。
スカートの場合、スケルトンを縦に通すのですが、髪と同じようにたとえ干渉形状を作成しておいても、各ジョイント間のCVどうしても足にめり込むことになります。

これも髪の毛と同様、アニメーションをBake後にアニメーションカーブを編集することで修正していきます。

編集前

編集後

ダイナミクスで計算する場合の、パラメーター調整の手間を軽減し、手付けでアニメーション作成するよりも簡単にリアルな動きができます。
 

 Get QuickTime Movie file(画像、もしくはリンク名をクリック)
  
Jump1.mov (1.86M)                                                 Jump2.mov (1.85M)