たぬの技術のメモ帳

Unity、Vroid、3DCGとかのこと書いていきます。

【Unity】ClusterでVroidモデル等のスカートが飛び出る方法を防ぐ方法

はじめに

はじめまして、Unityでアニメとか色々作ったりしてるたぬです。

 

ClusterはQuest2に対応したり、アバター制限解除したりとすごい発展してますね。

 

アバターの「座る」という動作も導入されており、VroidStudioからすぐに出力したものでは、きちんと設定してなければ下図のようにスカートが盛り上がってしまい、恥ずかしかったり、はしたない思いをすることになってしまいますね。

 

 

f:id:tanuh_yy:20220109152944p:plain

 

今回は特にアセットを追加せずにUnityのみで、修正する方法をご紹介したいと思います。

 

 

f:id:tanuh_yy:20220109153104p:plain



解決方法

スカートをコライダーで挟む方法です。

f:id:tanuh_yy:20220111163203p:plain

ほかにも色々手段がありますが、今回はこの方法を紹介いたします。

 

前提

本画面はUnity2020.3.23です。

UnityですでにVRMモデルなどを導入されたことがある方向けに書かせていただきます。

 

VRMモデルの導入の仕方は、

tanuh-yy.hatenablog.com

に記載してありますので、ご覧ください。

 

なお、今回はUniVRM v0.61.1 をUnityに導入しておきます。

上記の記事で導入しているUniVRM v0.66でも動作はしておりますが、Cluster公式の見解は次の通りです。

f:id:tanuh_yy:20220109152545p:plain

https://clusterhelp.zendesk.com/hc/ja/articles/360029465811-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%A2%E3%83%90%E3%82%BF%E3%83%BC%E3%81%AE%E5%88%B6%E9%99%90

 

Unityで編集したいモデルをドラッグアンドドロップする

SpringBoneの設定を開く

VroidモデルのSpringBoneの設定はモデルのPrefabsの「secondary」にありますので、それを開きます。

f:id:tanuh_yy:20220109154555p:plain

パラメータについて、VirtualCast様より引用

 

Stiffness Force
剛性です。もとに戻る強さを設定します。

Gravity Power
重力の強さです。

Gravity Dir
重力の力の向きを設定します。

Drag Force
抵抗です。強くすれば動きが鈍くなり、弱くすれば軽くなります。

 

 

virtualcast.jp

 

 

※簡単な修正な仕方として、Gravity Powerをあげるだけである程度修正もできます。

 

どんな状態か確認してみましょう。

「DrawGizmo」にチェックをいれておきます。

f:id:tanuh_yy:20220109162254p:plain

再生ボタンを押します。

f:id:tanuh_yy:20220109161359p:plain


「Collider」のHitRadiusのスライダー動かしてみましょう。下図のように大きさがかわります。このサイズも適宜変更しましょう。

f:id:tanuh_yy:20220109162135g:plain

ほかのパラメータも弄ることで、動作を確認できますので、適宜確認してきましょう。

 

※黄色の球が出現しない方は、「DrawGizmo」にチェックをいれておきましょう。

f:id:tanuh_yy:20220109163200p:plain


一度再生をやめましょう。

 

再生中の値をそのまま維持する方法

f:id:tanuh_yy:20220110222816p:plain

通常、再生中にコンポーネント等の値を変更し、停止すると再生前の値にもどります。

f:id:tanuh_yy:20220110223026g:plain

 

毎回メモ等するのは面倒ですので、一つのコンポーネントだけの値をコピーする方法をメモしておきます。

なお、アセットやスクリプトを導入し、エディター拡張をすることで、再生中の値を維持したりすることができます。

また、Unityのバージョンごとで操作や出てくるウィンドウなどに差異がありますので、ご注意ください。

 

本画面はUnity2020.3.23です。

 

再生中に維持したい値が設定できたら、「VRM SpringBone」の赤点のあたりを右クリックし、「Copy Component」をクリックします。

f:id:tanuh_yy:20220110223955p:plain

動画

f:id:tanuh_yy:20220110223607g:plain

 

次に停止し、

f:id:tanuh_yy:20220110224215p:plain

値が元に戻ってることを確認します。

f:id:tanuh_yy:20220110224317p:plain

「Paste Component Values」をクリックします。コンポーネントの値だけをペーストします。

f:id:tanuh_yy:20220110224500p:plain

以上で、再生中の値をペーストすることができます。

 

「Collider」の「ColliderGroups」を見てみる

f:id:tanuh_yy:20220109163445p:plain

「Collider」の「ColliderGroups」のElement0を選択し、「J_Bip_L_UpperLeg」をクリックして、開いてみましょう。

f:id:tanuh_yy:20220109163902p:plain

「J_Bip_L_UpperLeg」の「VRM SpringBoneColliderGroup」には、左腿のに3つのピンク球が設置してあります。

これが「Collider」で、スカートと接触の判定を行っており、めり込みを防止しています。この「Collider」がスカートを突き抜けるとスカートから足が飛び出たり、パンツが見えたり色々まずいことが起きてしまいます。

 

逆にこのコライダーを綺麗に設置できれば貫通を防止できるわけです。

 

今回は座った際にスカートが飛び出る、浮かぶのを防止したいので、スカートを「Collider」で挟みます。

 

「Collider」の追加の仕方

f:id:tanuh_yy:20220109170045g:plain


「Element2」をクリックして、下の「+」マークをクリックします。そうすると「Element2」が複製されます。複製されたものが。「Element3」となります。

一つでも一応効果がありますが、しっかりと止めておきたいので、

f:id:tanuh_yy:20220109170753g:plain

 

3つ追加しておきます。

f:id:tanuh_yy:20220109170931p:plain

f:id:tanuh_yy:20220109170900p:plain

 

同様に右腿も追加します。

f:id:tanuh_yy:20220109171035p:plain

 

VRMでエクスポートする

f:id:tanuh_yy:20220109192800p:plain

ヒエラルキー上でモデルを選択し、上のメニューからエクスポートします。

f:id:tanuh_yy:20220109192934p:plain

問題なければ次のように表示されます。エクスポートをクリックしてください。

 

 

f:id:tanuh_yy:20220109193209p:plain

今回のコライダーの入れ方では、スカートの後ろ部分にコライダーを追加していないため、上図のように椅子につきぬけてしまいます。

 

コライダーをいれ過ぎるとスカートのひらひら感がなくなってしまうのでほどよく、好みで入れるとよいと思います。

 

スカートの後ろ側をコライダーで挟んだり…と解決法は色々あると思いますので、ぜひ色々試行錯誤してください。

 

 

 

追加編 足までコライダーをいれる

f:id:tanuh_yy:20220109194643p:plain

ヒエラルキー上からモデルの「J_Bip_L_LowerLeg」を選択します。

「AddComponent」をクリックして、「VRM SpringBoneColliderGroup」を追加します。

f:id:tanuh_yy:20220109194938p:plain

f:id:tanuh_yy:20220109195714p:plain

コライダーが追加されます。前回と同じように、「+」をクリックしていきます。

f:id:tanuh_yy:20220109200145p:plain

アバターのサイズに準じて、コライダーを追加してください。

ちなみに、私のアバターの「柳橋さん」は身長が140cmちょっとです。

 

右膝にも追加します。

面倒なので、コピーしてやります。

f:id:tanuh_yy:20220109200402g:plain

VRM SpringBoneColliderGroup」の右端にある「」をクリックして、「CopyComponent」をクリックします。

次に、ヒエラルキー上から「J_Bip_R_LowerLeg」をクリックし、赤点のある部分で右クリックをし、「PasteComponentAs New」をクリックします。

f:id:tanuh_yy:20220109200753p:plain

動画

f:id:tanuh_yy:20220109200932g:plain

 

コライダーリストに追加する

これで終了ではありません。作成したコライダーをSkirtのコライダーリストに追加しないと、判定をしてくれません。

f:id:tanuh_yy:20220109201354p:plain

初期設定では、上記のとおり、Upper_legの二つしかありません。「+」を2回押して、

f:id:tanuh_yy:20220109201620g:plain

先ほど作成した「J_Bip_L_LowerLeg」「J_Bip_R_LowerLeg」をリストに追加しましょう。

f:id:tanuh_yy:20220109201931g:plain

 

追記 参考値など

アバターの体型、スカートの形状で大きくことなりますが、参考までに私の設定した値などを記載しておきます。

 

通常座り

f:id:tanuh_yy:20220112232618p:plain

足組

f:id:tanuh_yy:20220112232452p:plain

寝ている状態

f:id:tanuh_yy:20220112232702p:plain

 

f:id:tanuh_yy:20220112232824p:plain

 

コライダーの入れた状態 厳密にいれてません。

f:id:tanuh_yy:20220112232930p:plain

f:id:tanuh_yy:20220112233004p:plain

おわりに

お読みいただきありがとうございました。

SpringBoneを色々工夫することで様々な表現ができるようになります。

スカートの動きだけではなく、髪の貫通防止などもありますので、ぜひチャレンジしていただきたいと思います。

 

皆様の快適で素敵なClusterライフをお送りいただけるように願っております。

 

私はUnity等を作って、自主制作アニメ「おかえりの柳橋さん」や色々な作品をTwitterYoutubeで発信しておりますので、こちらも見て頂ければ幸いです。

 

www.youtube.com

twitter.com

 

使わせていただいた衣装

クレイスSHOP様

crais.booth.pm