Maya nHairで髪を揺らす – 2

前回の「Maya nHairで髪を揺らす-1」で、nHairダイナミクスを使ったポリゴンメッシュの髪を揺らすための基本操作を掲載しましたが、今回は実際にキャラクターに設定するときの操作と留意点を書きます。

ヘアシステムの構成

ヘア ダイナミクスを実際にキャラクターに設定する場合の留意点は、髪のメッシュオブジェクトとジョイントおよびダイナミクスに必要な要素を髪の長さと部位に応じて分けておくことです。
髪の長さ・部位ごとに整理しておくことで、「hairSystemShape」の「ダイナミックプロパティ」の設定値をまとめて変更できるようになり、ミスなく作業も早く進みます。

このキャラクターでは、hairSystem短めの前髪グループ長めのサイド・バックの髪グループ2つに分けています。
したがって、髪メッシュオブジェクトも2グループに分けています。

髪 ポリゴン メッシュ オブジェクト

前髪[F]グループ4個サイドとバック[SB]グループ8個、合計12個の髪ポリゴンメッシュでショートヘアをすでに作成しています。

髪のジョイント

髪のジョイントもメッシュオブジェクトと同じく長さの違いにより、前髪サイドとバックの2つのグループに分け、それぞれすでにスキンバインドしています。

カーブ作成とグループ化

前回同様、ジョイントにスナップしながらEPカーブを作成していますが、数が多いので作成したカーブはやはりグループ化しています。
グループ化しておくことで、後で頭(Head)ジョイントからペアレント コンストレインで接続する操作をまとめて済ますことができます。
次の動画は、カーブを作成し終えた段階で、作成したカーブを選択して示しています。
前回のカーブ作成の説明動画は下記リンクを参照してください。

2つのnHairダイナミクス

前髪のカーブ、サイド・バック ヘアのカーブ、それぞれ別々にnHairダイナミクスをつくります。

作り方は前回同様ですが、前髪用は前髪のカーブすべてを選択してから、「Fx メニュー」の [ nHair > カーブをダイナミックに ]を選択。
サイド・バック用もサイド・バックのカーブすべてを選択してから、「Fx メニュー」の [ nHair > カーブをダイナミックに ]を選択します。

次の動画で2つのnHairダイナミクス[hairSystem]を作成しています。

follicleShapeの設定

「カーブをダイナミックにする」前にカーブをグループ化していれば、follicle(毛根)は、アウトライナでグループに入っています。 カーブグループを展開するとアクセスできます。

follicleを選択し、follicleShapeノードで前回同様に設定します。 
ただし、follicleShapeノードについては、前髪もサイド・バックも同じ設定にするので、すべてのfollicleを選択してからチャネルボックスで一度で設定します。

設定するアトリビュートは下記の3つです。

follicleについては下記「ダイナミクス システムのノード」でも簡単に説明しています。

IKスプラインハンドルの作成

IKスプラインハンドルの作成」も、前回(下記リンク)と同様ですが、ジョイントチェーンの数が多いので繰り返し操作が多く、選択ミスの可能性も高くなります。
間違えのないようこの後の項目「アウトライナの整理」「シェルフに登録」のように準備してから作成します。

アウトライナの整理

「IKスプラインハンドルの作成」操作のミスを多少でも防ぐために、2つのhairSystemと2つのhairSystemOutputCurvesをそれぞれグループに分配しておきます。

特に[ hairSystemOutputCurves ]のグループは、ジョイントと同時に選択するので、ジョイントグループのすぐ下に配置しておくと選択しやすくなります。

シェルフに登録

「IKスプラインハンドルの作成」は、デフォルトではリギングのメニューからの選択になるので、リギングシェルフに登録しておくと良いでしょう。

IKスプライン ハンドルを作成

次の動画ですべてのIKスプライン ハンドル を作成しています。
やることは、①IKスプライン ハンドル ツールを選択、②根本ジョイント末端ジョイントhairSystemOutputCurves[curve] の順で選択するだけですが、繰り返し作業が多いのでジョイントと対応するカーブを間違えないように注意が必要です。

IKスプライン ハンドルを整理

IKスプライン ハンドルも2つのグループに整理しておきます。

follicleをHeadジョイントでコンストレイント

これでヘア ダイナミックシステムは完成ですが、次はヘアシステムをキャラクターのHeadジョイントから接続して頭の動きに同期させます。
ここでは「ペアレント コンストレイント」を使って接続します。

① キャラクターのHeadジョイント → follicleのグループ の順に選択② ペアレント コンストレイント を選択します。
follicleのグループは2つあるので、Headジョイントから2回それぞれペアレント コンストレイントします。

コリジョンオブジェクト

このキャラクターはショートヘアなので、下図のように肩から頭部だけのコリジョン(衝突)オブジェクトを用意しました。

元のメッシュオブジェクトはすでにスキンバインドしているので「フェースを複製」すると余計なヒストリが問題になります。したがってオブジェクト全体を複製してから余分なフェースを削除して作っています。
複製したオブジェクトを元オブジェクトと同じようにアニメーションさせるために、ここではスキンウェイトのコピーではなく、「ラップ デフォーム」を使用します。

ラップ デフォーム

オブジェクトにスキンウェイトがあるとコリジョンなどダイナミックシミュレーションがうまくいかないこともあります。
したがってここでは「ラップ デフォーム」を使用してコリジョンオブジェクトを同期します。

ラップ デフォームの適用は、①動かしたいオブジェクト②動かすオブジェクト(スキニング済みオブジェクト)の順で選択し、リギングメニューの デフォーム ラップ を選びます。 

              

コリジョンを設定

ラップデフォームの適用が済んだらコリジョンを設定します。

設定は下記リンクのように、コリジョンオブジェクトを選択し、 「Fx」メニューから、nCloth > パッシブ コライダの作成 を選択します。

コリジョン オブジェクトのすべての設定が完了後は非表示にしておきます。

hairSystemの調整

ここまでで髪は動くようになりますが、ほとんどの場合望む通りには揺れてくれません。

揺れ具合を改善するため、前回(下記リンク)の項目、hairSystemShapeノードのダイナミックプロパティを調整します。

ダイナミック プロパティ(ショートヘア)

前髪用トップ・バック ヘア用の2つのhairSystemShapeノードで、それぞれのダイナミックプロパティを下記のように調整しました。
これは、このキャラクターのショートヘアの場合の一例です。

前髪用:

図で示している項目以外は、すべてデフォルト設定です。

トップ・バック ヘア 用:

図で示している項目以外は、すべてデフォルト設定です。

次の動画の左側では前髪の向かって左端にボビングが発生しています。
対策としてMayaヘルプの解説にあるように「nucleus」ノード「ソルバアトリビュート」>「サブステップ」の数値を上げずに、「モーションドラッグ」を上げてみました。

動画の右側は、フォース項目の「モーションドラッグ」を、「0.300」から「0.400」に変更してボビングを解消しています。

「モーション ドラッグ」については下記リンクを参照してください。

シミュレーション動画(ショート ヘア)

ダイナミック プロパティ(セミ ロング)

最後にセミ ロング ヘアのダイナミック プロパティの設定例を示します。

図に示したように3つのhairSystemShapeをそれぞれ設定しています。
また、コリジョンはボディメッシュと着衣(セーター)用のコリジョンも追加しています。

Front Hair 用:

図で示している項目以外は、すべてデフォルト設定です。

Top Hair用:

図で示している項目以外は、すべてデフォルト設定です。

Back Hair用:

図で示している項目以外は、すべてデフォルト設定です。

シミュレーション 動画(セミ ロング ヘア)