「nHairを使ってポリゴンの髪を揺らす」のパート3。
今回は、動画のように比較的激しい動きから終盤の静止状態に近い動きへと時間軸の中で動きに変化が大きい場合の設定についてメモしておきます。
Dynamic Propertiesの属性にキーを設定する
このシーンはバレエの動画からQuick Magicを使ってモーションキャプチャしたキャラクターの動きですが、終盤ではキーフレームを手付けして終わらせるアニメーションを付け加えています。そのため大きく異なるアクションが2つつながったアニメーションになっています。
メインのバレエのアクションでは頭部の動きが激しいためnHairのDynamic Propertiesの設定を髪が暴れ過ぎないよう動きを抑える設定にしています。
それに対して終盤ではキャラクターが上を向いた状態で髪が重力によって自然に垂れ下がるように変更。最後に正面を向いたとき初期フォルムに戻りやすいよう元の設定に戻しています。
1. バレエアクション → 2. 上向き静止(髪垂れ下がり)→ 3. 前向き静止(髪初期状態に近づける)
2つのアクションのつなぎ部分で、Dynamic Propertiesのいくつかの属性にキーフレームを打って対応しています。
また、nucleus のアトリビュートの[Gravity(重力)]属性も 9.8 → 50 → 9.8 というようにキーフレーム編集しています。
(短時間で髪が垂れ下がるようにするには、重力の値を大きくマイナスにする必要がありました。)
動きが激しいフレームでの設定
メインのバレエアクション部分の動きを抑える設定です。また、最後に正面を向いたとき髪型を初期フォルムに戻す設定も同じにしています。

hairSystemのDynamic Propertiesで、図の属性(赤色)にキーを設定しています。
Attraction Scaleのランプグラフの値はカスタムアトリビュートを作成してチャネルボックスで入力、キー設定すると操作しやすくなります。

その他、変更した属性を含めると下記のようになります。
図で赤字はキーを設定して変更している属性、黒字はデフォルト値から変更している属性で、それ以外はデフォルト値です。

上向き静止(髪垂れさがり)

終盤に上を向いたとき髪が重力にしたがって垂れ下がるように設定しています。 特にStart Curve AttractとAttraction Scaleのランプグラフの値をゼロにします。Star Curve Attractは髪型を初期状態に固定するための属性ですが、これをゼロにするだけでは効果が弱かったためAttraction Scaleのランプグラフ値もすべてゼロにしています。
また、同時にnucleusのGravity(重力)も 9.8から50に変更しています。
(重力方向Gravity direction はデフォルトで、 Y: -1 です。)

ランプグラフのエントリーにキーを作成する
Mayaのアトリビュート属性は項目名を右クリックして「Set key (キー作成)」できます。しかしランプグラフのエントリーの場合、グラフ上のエントリーをクリック → エントリー名を右クリック → 「Set key」というようにひと手間かかります。

今回のようにエントリーが3つある場合、キーを作成・変更するたびにこの操作を繰り返すのが手間になります。
カスタムアトリビュートを追加
そこで、チャネルボックスのすぐ下に各エントリー項目が並ぶようにカスタマイズしました。(図のAS Pos[0] ~AS Interp [2]までが追加したエントリーのカスタムアトリビュートです。)

このように hairSystemのトランスフォームにチャネルボックスの「Edit」メニューから「Add Attribute」を選んでエントリーを追加できます。
このとき設定ウィンドウでカスタムノード名を入力していく手間はありますが、一度設定すればキー入力の手間が省けます。 尚、このときのノード名は後でわかりやすければ何でも構いません。(ASはAttraction Scaleの意。Posはエントリーの位置。Valueは肝心な各エントリーの値、interpは、カーブの種類、[ ]内の数字はエントリーの根元から毛先への順番ID。)
尚、ここで追加したカスタムアトリビュートと次項目でシェイプノードのランプ属性との接続は、pythonスクリプトを使って行っています。 具体的なスクリプトは別ページにメモする予定です。
最初はアトリビュートエディタでキー作成
ただし、カスタムノードを設定しただけでは機能しません。
最初は、アトリビュートエディタで、この場合3つのエントリーを適当に追加してそれぞれにキーを作成しておきます。

ノードエディタで実際のアトリビュートと接続
アトリビュートエディタでキーを作成するとランプグラフのエントリー項目がノードエディタでも表示されるようになります。
図のように少々複雑になりますが、任意に付けた名前と該当する実際のノード属性を接続します。

これでチャネルボックスからランプグラフの各エントリー項目を設定してキー作成が可能になります。
hairSystemが一つだけなら必要ありませんが、今回は前髪、頭頂部、サイドと3つあるので同じようにカスタムアトリビュートを作成し、キー設定が同じならチャネルボックスで一度に3つ分入力できるようになります。
