【Unity】ClusterでVroidモデル等のスカートが飛び出る方法を防ぐ方法
はじめに
はじめまして、Unityでアニメとか色々作ったりしてるたぬです。
ClusterはQuest2に対応したり、アバター制限解除したりとすごい発展してますね。
アバターの「座る」という動作も導入されており、VroidStudioからすぐに出力したものでは、きちんと設定してなければ下図のようにスカートが盛り上がってしまい、恥ずかしかったり、はしたない思いをすることになってしまいますね。
今回は特にアセットを追加せずにUnityのみで、修正する方法をご紹介したいと思います。
- はじめに
- 解決方法
- 前提
- Unityで編集したいモデルをドラッグアンドドロップする
- SpringBoneの設定を開く
- 再生中の値をそのまま維持する方法
- 「Collider」の「ColliderGroups」を見てみる
- 「Collider」の追加の仕方
- VRMでエクスポートする
- 追加編 足までコライダーをいれる
- コライダーリストに追加する
- 追記 参考値など
- おわりに
- 使わせていただいた衣装
解決方法
スカートをコライダーで挟む方法です。
ほかにも色々手段がありますが、今回はこの方法を紹介いたします。
前提
本画面はUnity2020.3.23です。
UnityですでにVRMモデルなどを導入されたことがある方向けに書かせていただきます。
VRMモデルの導入の仕方は、
に記載してありますので、ご覧ください。
なお、今回はUniVRM v0.61.1 をUnityに導入しておきます。
上記の記事で導入しているUniVRM v0.66でも動作はしておりますが、Cluster公式の見解は次の通りです。
Unityで編集したいモデルをドラッグアンドドロップする
SpringBoneの設定を開く
VroidモデルのSpringBoneの設定はモデルのPrefabsの「secondary」にありますので、それを開きます。
パラメータについて、VirtualCast様より引用
Stiffness Force
剛性です。もとに戻る強さを設定します。
Gravity Power
重力の強さです。
Gravity Dir
重力の力の向きを設定します。
Drag Force
抵抗です。強くすれば動きが鈍くなり、弱くすれば軽くなります。
※簡単な修正な仕方として、Gravity Powerをあげるだけである程度修正もできます。
どんな状態か確認してみましょう。
「DrawGizmo」にチェックをいれておきます。
再生ボタンを押します。
「Collider」のHitRadiusのスライダー動かしてみましょう。下図のように大きさがかわります。このサイズも適宜変更しましょう。
ほかのパラメータも弄ることで、動作を確認できますので、適宜確認してきましょう。
※黄色の球が出現しない方は、「DrawGizmo」にチェックをいれておきましょう。
一度再生をやめましょう。
再生中の値をそのまま維持する方法
通常、再生中にコンポーネント等の値を変更し、停止すると再生前の値にもどります。
毎回メモ等するのは面倒ですので、一つのコンポーネントだけの値をコピーする方法をメモしておきます。
なお、アセットやスクリプトを導入し、エディター拡張をすることで、再生中の値を維持したりすることができます。
また、Unityのバージョンごとで操作や出てくるウィンドウなどに差異がありますので、ご注意ください。
本画面はUnity2020.3.23です。
再生中に維持したい値が設定できたら、「VRM SpringBone」の赤点のあたりを右クリックし、「Copy Component」をクリックします。
動画
次に停止し、
値が元に戻ってることを確認します。
「Paste Component Values」をクリックします。コンポーネントの値だけをペーストします。
以上で、再生中の値をペーストすることができます。
「Collider」の「ColliderGroups」を見てみる
「Collider」の「ColliderGroups」のElement0を選択し、「J_Bip_L_UpperLeg」をクリックして、開いてみましょう。
「J_Bip_L_UpperLeg」の「VRM SpringBoneColliderGroup」には、左腿のに3つのピンク球が設置してあります。
これが「Collider」で、スカートと接触の判定を行っており、めり込みを防止しています。この「Collider」がスカートを突き抜けるとスカートから足が飛び出たり、パンツが見えたり色々まずいことが起きてしまいます。
逆にこのコライダーを綺麗に設置できれば貫通を防止できるわけです。
今回は座った際にスカートが飛び出る、浮かぶのを防止したいので、スカートを「Collider」で挟みます。
「Collider」の追加の仕方
「Element2」をクリックして、下の「+」マークをクリックします。そうすると「Element2」が複製されます。複製されたものが。「Element3」となります。
一つでも一応効果がありますが、しっかりと止めておきたいので、
3つ追加しておきます。
同様に右腿も追加します。
VRMでエクスポートする
ヒエラルキー上でモデルを選択し、上のメニューからエクスポートします。
問題なければ次のように表示されます。エクスポートをクリックしてください。
今回のコライダーの入れ方では、スカートの後ろ部分にコライダーを追加していないため、上図のように椅子につきぬけてしまいます。
コライダーをいれ過ぎるとスカートのひらひら感がなくなってしまうのでほどよく、好みで入れるとよいと思います。
スカートの後ろ側をコライダーで挟んだり…と解決法は色々あると思いますので、ぜひ色々試行錯誤してください。
追加編 足までコライダーをいれる
ヒエラルキー上からモデルの「J_Bip_L_LowerLeg」を選択します。
「AddComponent」をクリックして、「VRM SpringBoneColliderGroup」を追加します。
コライダーが追加されます。前回と同じように、「+」をクリックしていきます。
アバターのサイズに準じて、コライダーを追加してください。
ちなみに、私のアバターの「柳橋さん」は身長が140cmちょっとです。
右膝にも追加します。
面倒なので、コピーしてやります。
「VRM SpringBoneColliderGroup」の右端にある「三」をクリックして、「CopyComponent」をクリックします。
次に、ヒエラルキー上から「J_Bip_R_LowerLeg」をクリックし、赤点のある部分で右クリックをし、「PasteComponentAs New」をクリックします。
動画
コライダーリストに追加する
これで終了ではありません。作成したコライダーをSkirtのコライダーリストに追加しないと、判定をしてくれません。
初期設定では、上記のとおり、Upper_legの二つしかありません。「+」を2回押して、
先ほど作成した「J_Bip_L_LowerLeg」「J_Bip_R_LowerLeg」をリストに追加しましょう。
追記 参考値など
アバターの体型、スカートの形状で大きくことなりますが、参考までに私の設定した値などを記載しておきます。
通常座り
足組
寝ている状態
コライダーの入れた状態 厳密にいれてません。
おわりに
お読みいただきありがとうございました。
SpringBoneを色々工夫することで様々な表現ができるようになります。
スカートの動きだけではなく、髪の貫通防止などもありますので、ぜひチャレンジしていただきたいと思います。
皆様の快適で素敵なClusterライフをお送りいただけるように願っております。
私はUnity等を作って、自主制作アニメ「おかえりの柳橋さん」や色々な作品をTwitterやYoutubeで発信しておりますので、こちらも見て頂ければ幸いです。
使わせていただいた衣装
クレイスSHOP様