見出し画像

PhysBoneでスカートの貫通対策をする Ver2

前回の解説の貫通対策を更に強化して最適化した内容です。


最初に

この解説はVRChat SDKに含まれるPhys Boneを使用した解説です。
他の揺れものComponentではLimitの機能次第では再現できない可能性があるのでご注意ください。


やってること

Skirt用にボーンを配置する

Rootボーンを作る

両足に2つの合計4つのPBColliderを実装

RootボーンにPBComponentを実装してCollider割当

Skirt1つに使用するPBComponentはたった1つだけ


座りはもちろん、斜めの貫通も調整次第でしっかりとできる。
慣れれば実装も簡単。


条件について

スカートは足より一定の間隔を開けて造形する必要がある
極端に足との感覚が狭いとColliderサイズが小さくなり貫通しやすくなる為

対応できないスカートの条件としては
・タイトは駄目
・膝下より長いロングは難しい

その他応用としては
・ぶかぶかの裾や袖にも応用できる


手順 Blender

まずは条件に合うスカートを用意する
ポリゴン数は画像ぐらい多い方が滑らかかつ貫通しにくい


スカートのメッシュにそってボーンを配置する
Component数は気にしないでいいので14本ベースで7分割とした
※白衣重ね着をさせるのでボーンが長いが気にしないでね


ウェイト転送用メッシュを作る
縦はボーンにそって、横はボーンの真ん中に切り込んでいく


ボーン1本ずつにウェイトを塗っていく


一番下はボーンより長くメッシュを伸ばす
そして一番下まで塗っておくことでウェイト転送時に下だけ転送できない問題を回避する


一番上はHipsやSpineのウェイトは塗らないでおく
再転送や他のアバターへ使用する際に余計なウェイトが転送させるから不要である


スカートにデータ転送モディファイアを追加し、先程作成したウェイト転送用メッシュを割当画像のように設定してデータレイヤーを生成させる
ウェイトが気に入らない場合はウェイト転送用メッシュを塗り替えたり動かして再度これを繰り返す


ポーズモードで綺麗に動けばok


ボーンロールを設定する
この角度は大変重要なので画像の角度をそのまま再現するイメージで設定する


真上から見るとこんなイメージ 手前が前になる


ボーンを選択して3Dカーソルを配置したら、アーマチュアのボーンロールから再計算でカーソルを選択する
これで3Dカーソルを基準にロールを再計算してくれる

Componentを1つにする代わりにロール設定は基本的にBlenderで行う
スカートの上がる角度が気に入らない場合は上記のボーンロール設定を調整する


手順 Unity

今回はアバターにスカートを着せている前提となるが、着せ替え衣装などにももちろん同じことができる。

Hierarchyのアバター内へ任意のEmptyを作って足用Colliderを両足2つずつ作る
ここにそれそれPBCollider Componentを追加する

Armatureへ直接割り当てても動作するが、ボーンをいじってFBXを上書きした際に消し飛んだり再設定が面倒なので分離しておくことを推奨


足のColliderは可能な限り足にぴったりサイズに調整する


斜めの角度も注意して調整する
この時、前の方が足の可動域的に重要なので前に合わせる
また、後ろにはみ出す分ははみ出していた方が貫通対策になるのでむしろこのままでok


足を曲げた時にお尻の方へ飛び出さないように高さに注意すること
上に長過ぎると足を曲げた際にお尻部分をColliderが貫通する


仕上げに両足それぞれ足の間付近へColliderを1つずつ追加する
これは足を斜め内側へ上げた際の貫通を軽減する


DynamicにSkairtを作る
その中にPBComponentを追加


LimitsはHingeにしてお好みの数値にする
Collisionはプレイモードに入ってスカートが暴れない程度へ
必要があればカーブで根本を小さくする
Collidersへ先程作った4つのColliderを割り当てる


適当に動かして貫通しなければ完了


解説は以上

以下宣伝

うちのBoothです。
買うなり何なりしてくれると嬉しいです。

いいなと思ったら応援しよう!