[VRM0.x]自分でSpringBoneを入れる[Unity]
「FBX編集はできるけど、物理演算を設定できないから大幅な改変に踏み出せない」「コンバート元がインサイド式コライダーだから変換が役に立たない」
いっそ自分でゼロから設定してしまいましょう
大丈夫!コワクナイヨ!
SpringBone で覚えておくことは三つだけ
Root Bones に指定したボーンとその子ボーンが物理演算になる
Collider Groups で指定したコライダーに「だけ」衝突する
極力枝分かれさせない
極論これだけ覚えておけば形になります
やってみよう!
VRChatのアバターを扱うVRCSDK(またはVCC)、VRMアバターを扱うUniVRMの環境構築等は省略します
(任意)テスト用に Dance Animations FREE を導入
適当なVRChat用アバターのFBXファイルをSceneに配置
アバターのルートに空オブジェクトを作る(Create Empty)
スプリングボーンのコンポーネントをアタッチ(VRM Spring Bone)
ルートボーンに揺らすボーン(髪)指定する(Root Bones)
(任意)このまま動かしてみる
腰にコライダーをアタッチ(VRM Spring Bone Collider Groups)
スプリングボーンにコライダーを適用(Collider Groups)
もう一度動かしてみる
1.(任意)テスト用に Dance Animations FREE を導入
他にテスト用の Humanoid モーションをお持ちなら不要ですが、無い場合はこちらが無料なので便利です
2.適当なVRChat用アバターのFBXファイルをSceneに配置
プレハブではなくFBXファイルを直接配置します。FBXファイルには PhysBone を含むUnity用の設定が含まれていないためです。ヒエラルキーにドラッグ&ドロップして、座標が0,0,0,になっていることを確認します
VRChatアバターには大抵FBXファイルが同梱されています。今回はリーファちゃん同梱のFBXを使います。かわいいし公式VRMも同梱でリーファちゃんはいいぞ(ダイマ)
3.アバターのルートに空オブジェクトを作る(Create Empty)
ヒエラルキーでアバターのルートを選び、右クリックから Create Empty を選択。念のため作成されたオブジェクトを"secondary"にリネームしておきます
4.スプリングボーンのコンポーネントをアタッチ
secondary を選択し、インスペクタ右下の Add Component をクリック。検索ボックスに「vrm sp」あたりまで入力すると VRM Spring Bone が絞り込まれるので、それをクリックします(これをアタッチするといいます)
このコンポーネントの初期値は優秀で、とりあえずこの数値のまま動かせば揺れ物っぽい挙動になります。よってこのままにしておきます
5.ルートボーンに揺らすボーン(髪)を指定
最初に secondary を開き、右上の鍵マークでインスペクタをロックします(これをやらないと次の動作でインスペクタが切り替わり面倒)
次に、アバターの Armature 以下を開き、Headの下にある髪用ボーンをShift+クリックで複数指定し、インスペクタの Root Bones の文字の所にドラッグ&ドロップします。これで一括追加できます
6.(任意)このまま動かしてみる
とりあえずこのまま動かしてみます。アバターのルートを選択し、Animator に DancePack@Dance08 (または任意のモーション)を選択して再生します初期値が優秀なのでわりといい感じに揺れますが、髪が体を貫通しています。これを防ぐためにコライダーを追加します
7.腰にコライダーをアタッチ(VRM Spring Bone Collider Groups)
コライダーはボーン側にアタッチして使います。つまりヒエラルキーから目当てのボーンを選択する必要があります
今回は腰に大きなコライダーをつけます。再びアバターの Armature を開き、Spine ボーンを選択、インスペクタから Add Component を押します
検索結果が残っているので VRM Spring Bone Collider Groups が表示されている筈です。それをアタッチします
コンポーネントの数値を弄り、胴体の背中部分に接する感じで大きな球体を配置します
位置を調整するときはかならずコンポーネント側の数値で調整してください。 Scene ビューの矢印で動かすとボーンそのものが動いてしまい、アバターの体の構造が破綻してしまいます
(やや複雑な話ですが、コライダー用の空オブジェクトをボーンの子として追加して使う場合は、親のボーンに影響がないため Scene ビューで移動させても構いません。お好みで使い分けてください)
8.スプリングボーンにコライダーを適用(Collider Groups)
このままではスプリングボーン側に紐づけされていないので、コライダーがあっても素通りするだけです
再び secondary を開き、Collider Groups の文字の所に Spine ボーンをドラッグ&ドロップします。これでコライダーとして指定され衝突するようになります
この仕様を活用し、ルートボーンを目的別に(大抵は方向ごとに)分割して別々のスプリングボーンとして登録し、それぞれにコライダーをつけることで、大型コライダーを使った高度な制御が可能となります
9.もう一度動かしてみる
コライダーを追加したのでもう一度動かしてみます。おそらく後ろ髪の貫通はかなり改善されているはずです
これでスプリングボーンを自力で入れたことになります。後はこれを繰り返すことでスプリングボーンの自力設定が可能です
基本的にこれを繰り返だけです。お疲れ様でした
詳しくは次回
しかしまだ腕部分を髪が貫通していたり、逆にコライダーのサイズが大きすぎて前髪がおかしくなっているかもしれません
腕部分は、腕にもコライダーを追加し、スプリングボーンで対象に追加することで改善できます
前髪の場合、後ろ髪用のコライダーに巻き込まれているので、secondary のスプリングボーンコンポーネントをもう一つ追加し、ルートボーンを前髪だけのものと後ろ髪だけのものに分離することで対処できるでしょう
詳しいことは次回のTipsで書きます
この記事が気に入ったらサポートをしてみませんか?