製作日誌(仮)

とらいくの製作日誌です

VRChatで使えるClothコンポーネントを用いた貫通しないスカート

先日作成したモデルでVRChatに出没しているんですが

 

f:id:trike1236:20180528044258p:plain

スカートだと座ったり走り回るときにガッツリ貫通してアレな感じになります

 

VRChat上でこういった問題を回避するにはunityアセットのdynamic boneを使う(有料)、Clothコンポーネントを適用させる、スカートを脱がせる等の方法がありますが、

今回はUnity5で新しくなったclothコンポーネントを使ってイイ感じに貫通しないスカートを目指します

というかぶっちゃけdynamicboneでスカートの貫通を防ぐ方法は調節が鬼すぎてメチャクチャ厳しいのでやめたほうがいいです 心が死にます(いい感じに設定する方法あったら教えてください)

 

〇Clothコンポーネントとは

完全に丸投げですが以下のUnityの中の人の記事が詳しいです

blogs.unity3d.com

要はそのオブジェクトのメッシュに布っぽい挙動をさせることができる機能です

通常だと重力でそのまま下に垂れ下がりますが、メッシュの各点を一定の力で拘束したり足のボーンにコライダー(当たり判定)を仕込むことで物体が貫通するのを防ぐことが可能になります

 

〇Unityで実装してみる

今回はBlenderで作成したモデルにclothを適用させていきます

clothコンポーネントをアタッチするオブジェクトは体などと分かれている必要があるため、事前にBlender等で分離しておきます(MMDモデル等でもblenderのアドオンでオブジェクトの分離は可能です)

 

揺らすものを別オブジェクトにしたらfbxで出力してUnityにぶち込みますが

そのままclothコンポーネントをアタッチすると何故かメッシュが伸び切ってメチャクチャに暴れます

f:id:trike1236:20180528054638p:plain

どぼぢで

 

雰囲気でモデリングをしているので理由はよく分かりません(環境Unity5.6.3p,Blender2.79)

BlenderからそのオブジェクトのArmatureモディファイヤーで適用させると上記の問題を回避できました

 

f:id:trike1236:20180528055622p:plain

モディファイヤーが残っている状態です

 

f:id:trike1236:20180528055626p:plain

ここからモディファイヤーを適用させることが出来ます

 

 

問題なくUnityに取り込めたらスカートのオブジェクトを探してclothコンポーネントをアタッチします(自分の環境ではお尻ボーンの下にありました)

 

そのままだとどこにも固定されていない状態でスカートがずり落ちてしまうのでEdit Constraintsからスカートの根本を固定します

f:id:trike1236:20180528060421p:plain

 

根本は完全に固定、前と後ろだけ真ん中の部分もちょっと強めに固定すると激しい動きによるスカートの裏返りを抑えられる感じがします

f:id:trike1236:20180528060654p:plain

 

 

自分のclothコンポーネントの設定は以下のようになりました

実際に自分でアニメーションを適用した状態で再生しながら調節すると良いと思います

f:id:trike1236:20180528061321p:plain

 

あとは足のボーンの下に3Dオブジェクトのsphereを2つずつ置き

f:id:trike1236:20180528064636p:plain

f:id:trike1236:20180528062222p:plain

スカートのclothコンポーネントの下の方にあるコライダー設定のところにぶち込みます

f:id:trike1236:20180528062227p:plain

FirstとSecondに設定することで球の間にも円錐状のコライダーが生まれます

球の径はちょっと大き目にしておくと暴れまわっても貫通しにくくなります

 

 

このとき気を付けなければいけないことに

  • 球のメッシュを削除する
  • 球のオブジェクトすべてを非アクティブにする

 の2つがあります

 

1つ目はメッシュを残したままにするとVRChat上でも表示されてめちゃくちゃダサいことになります

f:id:trike1236:20180528063312p:plain

丸付けたとこを削除しておきましょう

 

(追記)

空のオブジェクトに球コライダーを足したものを使うとメッシュ削除などの手間が無くて簡単かもです(アドバイスありがとうございます)

 

 

2つ目はアクティブなコライダーが残ったままVRChatに行くと、空中で浮いた状態で回転して動けなくなります(めちゃくちゃ酔う)

アクティブなコライダーどうしがぶつかり合っているのが原因っぽいので、コライダーを持つオブジェクトをすべて非アクティブにしましょう

f:id:trike1236:20180528063445p:plain

ここのチェックを外します

 

以上で足がスカートを貫通しなくなるはずですが、椅子から立ち上がったり激しく動き回るとスカートが足の間に挟まったり裏返って戻らなくなることがある場合は、コライダーを増やして設定するといい感じになりそうです

f:id:trike1236:20180528064456p:plain

自分は腰ボーンの下に縦長のカプセルコライダーを置きました

 

f:id:trike1236:20180528070410g:plain

上手くいきました!

ワールドの読み込み時にも浮いたり回ったりしないので大丈夫そうです

 

歩き回るたびにスカートから足が見えるとせっかくのモデルが勿体ないので ぜひおためしください

 

ついき:

記事ちょっと伸びたのにVRChatのフレンドが増えません!!!!!!!

現在2人しかいないので気軽にフレンド飛ばしてくれるとうれしいです~~~~~~~~~~

ID:trike1236

よろしくおねがいします