自作アバターや衣装を作ったけど、髪とかスカートの揺れの設定がいまいちよくわかんないな…
揺れの設定できたけど髪やスカートが貫通しちゃう…
誰も通る道であるVRChatのアバターの揺れ物の設定。私もよく自作アバターを作るときphysboneを設定をしますが
いつも何となく感覚で設定してたので今回はブログに記録を残すことにしました。
まず初めに
動画内で右クリックでその項目ないよ?ってなると思うんでここからダウンロードしてインポートしておいてください。
再生中に値をいじって止めたら元に戻っちゃったという悲しい事故を防ぐためのものです。
PhysBoneの値や位置を再生中でも記録してくれます。
https://assetstore.unity.com/packages/tools/utilities/play-mode-saver-104836
設定の仕方
youtubeにphysboneの設定の仕方を投稿しました。こちらの動画を参考にしてみてください。
動画が役に立ったら高評価&チャンネル登録をしてくれると嬉しいです!
自分用のメモ。
動画では細かいパラメーターの説明までしてないので、どこの値をどれくらいいじればどう変わるのかのメモです。
ボーンの数によって値も変わってくるので動画の通りにやったけど揺れ方が違うな?と思ったらパラメータ見て値を調節してみてください。
間違ってるかもしれないから参考程度に見て、自分で動きの確認をしてみてね!
【Transformsの項目】
・Root Transform
PhysBoneの起点。基本はNoneでOK。
スカートは基本、根本ボーン(一番上)にコンポーネントをつけるから、空欄のままでいい。
例えば羽や尻尾の付け根とかあまり揺れて欲しくないところがRootの場合は、その下のボーンを指定したりする。
・Ignore Transforms
ボーンの中でこのボーンは揺らしたくないなというものがあればSizeを1にしてそのボーンを指定すると、その設定したボーンの下全部に適応されるっぽい。
そのままだと見た目がわからないからLimitをNone以外にして、CollisionのRadiusの値を変えてみると見た目がわかると思う。基本的には何も設定しなくてOK。
・Ignore Other Phys Bones
オンの状態だと他のPhysBoneの影響(お互いの干渉計算)を無視する。
別のPhysBoneが下の階層にある場合とか、スカートのように隣のボーンに干渉させたい場合はオフにするらしい。でもいままでオンの状態でも特別問題なかったし、差がよくわからない。
・Endpoint Position
どこまでがボーンなのかを指定するやつ。例えばボーンが1本しかなくて揺れないなんてときにYの値を0.1とかにしてみるとボーンがちょっと伸びるのがわかる。
スカートの裾とかコリジョンが少し足りないときなんかにYの値を増やしてみるくらい。
ボーンが見えないときはLimitをNone以外にして、CollisionのRadiusの値を変えてみてね。
・Multi Child Type
1つのボーンで枝分かれしている、複数の子ボーンがあるときの扱いをどうするか。
でも今まで揺れ物のボーンでそんな複雑な構造見たことないんで、基本デフォルト(Ignore)のままでいいと思う。
【Forcesの項目】
・Integration Type
Simplifiedはシンプルで項目が少なめ。リボンとかチェーンなどのちょっとした小物の揺れとかはこっちでもいいと思う。
AdvancedはSimplifiedより項目が多く、髪とかスカートとか揺れ方にこだわりたい人はこっち。
・Pull
元の形に戻ろうとする強さ。値が低いほど形が戻らないので柔らかくふわふわ~っとした動きになる。
値が高いほど元に戻る力が強くなるのでタイトスカートとかあまり揺れなくて形の崩れにくいスカートは値を高めに。
あんまり値を高くするとほぼ揺れなくなる。
・Spring(Integration TypeがSimplifiedの時)
バネっぽさというか、戻るときにどんな感じで揺れるか。
値が低ければふわふわした感じに(pullの値にもよる)
値が高いとバネやゴムみたいにビヨンビヨンと固い感じになる。
・Momentum(Integration TypeがAdvancedの時)
Springと同じ感じでバネのように揺れ戻る感じを設定する項目だけどもうちょっと複雑?
値が低いと揺れる時間が長くなる。水中にいるときみたいに重くてゆったりした動きになる。
値が高いと揺れもすぐに戻る感じ。バネっぽさが強くなって固い感じになる。
・Stiffness
揺れたボーンの形をどれくらい維持するか。どれくらいの強さで元に戻るか?
値が低いと機能しない。戻る力がないから大きく揺れ動く。
値が高いとそのボーン位置を維持しようとするのでボーンがほぼ動かなくなる。
・Gravity
重力。髪とかケモミミとか下向いたりしたときにどれくらいその方向に垂れ下がるか
値が高いとぺしゃっと形が崩れてしまうので、ふんわりした髪やスカートならあまり強くしない方がいい。
・Gravity Falloff
止まってるときにどれだけ重力を弱めるか。Gravityの値が0の時は使えない。
値が高いほど重力が弱まるので元の形(Gravityが0の状態)に近づく
値が高いほど(0に近い)重力が強くなるので、Gravityで設定した値の通り髪やスカートがだるーんと垂れ下がる。
・Immobile Type
アバターが移動したときの揺れの動きの抑え具合とその対象。
All Motionならすべての動きにそのImmobileの値が適応される。
Worldならワールドを移動する時だけ影響を与える。モーションとかには影響を与えない。
・Immobile
動きをどれだけ抑えるか。数字が大きいほど揺れなくなる。
例えば歩くたびにスカートがめくれてパンツが見えるのが嫌ならImmobile TypeをWorldにしてImmobileの数値を高くすればスカートが揺れにくくなる。
【Limitsの項目】
・Limit Type
揺れる範囲をどんな形にするか。
Noneだと特に制限なし。短いケモ耳やちょっとしたアクセサリーなど貫通の心配がないものはシンプルなこれでもOK。
AngleはMax Angleで指定した値の範囲に揺れる。長い髪や尻尾はこれを使うことが多いかも
Hingeは一定方向にしか揺れないものや揺れが少ないものに使う。前髪とかミニスカートとか。左右には揺れて欲しいけど前後には揺れて欲しくないときなんかに。
Polarは球体の一部みたいな。球体内のこの角度だけ範囲って感じだけどあまり使ったことはない。
あとはPitch、Roll、Yawでそれぞれ角度を細かく調整。
【Collisionの項目】
・Radius
コライダー(衝突判定)の大きさ。ボーンの数にもよるけど、とりあえず0.01~0.03くらいにしてみてコライダー同士が重ならないくらいの大きさにすればOK。
・Allow Collision
衝突判定を有効にするかどうか。基本的にTrueのままでOK。
でもデスクトップの場合、手に判定があるのでスカートに手が当たってスカートが崩れる可能性はあり。
スカートや胸に触りたいならTrueに。触ってほしくない場合はFalseにって感じ・
【Collidersの項目】
・Size
コライダーの数。例えばスカートなら左足、右足、お尻あたりにコライダーをつけてスカートを貫通させないようにするならSizeを3にして、それぞれのコライダーをElementに指定する。
【Stretch & Squishの項目】
・Stretch Motion
ボーンが伸び縮みして揺れる動きの強さ。動いたときにどれくらい伸縮するか。
普通のスカートや髪なら必要ないから0でOK。
動くたびに耳やしっぽがビヨンビヨン伸び縮みしてほしいなら数字を大きくする。
・ Max Stretch
引っ張ったときや動いたときにどれくらい伸びるか。 数字が大きいほど伸びる。
・Max Squish
引っ張ったときや動いたときにどれくらい縮むか。数字をいじってみたけどあまり見た目に大きな変化はないような?基本的に0でいいかも。
【Grab & Poseの項目】
・Allow Grabbing
そのボーンをつかめるかどうか。デフォルトで手に判定があるので、スカートや胸を掴まれたくない場合などはFalseにしておく。
・Allow Posing
掴んだボーンを固定できるかどうか。基本的にFalse推奨だけど、長い髪とかケモ耳とか引っ張って固定して遊びたいならTrueでもOK。
・Grab Movement
ボーンをつかんだ時にどれだけ動かせるか。この辺の値は特にいじらなくてもいいかなぁ。
・Snap To Hand
掴んだ瞬間、ボーンが手にぴたっとくっつくかどうか。特に必要ないと思う。
あとその下のOptionsはギミックとかでパラメーターを指定することでオンオフとかphysboneの状態を変えられるらしいけど、基本的に何も入れなくてOK。
Is Animatedはphysboneをアニメーションとして動かすときに使うらしい。
Reset When Disabledはphysboneをオンオフと化するときに元の位置に戻すかどうか。そういうギミックがないならオフの状態で問題なし。
Gizmosはphysboneを表示するかしないかと、そのボーンや角度(Limit)の透明度を変えられる。
physboneが多すぎてアバターが見えづらいときなんかはShow Gizmosをオフにしたり、Opacityの値を下げたりしてみるといいかも。
こんなときに
値とかいちいち覚えてられねえし、こういう時どこをいじれば解決するんだよ!
という用のメモです。だいたいみんな躓くところってこの変だと思うので困ったら見てね。
全く揺れない。ボーンが表示されない
ボーンが1本しかない場合に起こりやすい現象。
Blenderに戻ってボーンを2本以上にするか、Yの値を0.1とかにしてみれば動くかもよ?
揺れが固い、または揺れすぎる
Pullの値が小さいほど大きく揺れて、値が大きいほど揺れが固くなります。
VRC内で歩いたときにスカートや髪が動きすぎるときはImmobileの値を大きくしてください
逆に硬すぎる場合は値を小さくすると歩くたびに髪やスカートがひらひらゆらゆらします。
Immobileの値を大きめにするとき、普段歩くときはあんま髪やスカートは揺れてほしくないけど、MMDワールドとかダンスモーションの時はふんわり揺れてほしいときはImmobile TypeをWorldにしておく。
貫通する、めり込む
Colliderが小さいかサイズ位置があっていない。
Colliderのサイズを大きくしたり、足や体な度に合うように位置を調節してみること。
あとはPhysBoneのRadiusが小さかったりColliderのところにそのコライダーを設定し忘れていることも。
スカートの場合はボーンの数が足りてない、または多すぎて足の隙間から落ちて貫通することもある。
スカートのボーン数は8本から12本くらいがベストと言われてますね。
Hingeの時にボーンが綺麗にそろわないときは座標軸が揃ってない可能性があるのでBlenderで見直してみるのもあり。
髪やスカートを掴まれたくない、引っ張られたくない
PhysBoneの触れる判定はこの辺。
自分やほかに人も触れるようにしたいときはAllow CollisionをTrueにしておく。
触りたいけど、掴まれたくないときはAllow GrabbingをFalseに。
Allow CollisionはFalseならそもそもつかめない。
触ったりつかんだりはしていいけど、固定されたくないときはAllow Posingをfalseにしておく



コメント