ゴマちゃんフロンティア

アザラシが大好きなエンジニアの開発日記です

【開発日記】Unityでマイキャラの服に「DynamicBone」を入れてみたお話

time 2019/12/21

というわけで、ずっと試そうと思って試していなかったアセット「Dynamic Bone」を使ってみたお話です!

Unityで揺れものを扱ったのはかなり前で、4.1の頃に「Configurable Joint」で弄って以来です。
その時はすごく大変だった記録がありますが、DynamicBoneであれば(比較的)楽に設定できました。さすが有名なアセットだけありますね!
今回はそんなDynamicBoneを使うまでの流れをご紹介します。

環境

・Unity
2019.3.01f

・Blender
2.80

・Dynamic Bone
1.2.1

DynamicBoneの導入

DynamicBoneは有料アセットなので、Unityのアセットストアから購入します。
頻繁にセールの対象になるので、持っていない場合は待ったほうが良いです。
https://assetstore.unity.com/packages/tools/animation/dynamic-bone-16743

モデルの準備

boneの作成

DynamicBoneはその名前のとおり「boneを動的に揺らす」ものです。なのでまずは揺らしたいオブジェクトにboneを設定する必要があります。
どの程度boneを入れれば良いかはオブジェクトによります。実際にやってみた感じでは、マントやリボン・スカーフなどは少なめでもいけますが、服やスカートは相応に入れないと不自然な動きになりがちです。

参考までに私のキャラの場合、以下のように設定しました。
・ストールと服は8方向に3本ずつ
・スカーフは形に合わせて前に5本、左右に2本ずつ

追加するboneは既存のArmatureの近いboneから、エディットモードのエルードで伸ばして設定します。オブジェクトが離れている場合はboneプロパティの「connected」のチェックを外して動かします。

服やスカートを作る場合、1方向にboneを入れた後、そのboneをShift+Dで複製すると楽です。複製後はRで回転させるなり、コンテキストメニューの「Mirror」で反転させるなりで揃えます。

「とりあえず試したい!オブジェクトなんでもいいから!」な方は、下の画像のようなマント類がおすすめ。モデリングが比較的容易で、boneも数本入れればそこそこ動くためです。

ウェイトの設定

boneを入れたらいつも通りCtrl+Pの「With Automatic Weights」で頂点グループとウェイトを設定し、ウェイトペイントモードで調整していきます。

DynamicBone用に増やしたboneは、揺らしたいオブジェクトにのみウェイトを設定します。しかし「With Automatic Weights」で関連付けると他のオブジェクトにも作用してしまいがちです。
そんな時はオブジェクトを選択し、プロパティの頂点グループからDynamicBone用boneを消してしまいましょう。これで確実に作用しなくなります。

boneごとのウェイトを設定し終えたらUnityへインポートします。

DynamicBoneの設定

DynamicBoneを設定するboneの選択

インポートしたモデルをシーン上に配置し、ヒエラルキーから揺らしたいboneの一番親のboneを選択して「Dynamic Bone」コンポーネントを追加します。

上の画像のように親のboneにだけ追加すればOKで、子のboneに追加する必要はありません。
このキャラの場合は、スカーフの付け根に1つと、ストールと服の一番上のboneに8つずつ設定しました。

DynamicBoneコンポーネントの設定

まず「Root」にbone自身のTransformの参照を指定します。ヒエラルキーからドラッグ&ドロップするだけ。

パラメータの意味はアセットのreadmeに書いてあります。が、英語力が残念な私ではよく分からなかったので、他のサイト様の解説を元に設定しました。私のキャラの服の場合は以下のような感じ。

この状態で一度再生してみます。適当に動かしたりアニメーションさせたりしましょう。

上手くいけば揺れてフワッとした感じになります。
もっと大げさに動かす設定にすると躍動感がでますが、他のアニメーションで崩壊しまくるのでこの程度にしています。細かい調整が必要ですね。

DynamicBoneColliderの設定

揺らしたオブジェクトが体を突き抜けてしまう場合、体の各boneにDynamicBoneColliderコンポーネントを設定してめり込まないようにできます。

コライダーは黄色の球体で表示されます。パラメータを弄ってなるべくフィットさせます。

次にDynamicBoneコンポーネントの「Colliders」にDynamicBoneColliderを設定します。これもヒエラルキーからドラッグ&ドロップでOKです。

これで揺らしたオブジェクトがDynamicBoneColliderの判定とぶつかるようになります。上手く調整してなるべく突き抜けないようにします。

down

コメントする