見出し画像

髪のウェイトについて リギング編

今回はUnityのDynamicBone向けのリギングについて解説します。
こちらも自分用のメモを兼ねるので参考程度に御覧ください。

作業内容
・DynamicBoneなどを用いた、コライダーを適用する前提の揺れる髪を作る。

使用ソフト
Blender
Unity + DynamicBone(有料)

髪のトポロジー

画像1

画像2

ウェイトペイントを考慮すると画像のようなZ軸(横に対して)に水平な流れで作ると楽。
もちろんカーブで作ったのならそのままでも良いし、揺らし方や造形次第ではウェイトペイントよりもトポロジーを優先するべきだと思う。

あくまでこのやり方は1例。


ボーンの数とコライダー

画像3

ボーンの数は、多ければ多いほど歪みの少ない動きになるし少ないと歪みが大きくなる。
長い髪には複数本で構成して、短い髪は1本でも問題ない。

画像4

長い髪は複数のボーンで構成する。
近い髪などは1本のボーンでまとめても良い。

実装先のアプリケーションなどに、使える揺れものボーン数などが明記してある場合は合計数に注意。


画像5

DynamicBoneでは、ボーンの末端にコライダーを設定できる。
これは多ければ多いほど細かい設定ができる反面、パフォーマンスに大きく影響するので注意が必要。

画像は実験的にボーンをギチギチに詰め込んだものだ。

親子設定

画像6

髪ボーンは基本的にヒューマノイドボーンで言うHeadを親とする。

この時、パフォーマンスを向上させる目的でHair_rootを作る場合があるのだが、これはスクリプトの使用数を抑えてパフォーマンスを向上させる目的がある。
ただし、rootボーンを基準に揺れるので歪みが大きくなり成約もある。
実装可能であれば、親となるボーンに対してそれぞれコンポーネントを適用するのが良い。


画像7

root基準で揺らした場合。
rootから離れれば離れるほど歪みが大きくなる。


画像8

親ボーンで揺らした場合。
大きな歪みが起こりにくくなる。


画像9

髪に大きなリボンなどの別の揺れる物がある場合は、髪と一緒に揺らしながらリボンも揺らす必要があるかも知れない。

こんな時は、近い髪のボーンを親にしてリギングすると良い。
揺れる髪の上に揺れものを付ける場合、これをHeadを親にすると髪に追従しないので注意。


画像10

ロングヘアの例。

末端は髪が別れているので、そこからボーンを分岐させて揺らしても良い。


ウェイトペイント

画像11

ボーンが1本の場合は、まずは1で塗る。


画像12

それからHeadを髪全体を1で塗った後に、髪の末端から0でグラデーションをかける。

画像13

グラデーションツールはこの場合はリニアで。


画像14

ウェイトペイントの頂点選択でマスクしながら塗る。

Blenderの仕様で範囲がよくわからない。


画像18

複数のボーンのウェイトは、ボーンを中心に塗る。


画像19

これを繰り返す。

こちらもグラデーションツールで塗ると良い。
必ず隣接するボーンと均等になるように塗ること。


画像20

ボーンの真ん中から塗るので、隣接ボーンの真ん中までグラデーションさせれば良いだけ。

付け根の揺れ方の制御はHead側でやる。


画像15

Head全体はこんな感じだ。
髪ボーンが入る部分に対してすべてグラデーションをかけよう。

このグラデーション範囲が大きければ大きい程、コライダーによる制御が難しくなるので、グラデーション区間は短ければ短いほど良い。
ただし、短すぎると根本から折れるように髪が曲がるので注意。


画像16

グラデーションをかけないと…


画像17

このように折れ曲がってしまうという訳だ。


画像21

正規化を自動で行っていない場合は、手動でHeadを選択して"すべてを正規化"を実行しよう。

いいなと思ったら応援しよう!