2022年2月11日金曜日

VRChatで貫通に鬼強くて使いまわしの効くコライダー設定のスカートを持ち込む

年一投稿のあくえりです。 あけましておめでとうございます。
今年も皆様にとってより良い年になる事を願っております。 
また、全然VRC入ってないけどとりあえず生きてます。 
今回は去年ちょこちょこ思いついて試していたことを一応まとめておこうと思います。 Twitterにちょこちょこ自分なりのまとめをポストしていたのですが、シャドウバンとか検索に引っ掛からないとかになったりで、ただの自己満足になってる感がヤバかったのもありまして... 

 

というわけで目録です 

①貫通に強いスカートとは??? 

②実際にボーンを作成(または位置確認)し、ウェイトを確認する 

③Unityに持ち込んで設定してみよう 

上記ご覧になってUnityだけで出来ないの?となる方もいるかも知れませんが、出来る場合と出来ない場合があるので、 とりあえず読み進めて頂けますと幸いです。 

 

①貫通に強いスカートってなんだろう?

 脚がスカートに貫通する現象を基本的に貫通するとあくえりさんの方では考えておりますが、これは至って簡単な事象です。 スカートのボーンが脚の裏に回り込んでいるってだけです。  簡単な図で示すとこんな感じです。

右足を前に上げた際の正面のボーンと右足のコライダーが接触しますが、右脚と左脚の隙間があるのでスカートのボーンは楽勝で回り込み、イメージとしてはオレンジの円のように動いてしまいます。

では、ここでより大きな右足のコライダーで押し出した場合を考えてみます。

図示すると↓な感じです。


当たり前(?)ですがより大きな赤い円で押し出してるので、青色のスカートのボーンは回り込みづらく、脚に貫通する事はなさそうです。

より基本的なところに戻ると、Dynamic Boneで使えるコライダー(図で言う赤円)は外に弾くタイプのアウトサイドコライダーと円の外周に引き寄せるタイプのインサイドコライダーがありますが、今回は主にアウトサイドコライダーでの設定法を備忘録として残していくつもりです。



②スカートのボーン位置確認とウェイトを見てみよう

 言ってることは何となくわかったけど、じゃあ実際何を見てるの?ってとこが大事だと思います。

 

1.まずはアバターを横から見てみよう

"着衣時"と"脱衣時"の両方を見比べる必要があります。

はい!!出たよBlender(クソデカ溜息)...そう思った方もいるかも知れません。

今はBlender作業が必要かどうかの判断段階なので大丈夫です。(骨位置がわかりやすく見えるのでBlenderでスクリーンショットしました)

ここでまず見ておきたいのが、脚を地面に対して水平に上げた際に、その足に乗っけられるスカートのボーンがあるのか?という点になります。

 スカートのボーンは、両脚と一緒に動いてくれません。なので、コライダーを使って押し出す。

つまり、コライダーが押し出せるスカートのボーンがない=貫通するという事になると思います。

両足を水平にした図(特にあんまり意味はない)
慣れてきたらこの位置であれば大丈夫ってなんとなくわかってくるんですが、大体でいうならおへその下あたりからスカートのボーンが走っていれば大丈夫です。 さっきUnityでも確認できるよって書いちゃったので、一応下記に説明します。

まずは同様に真横からアバターを見た状態にします。

スカートの真正面のボーンを選択して、Dynamic BoneのRadiusの円が表示されている状態にしてみました。

この時、円がおへそ近くの位置にあれば大丈夫だと思われるという判断が出来ます。

 

2.スカートのウェイトを確認してみよう

一旦Blenderの方に戻り、スカートのウェイトを確認してみましょう。

まずは右上のシーンコレクションより橙色のArmatureを選択し、スカートのメッシュオブジェクトを選択後、Ctrl+Tabを押下してウェイトペイントモードに入ります。

この後、Ctrlを押しながら各スカートのボーンを選択するとウェイトを確認する事が出来ます。

 


ウェイトとか聞いたこともないし、よくわかんねーよって方にざっくり説明させてもらうと、青はウェイト:0.0で赤はウェイト:1.0です。

値が大きくまたは赤色っぽくなっていくほど、ボーンを動かした際のメッシュオブジェクトの追従(または変形)具合が変わります。

ボーン付近の頂点は赤くしておくとスカートボーンの挙動が素直に動いてくれる為調整がしやすいので弄っていますが、必ずしも赤くなっている必要はありません。

こんな感じになってるんだ...へぇーくらいで大丈夫です。



③Unityで実際にDynamic Bone/Dynamic Bone Colliderを設定してみよう

Blenderでの調整やUnityでの確認も済んだので、実際に調整してみましょう。

やることとしては簡単で、スカートのボーンにDynamic Boneを適用して脚のボーンに作成したコライダーと紐づけ後、再生ボタンを押してDynamic Boneが動いてる際スカートの形が変わってないか確認するかを延々と繰り返すだけです。

 

1.スカートのボーンにDynamic Boneコンポーネントを適用してみよう

最初は身体から見て真正面位置にあるスカートのボーンにDynami Boneコンポーネントを適用します

 

Dynamic Boneの設定ならやったことあるわーでチャチャっと適当にやっちゃわないように気をつけて欲しい事があります。

上図を見てもらえればすぐにわかるのですが、白円が上は3つで下は2つになっていると思います。

例えば、Dynami Boneは頭から1-2-3と繋がってるオブジェクトに対し1番に適用した場合、揺れ始めるのは2番目のオブジェクトからになります(間違ってるかも?要確認した方がいいかも)

1番から揺らしたい場合は0-1-2-3という構成にし、0番にDynamic Boneを適用しないと1番から揺れ始めないです。

となりますので、膝の上にスカートを載せたい場合、上はいけそうでも下は絶対に無理です。

断言しますが絶対に無理です!

設定する際は、あらかじめBlender等でスカートのボーンをまとめた親ボーンを作っておいてその配下に入れるか、Unityの方でHips配下に空オブジェクトを作成後にスカートのボーンをドラッグアンドドロップで移動しておきます。

画像右側のInspectorより、Dynamic Boneのルートには親グループ(今回ならVC Skirt Group)をドラッグアンドドロップし、Exclutionsに真正面以外のボーンと親グループのオブジェクトをドラッグアンドドロップします。

これらをPrefabの状態から弄ってもいいですが、そのPrefabにどのような設定をされているか把握できてないと変な挙動をする可能性もありますので、FBXファイルに設定していきます。

 

2.身体の正面にあるスカートのボーンとコライダーの設定をしてみよう

 一気に全部やると頭がこんがらがってしまうので、とりあえず身体の正面のボーンから設定してみようと思います。

 

簡略的な図で言うなら1/2/3のスカートのボーンと脚のコライダーの紐づけになります。

 

身体正面部のスカートボーンにDynamic Boneを適用した感じ

 

ほぼ真横にあるスカートのボーンは始めは触らなくて大丈夫です。

時計で言うなら10時方向から2時方向あたりのボーンにDynamic Boneを適用します。

次にこれらのボーンを押し出す係のめっちゃデカいアウトサイドコライダーを右脚と左脚の両脚配下に1つずつ作成します。

(Unityの上側にある再生ボタンを押してみてDynamic Boneが動いている状態で、脚を動かしてないのにスカートのボーンが動いてないかも確認しましょう)

この時、円の最大外周(直径)になる部分が身体の中央にあるようにする事と右脚と左脚のコライダーの位置が目視で大体同じ位置になっているようにする点を意識して作成してください。

今回は身体から離れた位置での調整なので楽ですが、身体に密着したようなミニスカートやロングタイトスカートだと調整に時間はかかる一方で、より使いまわしの効くコライダー設定になるので耐えましょう。

※②-2の項目でスカートのウェイトが何色か確認したと思いますが、コライダーがスカートのボーンに当たった時の挙動はウェイトが1に塗られている場合の方がやりやすいです。

 

 

 

 

いつもTwitterばかりであまり長い分を書かないので今日はここまで...

これくらい書いておけば残りはググって引っ掛かる記事を参考に両脇と後ろ部分の設定するだけですが、後日まとめさせていただきます。

長い上にわかりづらいという感じですが、質問あればTwitterでもVRCでもDiscordでも聞いてもらえれば説明と実践できますのでお気軽にお声掛けください(もちろんお金取りませんよ!)



あくえり「(今日はお腹の調子がすこぶるいいし、金曜日なのでお酒が飲みたいんだ)」