2022/04/25 追記
VRChatでPhysBoneが実装されました。
この記事は3年以上前の古い記事で、現在の仕様と必ずしも一致しているわけではないので、他の方の記事を見る事をお勧めします。
元々の記事
11月11日にセールがあり、Dynamic boneを半額で入手しました!
課金するからには使いこなせるようになりたいもので
日々、unityと和解を繰り返してきましたが、
ついにスカートにDynamic bone導入します。
スカートをひらひらさせつつ、身体貫通したり
パンシ見せないようにするのには、大体ClothかDynamicBoneが使われます。
個人的な所感では、Clothで実装するほうが圧倒的に簡単です。
理由はClothは面で実装されるのでコライダー(Colliders)による
衝突設定が簡単なのです。
しゃがんでもこの通り。
でもClothはひらひら感がなくなってしまう。
そこでDynamic boneでの実装です。
内容はほぼこの方法になります。
【結構面倒!】Dynamic Boneで揺れるスカートの、脚が貫通することを防ぐ対策方法解説書出来ました
— 呟鷹のヒヨ (@Hiyo_4tweetECO) November 4, 2018
【注意】
ある程度Unityの知識を持っていること前提の書き方してます。
正直調整は面倒ですし、Dynamic Bone Colliderも相応な数使います。
ただ、貫通防止力は確かに高いです。 pic.twitter.com/35KZ01u815
これまでのコライダーでは、設定したエリアに侵入させない方法でしたが
今回の方法は、設定したエリアから離さない方法になります。
Clothと違いボーンは面じゃなくて線の動きになっちゃうのでよけてしまうのです。
hitogataの場合、スカートのボーン構成数が8個で
0から反時計回りに設定されてます。
コライダーの設置
- 足の直下にEmptyObjectを設置します。
- リネームします。
今回はDynamicBoneColliderの略でDBCのLeftかRightの適合するボーン番号の規則にします。 赤丸を参考にリネームしてみてください
- Dynamic bone Colliderを設置します。
選択された状態で青丸を選択しInspectorに投げ込みます。
ダイナミックボーンの設置
- Skirt_0_0からSkirt_0_7まで選択した状態でDynamicBoneを入れます。
- 一つ一つのダイナミックボーンに設定を入れます。
ここではSkirt_0_2に入ったダイナミックボーンについて設定します。
Root:動かしたいボーン。基本自分自身を参照するとよいです。
Radius:ボーンが可視化されます。テストで動かす際に便利
Colliders:影響を受けるコライダー。左足の2番ボーンなので、左足の2番用コライダーを設定します。
Skirt_0_0からSkirt_0_7までぜんぶやってね。
パラメーターの調整について
ここではボーンの2番について記載します。ほかの0から7までやることは変わりません。
- DynamicBoneColliderの設定を行う。
画像ではSkirt_0_2のDynamicBoneに設定したColliderがDBC_L_2なので
DBC_L_2の設定を行います。
BoundをInsideにすると紫色になります。
スカートの斜線の青い線を参考に、近づけます。
赤い枠の中を青いボーンが自在に移動します。
青いボーンがわくから出ようとすると引き戻されます。
同様の設定を0から7まで全部やります。
0ならこんな感じ
7ならこんな感じ
全部やり終わるころにはすごいことになってますが、それであってます。
ちなみに1と3でDynamicBoneColliderのパラメータが
かけ離れてしまいますが、それで問題ありません。
3,4,5はお尻の膨らみを含めて設定する必要があるためです。
ダッシュすると透けるよ。
おまけ
細かい微調整について。
実際VRChatに入って操作するとunityとかなり挙動が違い
延々と微調整することになります。
そこで微調整の役に立ちそうなものを列挙します。
Root:揺れ始めるボーンを下にする事で、上が揺れなくなります。(青丸部分)
Gravity:走った時に捲れすぎるときは、ごくわずかに設定しましょう。
(入れすぎるとふんわりしなくなります。)
あと、DynamicBoneColliderのRadiusを変えて動く範囲を変えてあげる方法もあります。