ばーちゃるなれっじ Unityのエラー、アバター改変、イベントを検索 アプリで開く
‹ 戻る#アバター

PhysBoneの基礎 揺れものの仕組みを知る

髪や服、しっぽが自然に揺れる——あの動きを作っているのがPhysBone(VRC PhysBone)です。アバター改変で必ず触れることになる機能なので、仕組みと調整の勘所、そしてパフォーマンスとの付き合い方を押さえておきましょう。この記事は VRChat Creators Docs「PhysBones」(2026年8月27日更新、2026年9月16日確認)を元にしています。

PhysBoneの基礎 揺れものの仕組みを知るの本文画像

PhysBoneとは

VRChat公式の揺れもの機能で、ボーン(骨)に揺れの物理挙動を与えるコンポーネントです。髪やしっぽの中にはボーンが入っていて、それが動くと見た目も追従して動きます。PhysBoneは、そのボーンに「揺れ方」を与える役割です。

以前は外部アセットのDynamic Boneが主流でしたが、現在はPhysBoneが標準です。販売アバターは最初から設定済みのことがほとんどなので、多くの人にとっては「調整する機能」になります。

コンポーネントの置き方

PhysBoneコンポーネントは、揺らしたいボーンの一番上(根元)に付けます。Root Transformを空にすると、コンポーネントが付いているオブジェクト自身が根元になります。根元から下のボーンすべてが影響範囲で、Ignore Transformsに登録したボーンだけを除外できます。ひとつのコンポーネントで動かせるトランスフォームは最大256個です。

髪の毛先など、最後のボーンの先に「見えない終点」を足したいときはEndpoint Positionを使います。末端のボーンが1本でも短く見えるときに便利です。Multi-Child Typeは、根元から複数の子ボーンが枝分かれしているとき、根元自体をどう扱うかの設定です。

VersionとIntegration Type

Versionは1.0と1.1があり、新しく設定するなら1.1を選びます。1.1では引っ張ったときの伸び縮み(Stretch / Squish)が使えます。Integration Typeは物理計算の方式で、Simplifiedは安定して少し鈍い動き、Advancedは反応が良い代わりに安定性が下がります。Simplifiedでは「Spring」、Advancedでは「Momentum」と「Stiffness」が表示されるように、方式によって項目名が変わります。

PhysBoneの基礎 揺れものの仕組みを知るの本文画像

よく触るパラメータと「どちらに動かすか」

スライダーの意味が分かると、迷わず調整できます。

・Pull — 元の位置に戻ろうとする力。上げると揺れが早く収まり、下げるとゆらゆらと残る
・Spring(Simplified)/ Momentum(Advanced) — 戻るときの行き過ぎ、いわゆるぷるぷる感。上げると跳ねる
・Stiffness(Advancedのみ) — 元の姿勢から離れにくさ。上げると形が崩れにくい
・Gravity — 正で下に垂れ、負で上に持ち上がる。Gravity Falloffは「静止しているときにどれだけ重力を打ち消すか」
・Immobile — 体の移動や回転で揺れる度合いを減らす。上げると歩いても髪が暴れない

調整の方向は単純です。

・揺れすぎる髪を落ち着かせたい → PullやImmobileを上げる、Spring / Momentumを下げる
・もっとふわふわさせたい → Pullを下げる、Spring / Momentumを少し上げる
・歩くたびに髪が跳ねる → Immobileを上げる

数値を少し変えては再生して確認、の繰り返しが基本です。一度に大きく変えると、どの変更が効いたのか分からなくなります。項目をひとつずつ動かすのが結局早道です。

カーブで「根元は硬く、先端は柔らかく」

ほとんどの項目の横にある「C」ボタンを押すと、値をカーブにできます。横軸が根元から先端までの位置、縦軸が値です。たとえばPullを根元で高く、先端で低くすると、根元はしっかり支えつつ毛先だけ軽やかに揺れる自然な髪になります。Radius(当たり半径)をカーブにして根元を太く、先端を細くするのも定番です。

Limitsで可動範囲を制限する

Limitsは「どこまで曲がってよいか」の設定です。Noneは制限なし、Angleは円錐状に角度を制限、Hingeは一方向だけ、Polarは方向ごとに細かく制限できます。貫通対策として非常に有効で、体側に曲がる方向だけ制限すればコライダーを増やすより軽く済みます。ただしPolarは他より計算が重いので、必要なときだけ使います。

PhysBoneの基礎 揺れものの仕組みを知るの本文画像

コライダーでめり込みを防ぐ

髪が肩や体にめり込む場合は、コライダー(当たり判定)の設定を確認します。体側にPhysBone Colliderを置き、PhysBone側のCollidersリストに登録すると、揺れものがそれを避けるようになります。Radiusが0のままだと衝突しないので、まずRadiusを確認してください。Allow CollisionをTrueにすると、リストに関係なくすべてのコライダーと判定します。

ただしコライダーも数が増えれば負荷になります。目立つ部分(胸・肩・腕)に絞って設定するのが現実的です。なお衝突判定はコンポーネントを中心とした10m×10m×10mの範囲内でのみ働きます。

掴める・触れる設定

PhysBoneには「他人が掴める」「触ると反応する」といった設定もあります。

・Allow Grabbing — 他人が掴めるか
・Allow Posing — 掴んだ位置で固定できるか
・Grab Movement — 0で引っ張られてゆっくり追従、1で即座に手の位置へ
・Snap To Hand — 掴んだ瞬間に手の位置へ吸い付く
・Max Stretch / Max Squish(v1.1) — 元の長さの何倍まで伸び縮みするか

しっぽや髪を引っ張られたくない場合は、Allow Grabbingをオフにしておくこともできます。逆に、交流の中で触れ合いを楽しみたい場合はオンのままにしておく、という選択もあります。どちらが正解ということはなく、自分が快適に過ごせる設定を選べば構いません。

アニメーターと連携する

Parameterに名前を入れると、掴まれている(_IsGrabbed)、ポーズ固定されている(_IsPosed)、曲がり角度(_Angle)、伸び(_Stretch)、縮み(_Squish)がアニメーターのパラメータとして使えます。「しっぽを掴まれたら表情が変わる」といったギミックはこの仕組みで作ります。Is Animatedは、PhysBoneの対象ボーンをアニメーションでも動かしたいときにオンにします。オフのままだとアニメーションの動きが無視されます。

パフォーマンスへの影響

PhysBoneの数や影響するボーン数が増えるほど負荷が上がり、アバターのパフォーマンスランクにも影響します。ランク判定に関わる項目は「PhysBoneコンポーネント数」「影響トランスフォーム数」「コライダー数」「衝突判定数」の4つです。PCではPoorの上限がそれぞれ32個・256・32・512、Android(Quest)では8個・64・16・64と、Android側がはるかに厳しくなっています。

特に注意したいのが衣装を重ね着したときの重複です。使っていない衣装を非表示にしただけでは、揺れものの設定は残ったままカウントされることがあります。着ない衣装は削除する、対応する揺れもの設定も一緒に消す、という整理を習慣にすると軽いアバターを保てます。

PhysBoneの基礎 揺れものの仕組みを知るの本文画像

調整の手順

1. Unityの再生ボタンを押し、シーンビューでアバターを軽く動かして現状を見る
2. 気になる部位のPhysBoneをひとつ選び、PullかImmobileから動かす
3. 貫通が出るならLimits(Angle)で曲がる範囲を制限し、足りなければコライダーを足す
4. 気に入った値をメモしてから再生を止める(再生中の変更は止めると元に戻る)
5. 止めた状態で値を入力し直し、もう一度再生して確認

再生中に変えた値は、再生を止めると消えます。これを知らないと「せっかく調整したのに戻ってしまった」となりがちです。コンポーネント右上のメニューから「Copy Component」して停止後に「Paste Component Values」する方法もあります。

つまずきやすいポイント

揺れない
対象のボーンが正しく指定されていない可能性があります。Root Transformと、Ignore Transformsに入っていないかを確認してください。アニメーションで同じボーンを動かしている場合は、Is Animatedもチェックします。

激しく暴れる
パラメータが極端になっているか、コライダーと干渉している場合があります。Advancedで暴れるならSimplifiedに切り替えるのもひとつの手です。まず初期値に近い設定へ戻してから調整し直しましょう。

掴むと伸びすぎる
Version 1.1でMax Stretchが大きすぎます。0.2〜0.5程度まで下げるか、Allow Grabbingをオフにします。

削除したパーツの設定が残っている
ランクだけが悪化する典型例です。パーツを消したら、対応する揺れもの設定も確認します。

アバターを無効化したら揺れものの位置がずれた
Reset When Disabledをオンにすると、コンポーネントが無効化されたとき初期位置に戻ります。衣装切り替えで揺れものが変な位置に残る場合に有効です。

よくある質問

Q. Dynamic Boneのアバターはどうする?
A. 古いアセット前提の構成でも、VRChat SDKにDynamic BoneからPhysBoneへ変換する機能があります。作業前にバックアップを取ってから進めてください。

Q. Quest対応版でも使える?
A. 使えますが、上限がPCよりずっと低く、Poorでも8コンポーネント・64トランスフォームまでです。数を絞る前提で考えましょう。

Q. 何個までなら大丈夫?
A. 明確な正解はありません。パフォーマンスランクの判定を目安に、一段上げられる範囲を目標にすると分かりやすくなります。ランクの具体的な数値は「アバターが灰色に? 表示設定とパフォーマンスランク(Performance Rank)の基本」にまとめています。

引用記事アバターが灰色に? 表示設定とパフォーマンスランク(Performance Rank)の基本初心者ガイド

Q. SimplifiedとAdvancedはどちらを選ぶ?
A. 迷ったらSimplifiedです。安定していて調整もしやすく、多くの販売アバターもこちらで設定されています。反応の良さが欲しい部位だけAdvancedにするのが現実的です。

Q. 軽量化の全体像を知りたい
A. 別記事「アバター軽量化の実践 パフォーマンスランクを上げる順番」で、効果の大きい順にまとめています。

引用記事アバター軽量化の実践 パフォーマンスランクを上げる順番アバター

「Pull と Immobile で落ち着かせ、Limits で貫通を防ぎ、コライダーは最小限」。この順番で触れば、揺れの調整で迷うことはほとんどなくなります。