Dynamic Boneのパラメーター解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/efd38cf9-4113-4a5a-380d-454d53be2df1.png)
**Root**
物理を適用するトランスフォーム階層のルート。
ここで対象のオブジェクトを指定するので、コンポーネント本体はどこにアタッチしても大丈夫です。
対象のボーンにアタッチするも良し、空のゲームオブジェクトを作成して、そこにひとまとめにしてアタッチしておくも良しです。
個人的には、空のゲームオブジェクトを複数作成して、髪の毛、スカートなどグループ分けして管理するのが好みです。

**Update Rate**
内部の物理シミュレーションの速度。単位はフレーム/秒。
個々の数値を下げてもパフォーマンスはほとんど変わらないらしいので、基本的には初期値のままで良さそうです。
参考 ⇒ [[VRChat] DynamicBoneがパフォーマンスに与える影響の調査報告](http://www.doll-profile.com/blog/131)

**Update Mode**
基本的にはDefaultでおｋです。
Unityのフレームレートの仕組みが分かると使い道が分かります。

**Damping**
ボーンがどれだけ減速するか。
値を小さくするほど、バネのように跳ねる動きをするようになります。

↓0.1の時
![68c473ac-4eef-4d4f-bb2a-0bd9194115e3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/1687057d-bb0f-185c-e7c2-2cc865ff9b57.gif)

↓0.5の時
![adade188-9a57-410a-9c81-25e66ebbf5af.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/901d7db4-4699-accb-bef5-12d736d709d8.gif)

**Elasticity**
各ボーンを元の向きに戻すのにかかる力の大きさ。
値を小さくするほど、動きがゆっくりになります。

↓0.02の時
![81dc2b28-ad4c-4dfe-b435-fdd4d8095004.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/5e574fca-feb8-f47e-10e7-7ba0ad41afa3.gif)

↓0.1の時
![4d07a598-932e-4217-84a0-b403e4dcb311.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/fe98b68a-9ca5-b8b9-fba4-6092d946585a.gif)

**Stiffness**
骨がどれだけ元の向きを保っているか。
値を大きくするほど、動かなくなります。
この値を大きくし過ぎるとコライダーと接触した時の動きが不自然になったり、プルプルしたりするので、最大でも0.4くらいにしとくのがオススメです。

↓0.1の時
![1cce455c-d484-4656-acac-13a7c5e7d215.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/bde9dac6-67ff-abe6-fd58-55add929f748.gif)

↓0.1でコライダーと接触した時
![3c6e4b49-a6b9-426b-9b7a-d9de412a09d9.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/fa1c93ed-de09-d234-67aa-d62a0f19e69b.gif)

↓0.9の時
![20817c6a-e8eb-4a32-bb2e-807dc0c7ad2a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/2d96da27-6d78-cbaa-fb85-5ee4573c435c.gif)

↓0.9でコライダーと接触した時
![50b5ebdf-9021-47b4-a094-f4361f264a4a.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283994/afaaae31-5c97-dd75-4dff-686665330cbc.gif)

**Inert**
物理シミュレーションにおいて、キャラクターの位置の変化をどれだけ無視するかを指定します。

**Friction**
衝突したときにボーンがどれだけ減速するかを指定します。

**Radius**
各ボーンは、コライダーと衝突するための球体になります。Radiusは球体の大きさを表します。

**～Distrib**
パラメーターが階層の連鎖によってどのように変化するか。カーブの値は対応するパラメータに乗算されます。
これに関しては、↓の記事が非常に分かりやすいです。
[【アドカレ2018】参考にして欲しい「揺れものパラメータ」の事例紹介 / カーブグラフ「Distrib」の使い方を解説 「Dynamic Bone 第五弾」 - Unity AssetStoreまとめ](https://www.asset-sale.net/entry/Dynamic_Bone_180815#%E3%82%AB%E3%83%BC%E3%83%96%E3%82%B0%E3%83%A9%E3%83%95%E3%81%A7%E8%A4%87%E9%9B%91%E3%81%AA%E6%8F%BA%E3%82%8C%E3%82%92%E6%A5%B5%E3%82%81%E3%82%88%E3%81%86)

**End Length**
End Lengthが0でない場合、トランスフォーム階層の最後に余分なボーンが生成されます。
長さは、最後の2つのボーンの距離を乗じたものです。
エンドジョイント、リーフボーンなどと呼ばれる末端のボーンが無いスケルトンを揺らしたい場合に設定します。

**End Offset**
End Offsetが0でない場合、余分なボーンがトランスフォーム階層の最後に生成されます。
オフセットはキャラクターのローカル空間になります。

**Gravity**
ワールドスペースでボーンにかかる力です。キャラクターの初期ポーズにかかる部分的な力はキャンセルされます。
重力を適用したい場合は、この項目のY軸にマイナスの値を入れます。
値が大きすぎると全く揺れなくなるので、-0.01くらいの小さい値から調整していくのがオススメです。

**Force**
ワールドスペースでボーンにかかる力です。

**Colliders**
当たり判定の設定です。ここで指定したコライダーとだけ接触します。
ここの数が多いほど重くなるので、必要最小限のコライダーとだけ接触するようにしましょう。

**Exclusions**
物理シミュレーションから除外されるボーンです。
     
**Freeze Axis**
ボーンを指定した平面上で動くように拘束します。

**Distant Disable, Reference Object, Distance To Object**
キャラクターがカメラやプレイヤーから離れている場合、物理シミュレーションを自動的に無効にします。
参照オブジェクトがない場合は、デフォルトのメインカメラが使用されます。
VRChatではDistant Disableは必ずOnにしないといけません。