<aside> ⚠️ この記事は公式ドキュメンテーションの非公式翻訳です。VRChat運営の監修などは一切受けていません。誤訳があるかもしれないけどご了承くださいね。
</aside>
<aside> ⚠️ 翻訳の最終更新:2022/04/21
</aside>
PhysBonesとは、二次モーションをアバターに追加できるコンポーネントです。二次モーションで、物理演算でアバターの一部を動かして、低努力でよりリアルにできます。PhysBonesで髪の毛、耳、しっぽ、服などいろんなものをアニメーションできます!
PhysBonesはDynamic Bonesの後継機能です。基本が同じな部分が多いけど、大きな変更点も多いので、そのまま変換できない場合もあります。
PhysBonesの使い方サンプルがSDKのVRCSDK\\Examples3\\Dynamics\\Robot Avatar
にあります。
PhysBonesでアニメーションされるボーンの連鎖を指定します。ソフトボディや二次移動(髪の毛、しっぽ、耳など)を表現できます。設定が豊富で、いろいろとせってできます。
さらに、PhysBonesが自分、または他人で触れます!許可を出しているなら、他の人が自分のアバターのPhysBonesを掴んだり、掴みながらトリガーを押すことで固定できます。設定で固定を無効にしたり、掴みを無効にしたり、またはコリジョンを完全に外せます。
想定された使い方とは違いますが、独自のクロスコンポーネントを作るまでつなぎとしては、それなりのクロスシミュレーションとしても使えます。
Root Transform - このコンポーネントの管轄のはじめとなるTransform。空欄の場合は、このオブジェクトで始まります。
Ignore Transforms - このコンポーネントから影響を受けない、無視されるTransformのリスト。無視されたTransformの子も無視される。
Endpoint Position - ボーンの連鎖の末端に追加ボーンを作るためのベクター。ゼロ以外の場合のみ有効
<aside> 🚧 ルートボーンが一つで、子が複数で、孫がない場合は、Endpoint Positionが必須です!
例えば、下の例のRootBone
にPhysBoneを設定した場合、PhysBoneが動くためにはEndpoint Positionを設定することが必須です。これはDynamic Bonesとは違うので注意!
シングルボーンの場合
RootBone
同じルーツの複数のボーンの場合
RootBone
ChildBone1
ChildBone2
ChildBone3
ChildBone4
ChildBone毎に、その子に「エンドボーン」を追加することでも対策できますが、アーマチュア編集が必要になります。
</aside>
Integration Typeで、このコンポーネントに影響される計算の種類を指定します。設定によっては、Forces部分の選択肢が変わります。
Simplified
はより安定したもので、少しゆっくり目な動きをします。外部の衝撃や力からの影響が比較的に弱いが、設定が簡単です。Advanced
は安定性が比較的に低いが、より複雑な設定が可能で、外部の影響に反応しやすいです。デフォルト設定ではどちらも似たような動きですが、設定をいじってみれば違いが判るはずです。