hibitの技術系メモ

数学とか3Dとか翻訳とか

めんどくさいダイナミックボーンを効率的に入れる方法

※ダイナミックボーンは有料のアセットです。Unity Asset Storeにて$20(価格は変動することがあります)で購入できます。

 髪や服などの揺れものを表現したい時に、ダイナミックボーンは強力な武器となります。しかし、ボーンが増えてくるとそれにいちいち対応させるのは面倒な作業になってきます。そういった時に、ダイナミックボーンの性質について以下の3点を知っていると効率的に作業できます。

1 子ボーンのすべてに影響が及ぶ

 アバターのボーンヒエラルキー(bone hierarchy)は


hips(尻) → upperleg(太もも)→ 足の指先まで

spine(脊椎)

chest(腰) → shoulder(肩) → 腕の指先まで

neck(首)

head(頭)

髪にボーンが入っていれば以降も続く


 という構造になっています。そして、上流のボーンにダイナミックボーンを適用すれば下流のボーンにもすべて適用されるという性質があります。例えばspineにダイナミックボーンを入れた場合、上半身全体にダイナミックボーンが適用され、

f:id:hibit_at:20180911201514g:plain

 ゴム人間か!

 となります。  なんだか、

f:id:hibit_at:20180911200937p:plain

(from Wikipeida(CC BY-SA 3.0))

 生物の系統樹における単系統の話を思い出すのは私だけでしょうか。

 これを利用すれば、髪のボーンが20個ちかくあるシャーロちゃんのような子でも、headにダイナミックボーンを入れるだけでいいということがわかります。

f:id:hibit_at:20180911202309p:plain

 特にrootの指定やコライダーの設定が絡んでくると時短効果が高いです。ただこれはデメリットにもなって、全て同じパラメータが設定されてしまいます。実用上それで困ることはあまりないと思いますが、髪のボーン1個1個に異なるパラメータやコライダーを設定したい! というこだわりを持つ方は、やはり丁寧にダイナミックボーンを適用するしかなさそうです。

 ここで「headにダイナミックボーンを入れたら、髪だけじゃなく顔自身も揺れてしまうんじゃないの?」と思った方は鋭い。なぜかheadは固定されています。Blenderのポーズモードだと普通に回転するので、Unity上の制御のようです。恥ずかしながら理由は不明……。もちろんneckにダイナミックボーンを入れたら顔がぐわんぐわん揺れてホラーな画になりますよ。

2 適用除外(exclusion)を指定できる。

f:id:hibit_at:20180911204032p:plain

 ダイナミックボーンには適用除外(exclusion)を指定できます。これを使えば、


あるボーン

(この間のボーンはすべてダイナミックボーンが適用される)

あるボーン

(ここから先は適用されない)


 という制御が可能になります。例えばシャーロちゃんは、hipsの直下に20個近いスカートのボーンがあります。hipsにダイナミックボーンを入れればこれらのボーンすべてを揺らすことができますが、巻き添えで全身が揺れてしまいます。そこで、spineとupperleg(右と左の両方)にexclusionを指定すれば、揺れの巻き添えを「止め」ることができます。

3 どこのボーン(というかオブジェクト全般)に入れてもいい

 これは私も実験していて衝撃だったのですが、別に髪を揺らしたいから髪にダイナミックボーンを入れる必要はありません。ダイナミックボーンが適用されるかは「root」に何を指定されるかだけで決まり、全然関係ないキューブオブジェクトにコンポーネントを入れても、そのrootにあるボーンを指定すればそのボーン(及び下流のボーン)は揺れます。ひとつひとつの髪にすべてコンポーネントを入れていたあの苦労はなんだったのか……。

 まあ、わかりやすさもかねてhipsに入れるのがいいと思います。

(2018/09/13追記。無関係なゲームオブジェクトにいれると揺れ方が変になることがあるようです)

スマートなダイナミックボーンの入れ方の例

 今までの話をまとめると、

f:id:hibit_at:20180911205014p:plain

 これだけの設定で、

f:id:hibit_at:20180911205234g:plain

 この揺れが再現できるということですね。

 余談ですが、ボーンのヒエラルキーが頭やつま先からでなく、尻から始まるのはなにか変な感じがするでしょうか。しかし、すべての動物の受精卵の分化は肛門(または総排出腔)から始まることを考えると、ボーンヒエラルキーがhipsから始まっていることは理にかなっていると言えなくもないかもしれない可能性を否定できない。

..It is not birth, marriage or death, but gastrulation which is truly the most important time in your life.

Lewis Wolpert, 1986

…人生において真に最も重要な時は、誕生でも結婚でも死でもない。それは原腸形成である。

ルイス・ウォルパート 1986

 皆様もダイナミックボーンの性質を良く理解して、良き揺れものライフを。