【VRChat】アバターのスカートが「貫通する」「めくれる」問題の直し方!(PhysBone設定)

「めっちゃ可愛い改変できた!」と思ってVRChatでテストしていたら、スカートが捲れてしまったり、足がスカートを貫通してしまったことはありませんか?

せっかくの可愛いアバターがなんか残念な感じになってしまいますよね…

本記事では、スカートの貫通する問題」「めくれる問題の直し方を丁寧に紹介していきます!

なつきなつき

本記事ではPhysBoneの設定をしていきます。少し難易度が高いかもしれませんが、できるだけわかりやすく解説しています!

スポンサーリンク

スカートが貫通する問題について

左側が正しい設定・右側が貫通問題

上の動画のように、足などがスカートを貫通してしまう時があると思います。
この問題は、コライダー(当たり判定)の設定不足が原因であることが多く、正しく設定すれば改善できます。

スカートが貫通する原因

主に以下のことが原因であることが多いです。

  • 足などにコライダーが入っていない
  • コライダーが小さすぎる
  • スカート側のPhysBoneにコライダーが登録されていない

コライダーやPhysBoneがわからない方は下を開いてご覧ください👇

コライダーとは?
写真の緑の線がコライダーを可視化したもの

コライダーは当たり判定のことです。
PhysBoneのコライダーは「スカートが足に当たったら、それ以上めり込まないように止める」ためなどに使われます。

PhysBoneとは?
写真の白と青色の線がPhysBoneを可視化したもの

PhysBoneは「揺れ物」や「布の動き」を作るための設定です。スカートや髪などの揺れを制御するため、以下のような項目が用意されています。

  • 揺れの強さ
  • 元の位置に戻る力
  • 形を保つ硬さ
  • 重力や空気抵抗
  • コライダーとの接触判定

これらの設定が極端になってしまっている場合「めくれる」「貫通する」という問題につながります。

スカートの貫通を直し方

① PhysBone Colliderがあるか確認する

まずHierarchyでアバターのArmatureを開き、足のボーンを探します。

今回使用している「ミルフィ」の場合は、「Armature」→「Hips」→「Upper_leg.L(R)」でした。

そのオブジェクトを選択して「Inspector」で「VRC Phys Bone Collider」がついているかを確認します。

  • ついている → ②-Aの工程へ(サイズの調整)
  • ついていない → ②-Bの工程へ(コライダーの追加)

ワンポイントアドバイス

オブジェクトのコンポーネントは一つ一つInspectorを確認しなければなりません。
しかし「lilEditorToolBox」を使用することで、Hierarchyから一目で何のコンポーネントが入っているかを確認することができます。(PhysBoneはC#)
詳しく知りたい方は過去の記事をご覧ください。

②-A コライダーサイズを調整する

コライダーのサイズが小さいと、スカートがすり抜ける可能性があります。なので、貫通してほしくない範囲まで少し大きめにします。

  • Root Transform:
    コライダーの基準となるTransformを指定します。基本的には「None」で大丈夫です。
  • Shape Type:
    コライダーの形状の指定です。
    • Capsule(カプセル)← 足のおすすめはこれ
    • Sphere(球体)
    • Plane(平面)
  • Radius:
    カプセル・球体の大きさを指定します。
  • Height:
    カプセルの長さを指定します。
  • Position:
    コライダーの位置オフセットです。
  • Rotation:
    コライダーの向きを調整します。
  • Inside Bounds:
    オンにすると、PhysBoneがコライダーの内側に入ろうとする挙動です。
    スカートの貫通対策ではオフ推奨です。
  • Bones As Spheres:
    オンにすると、ボーン1つ1つを球体として扱うようになります。
    スカートの貫通対策ではオフ推奨です。

②-B コライダーを追加する

コライダーがない場合は、足に追加する必要があります。

アバターにコライダーが設定されていない場合でも、衣装のArmatureにコライダーが設定されているときがあります。衣装のボーンも確認してみてください。

アバターの足のボーンを指定して「Inspector」から「Add Component」をクリックします。
検索欄に「VRC」と入力して「VRC Phys Bone Collider」を追加します。

項目の詳細やおすすめ設定は上の②-Aをご覧ください。

③ スカート側のPhysBoneにコライダーを登録する

Hierarchyからスカートのボーンを選択し「VRC Phys Bone (Script)」に足のコライダーを「Collider」にドラッグ&ドロップします。

衣装のボーンにもともとコライダーが設定されている場合があります。その場合は基本的に、貫通対策済みなのでこの手順は不要です。
それでもスカートが貫通する場合のみ、コライダーを調整するようにしてください。

④ 動作確認

歩行だけで確認せず、しゃがみやジャンプもチェックするようにしてください。
貫通が残っている場合は、②や③の工程などをもう一度行ってください。

PhysBoneを使用しているときにスカートが貫通する対策です。もともとスカートにPhysBoneが入っていない場合は、この方法では解決することができません。

スカートがめくれる問題について

上の動画のように、スカートがめくれてしまって下着まで見えてしまう時があると思います。
このような問題を直すことができます。

スカートがめくれる原因

大きく分けて以下の2つが原因であることが多いです。

  • PhysBoneの動きが強すぎる(重力・角度制限が弱い)
    → 走ったりジャンプしたときに、必要以上にぶわっと上に跳ねる
  • スカートのボーン・ウェイトが極端
    → 極端に1本のボーンだけに重みが寄ってると、そこでグリンッとめくれる。

「スカートのボーン・ウェイトが極端」という原因はBlender側の話です。なので、本記事では最後に少しだけ解説します。

スカートがめくれる問題の直し方

まずは、「スカートのPhysBone」を確認します。
HierarchyからアバターのArmatureを開いて、スカートのボーンを探します。(Skirt_Root, Skirt_001など
そのオブジェクトをクリックすると、Inspectorに「VRC Phys Bone (Script)」というコンポーネントがついているはずです。


ワンポイントアドバイス

オブジェクトのコンポーネントは一つ一つInspectorを確認しなければなりません。
しかし「lilEditorToolBox」を使用することで、Hierarchyから一目で何のコンポーネントが入っているかを確認することができます。(PhysBoneはC#)
詳しく知りたい方は過去の記事をご覧ください。


次に、この「VRC Phys Bone (Script)」というコンポーネントの設定を変更していきます。
下の各設定項目の解説をするので、あてはまる場合はその数値を調整して動作確認をしてみてください。

① PhysBoneの動きの調整

以下の項目は、PhysBoneの動きについての解説です。各自で状況に合わせて調整してみてください。

  • Integration Type
    →物理の計算精度。”Advanced” が高精度、”Simplified” が低精度。
    スカートの基本的にAdvancedに設定してください。
  • Pull
    →元の位置に戻ろうとする力。
    低すぎると、はねたまま戻らなくなります。高すぎると、カチカチになってしまいます。
  • Momentum
    →動いた後に “慣性” がどれくらい残るか。
    低すぎると、すぐに止まるのでめくれにくくなります。高すぎると、勢いで前に跳ねます。
  • Stiffness
    →形を保つ力。高くすると形が崩れにくくなります。
    折れ曲がるようにめくれる場合は、上げてください。
  • Gravity
    →重さ・重力。プラス値で上方向、マイナス値で下方向。
    プラス方向だと浮きやすくなるので、0もしくはマイナス値に設定します。
  • Gravity Falloff
    →重力の影響が根本から先端までどのくらい変化するか。
    基本的に0のままで問題ありません。
  • Immobile Type
    →何を固定とするか。”All Motion” 全体に影響させる、”Y Motion” Y方向に固定する、”None” 何も固定しない(最も揺れる)
    スカートの基本的にAll Motionに設定してください。
  • Immobile
    →どの程度動かないようにするかの数値。高いほど固定されて揺れずらくなる。
    少し入れると暴れにくくなります。0.4程度にして調整してください。

② PhysBoneの角度の制限

以下の項目は、PhysBoneの角度についての解説です。各自で状況に合わせて調整してみてください。

  • Limit Type
    →Angle, Polar, Hinge, Noneがある。
    スカートは基本的にNone以外に設定してください。
    • Angle
      →指定した角度の範囲内でだけボーンが動けるようにする設定(おすすめ)
    • Polar
      →角度と向きをセットで制御する制限方法。(難しい)
    • Hinge
      →1つの軸を中心にしか動けなくなる設定。(おすすめ)
    • None
      →完全に自由に動く設定。(難しい)
  • Max Angle(Limit Typeが”Angle”・”Hinge”時のみ)
    →最大どれだけ曲がるかの設定。
    衣装によって差がありますが、30~60の間で調整してみてください。
  • Max Pitch(Limit Typeが”Polar”時のみ)
    →X軸(前後)まわりの回転の設定。スカートの前後に揺れる角度を調節できる。
    衣装によって差がありますが、20~40の間で調整してみてください。
  • Max Yaw(Limit Typeが”Polar”時のみ)
    →Y軸(左右)まわりの回転の設定。スカートの左右への広がりを制限できる。
    衣装によって差がありますが、25~45の間で調整してみてください。
  • Rotation
    →ボーンの基準角度(どの向きを前・後・横と判断するか)の設定です。特にPitchが大切です。
    まずはPitch : 0 / Yaw : 0 / Roll : 0を基準にして、前側が跳ねてしまう場合のみPitchを+90、-90にして試すのがおすすめです。

③ PhysBoneの補助設定

PhysBoneの数値や角度を調整しても、めくれてしまうことがあります。その場合は「PhysBoneがどこから揺れ始めているのか」を意識する必要があります。

購入した衣装などは、正しく設定されていることがほとんどです。
よほど想定していない挙動をしているという場合のみ変更するようにしてください。

PhysBoneは、追加されているコンポートネントから、子ボーンのすべてに適用されます。
そのため、スカートの根元(腰に近い側)からすべてにPhysBoneが適用されていると、全体的にスカートがめくれてしまいます。

この画像の場合、Skirt_Rootがスカートの親でSkirt.001にPhysBoneが入っているので、Skirt.001から下のボーンが動きます。

もし、動かしたくないボーンがPhysBoneコンポーネントよりも下にある場合は「Ignore Transforms」に設定することで、揺らさなくすることができます。

設定方法は、PhysBoneの「Ignore Transforms」を開いて、値を固定したい数にし、揺らしたくないボーンを指定します。

④ Rotation Constraintがついている場合

アバターや衣装によっては、スカートの親オブジェクトに「Rotation Constraint」が設定されていることがあります。これは、”スカートの根元が身体の回転方向に結い重視、変な方向にねじれないようにする”ための仕組みです。

Rotation Constraint自体は、スカートがめくれる原因になることはほとんどありません。
しかし、PhysBoneの動きや角度を調整した後でも挙動があまり変わらない場合は、Rotation ConstraintのWeightが関係している可能性があります。

なので、Weightを少し下げてPhysBoneの動きを調整してみてください。

⑤ Blenderのウェイトについて

本記事では詳細なBlender操作については解説しませんが、PhysBoneを調整しても改善しない場合は、Blenderのウェイトが関係している場合があります。

PhysBoneは「ボーンがどう動くか」を制御する仕組みですが、その動きに対して、メッシュがどう変形するかは Blenderのウェイトで決まります。

なので、ウェイトの設定が正しく行われていないとPhysBoneだけでは解決できません。

購入した衣装などは、正しく設定されていることがほとんどです。
詳しいことについて知りたい方は、「Blender ウェイト」などで検索してみてください。

まとめ

本記事では、VRChatアバターのスカートがめくれてしまう現象について、主にPhysBoneの設定に焦点を当てて原因と対処方法を解説しました。

PhysBoneの挙動は複数のパラメータの組み合わせで決まるため、問題が起きたときは数値を感覚的に変えるのではなく、項目ごとの役割を理解したうえで段階的に調整することが重要です。

この記事の内容を参考に、Unity上での調整と動作確認を繰り返しながら、より自然で安定したスカート挙動を目指してみてください!


当ブログでは、アバター改変についての記事を公開しています。合わせてご覧ください👇