ダイナミックボーン(DB)を使った貫通に強い揺れるスカートの作り方
読まなくても問題ないところはグレーになってます
要点だけ知りたい人は黒字だけ読んでね
#Unity
— ANDE (@ANDE0919) November 14, 2019
ダイナミックボーン使ったスカートの貫通問題解決できた(多分)コライダーも4つだけでとても簡単
DBであればVRChatでパンツ丸見えになることもない
①スカートのボーンを全選択してどっかの軸方向(A)に動かすときれいに広がるようにボーンを作る
②DB設定のfreezeaxisを(A)にする
つづく↓ pic.twitter.com/rqJTTrWwKr
仕上がりはこんな感じ
貫通もなくめくれてもちゃんと元に戻るのでよし
前提
VRChatユーザー向けです。
(他で動作確認はしてないってだけ)
あとまだ自分自身がunityいじりたてなので最適解ではないことも書いてあると思われます
「こんなやり方もあるんだな~」程度に読んでね
やり方
①骨の作り方
今回のやり方は下準備が大事です。
今回使用してるモデルは16本(縦)×3段階(横)の計48本使っています
このくらいの段階割っておけば回った時とかきれいにピラピラします
数はお好みで良いです、が、ボーンの隣同士の間隔は揃えた方が後で楽です
骨の数が多いほど後のコライダー調整が楽で動きがきれいになります
ここらへんは手間や描画負荷と相談してください
ボーンを作りウェイトを塗れたら次です
スカートを上から見た様子
ボーンの座標軸を表示させてください
上の図では全部のボーンのz矢印がきれいに内側を向いてます
「いや軸バラバラだが?」という人は編集モードでスカートのボーンを全選択してボーンロールの再計算を行ってください
「ローカル+Xタンジェント」ってやつがいいと思われます
再計算をするときれいに軸が揃います(揃わなかったらごめん)
この状態でポーズモードに切り替え、スカートのボーン全選択してマニピュレーターを回転、座標系をローカル、にしてX軸を回転させると・・・
こんな感じにブワッと広がります
ウェイトミスとかもここでわかるので便利
(最初根本のボーンが上に動くけど仕様?なのでAlt+Gで直してください。これ防げないのかな)
②スカートのパラメータ設定
スカートのボーン全部にDBコンポーネントを入れます
パラメータはこんな感じです
↓の方のツイートを参考にしました
たぶん自分史上一番うまく決まったと思うスカートのDynamicBone設定の一例。数値自体はFBXのスケールによって変わるけど、
— Shavarkoon (@Shavarkoon) August 17, 2019
・Damping高め(振動抑制)
・Elasticityちょい下げ(ふんわり動く)
・StiffnessとInertは腰で最大、裾で最小になるようグラフで調整(裾に近づくほどよく動く)
という感じ。 pic.twitter.com/gK3T0EItWn
Gravityは大きくすると重力が効きすぎて貫通の原因になるのでこれくらいのふんわり重力がいいと思います
そしてfreeze axisをxにします←重要
これでボーンがx軸でしか回転しなくなります
このために軸を揃えておく必要があったのです
DBはfreeze axizで軸を固定しないと縦横無尽に動き回ります
軸を固定していないボーンは足のコライダーに引っかかっても滑り落ちるのでどうしても貫通が発生します
DBスカートの貫通対策は「いかにボーンの間をコライダーがくぐらないようにするか」にかかっています
【結構面倒!】Dynamic Boneで揺れるスカートの、脚が貫通することを防ぐ対策方法解説書出来ました
— 呟鷹のヒヨ@VRCを旅する3Dモデラー (@Hiyo_4tweetECO) November 4, 2018
【注意】
ある程度Unityの知識を持っていること前提の書き方してます。
正直調整は面倒ですし、Dynamic Bone Colliderも相応な数使います。
ただ、貫通防止力は確かに高いです。 pic.twitter.com/35KZ01u815
↑の方は軸固定は使ってないようです
今回の自分の方法だと軸を固定している為ロングスカートなどに見られる回ったときに裾のほうが少し遅れてついてくる、という表現が出来ないです
なので「横にもヒラッてなるスカートが作りたい!」って方は↑の方のツイートを参考にしたほうが良いのかもしれません
これでボーンが横方向に滑り落ちなくなったので今度はボーンの間と間を塞いで無敵になります
上から見た図です
スカートが目一杯広がった時にボーンのradiusが重なり合うくらいの大きさになるまで微調整します(上の図はあんまり綺麗じゃないけど)
スカートの根本から裾にかけてラディウスが大きくなるようにradius distribを右上がりのグラフにして数値を調整します
ボーンが多いとこのラディウスが小さくてすみ、コライダーに当たったときの動きが滑らかです
これでスカート側の設定は終わりです
③コライダーの設定
コライダーは全部で4つです
コライダーはボーンに直付けではなく空のオブジェクトにDBコライダーコンポーネントを入れて足ボーンの子に入れるなどしてください
直付けより調整が楽です
足のコライダーです
高さは適当で、大きさは横から見た時スカートのボーンのラディウスとギリ触れ合わないくらいに調整
若干後ろ側に寄せておくと座ったときに正面からパンツが見えづらくなります
横面で調整したら今度は正面から見た時スカートのボーンと触れ合わないように調整します
この時足コライダーの大きさ(ラディウス)は変えないでください
大きさを変えるのではなく内側に並行移動して調整してください
この時左右足のコライダー同士が半分くらい重なっているとスカートの真ん中のボーンが足の間をすり抜けなくなるので良いです
あと2つのコライダーはhipに入れました(上から2つ、一番したのは足コライダー)
足のコライダーだけだと高さ的にスカートがめくれた時ボーンがコライダーの上に乗ってしまいます
それを防ぐために足より大きなコライダーを足より上に配置して、スカートが捲れてもボーンが腰のコライダーに当たって下に滑り落ちてもとに戻るようにします
正面
なぜ2つあるのか、コライダーの間に隙間があるとボーンが挟まるからです
いや絶対入れないでしょってとこにも積極的に挟まろうとするのでコライダーで壁を作ってやります
慈悲を与えないでください
おわり
お疲れさまでした。つかれた
— ANDE (@ANDE0919) November 15, 2019
コリジョン付き動画
いつかロングスカートとか長いコートとかも作りたい
今回使用したモデルです
2019年内には発売するので宜しくおねがいします