[0.x系]VRMSpringBoneにおけるゲーム内移動時のスカート貫通対策についてのメモ
どうも!めんどすです。アバター作りははかどってますか?
スカートはふわふわしてると可愛いですよね!
え?走ると丸出しになっちゃう?
そんな方にVRMSpringBoneのあまり知られてない挙動について書きます。
そもそもなぜ貫通してしまうのか
上のClusterでの写真のようにスパッツが貫通して丸見えになっています。
コライダーの設定をしたのに!
Stiffness Force( 剛性、元に戻る強さ)
Gravity Power( 重力の強さ)
Gravity Dir( 重力の向き)
Drag Force(抵抗力、強いと動きが鈍くなる)
4つのパラメータをいくら弄っても上手く行かない!
何故貫通してしまうのか
これは、モデルの体の動きによる揺れだけでなく、ワールド内の座標移動も揺れに影響しているからなんです。
Settingsの5つ目 Center の役割
Center【None(Transform)】になにかObjectを突っ込んでみたら、Unity上でモデルを動かしても全く揺れなくなった!触らないでおこう・・・
という方もいると思いますが、このCenterが大事
ここに何かアバターを構成しているObjectを設定すると、設定したObjectとrootboneとの相対関係によって揺れるようになります。
なのでUnity上でモデル全体を動かして揺れなくなったのは正常なのです。
基準となったObjectも一緒に寸分たがわず動かせばrootboneからすれば全く動いていないように見えるため揺れないのです。
Center に設定してはいけないもの
Centerと聞いて 髪の毛だとHead、スカートだとHipsを入れたくなってきますが、これらをやると完全に固まってしまいます。コライダーで干渉する以外に揺れなくなりますので注意しましょう、なぜなら前述の相対関係が直接rootboneと繋がってるため変化しないからです。(これの性質を逆に利用すると面白いものが出来そうですが)
本題
空のGameObjectを作ってCenterに設定し座標移動時(コントローラー移動等)の揺れだけを無くす
1.GameObjectの追加
Hierarchyに置いてあるVRMモデルを右クリックしメニューを出し
Create Enptyをクリックしましょう、GameObjectが追加されます。
2.Centerに設定する
secondaryをクリックしてInspector内のスカート等のVRMSpringBoneの中のCenterのNone(Transform)にGameObjectをドラッグアンドドロップしてください。
・動作確認(Unity上で確認したい人だけ)
Unity上でモデル全体を動かしてみてください、追加したGameObjectも一緒に動くのでCenterの設定をしたSpringBoneが揺れなくなったはずです、これで揺れたらGameObjectがモデルの外にある可能性があります。
つぎに一つ下の階層のHipsを選んで動かしてみましょう、追加したGameObjectは動きませんので、Center設定をしたSpringBoneが揺れているはずです。
HipsではなくGameObjectだけをうごかしても対象のSpringBoneが揺れます。(面白い)
最後にUniVRMでエクスポートしてください
これでジャンプや走るなどの激しい移動を伴うVRM対応ゲームでスカートの動きがある程度制御可能になったと思います。
余談
なぜ空のGameObjectを追加するのか
モデルを構成するメッシュやボーンは動きます、それらが揺れの基準になると想定外の揺れが起きるかもしれないので、モデルから切り離されたGameObjectを追加することで座標移動時のみ影響を消すことができるし、さらにこのGameObjectの動きで揺れを制御することができるかもしれません。
色々工夫すれば面白い動きをするかも!
2022/05/05
パスパルトゥー2で
・前髪、ネクタイ、スカートをアバター基準での揺れにしたもの、走っても自然に揺れてかわいい
・なにもセンターに設定しなかった場合 前髪はめり込みスカートはめくれてカボパンが丸出しになってしまいます、キャー><
2023/04/06 追記
参考
公式のCenterの記述がある場所↓
CenterがNoneの時は、ワールドの原点位置を基準にして揺れるということが記述されています。
Centerについて詳しく調べるきっかけになった記事↓
サンフラワーふじさんに感謝
Center以外のパラメータの設定はこちらを参考に↓
この記事が気に入ったらサポートをしてみませんか?