Skip to content

Instantly share code, notes, and snippets.

@kb10uy
Last active April 26, 2022 16:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kb10uy/87f39c48f0ecec10d92afa29302be1f9 to your computer and use it in GitHub Desktop.
Save kb10uy/87f39c48f0ecec10d92afa29302be1f9 to your computer and use it in GitHub Desktop.
VRChat PhysBones のパラメーターについての検証メモ

VRChat PhysBones パラメーター挙動検証メモ

公式の見解ではなくあくまで kb10uy 独自の検証・観察に基づくものであることに留意されたし。

検証方針

  • 1 本だけのシンプルな振り子と 4~5 本のチェーンを使う
  • 中間値の挙動は考えず、0 の挙動と 1 の挙動が lerp によってのみ補完されると仮定する
  • 注目するパラメーター以外は相関しないなら 0 で固定する

語彙

  • PB: VRChat PhysBones
  • DB: Dynamic Bones
  • dT: PB が姿勢を計算する間隔(FixedUpdate 間隔であるところの 0.05s な気がする)
  • Rest Position: 設計時の PB の姿勢。重力は考えない

各パラメーターの考察

Pull

Amount of force used to return bones to their rest position.

Rest Position に向かって働く力の大きさ。

  • At Zero:
    • 一切戻る力が働かない
    • Gravity も 0 ならば、親が動いたり掴まれたりしない限り動かないようになる。
  • At One:
    • 一瞬で戻る
    • dT で Rest Position に戻るぶんだけの力が働いている?

Spring (Simplified)

  • At Zero: TBC
  • At One: TBC

Momentum (Advanced)

The amount bones will wobble when trying to reach their rest position. Only available in Advanced Integration Type. Despite the description being the same, the effect is slightly different than Spring.

平たく言えば慣性。前の運動量をどれだけ次フレームに引き継ぐか。

  • At Zero:
    • 一切引き継がず、すぐに止まる
  • At One: TBC
    • (恐らく)完全に運動量を引き継ぐ
    • ただし角度ベースではなく位置ベースのようなので、あまりにも速い角速度をもつ場合はかなり減衰する
    • 1rad/s を切ったあたりから程度安定する気がする(ほんまか?)

Stiffness (Advanced)

The amount bones will try to stay at their resting position. Only available in Advanced Integration Type.

ワールド空間でその場にとどまろうとする力。 PB がもっている運動量を相殺する。

  • At Zero:
    • 影響しない
  • At One:
    • 完全に元の位置を維持しようとする
    • もちろん他のボーンの制約から動かなければならない量は動く

Immobile

Reduces the effect movement has on bones. A value of one means the bones will always stay in their rest position unless moved by collision or grabbed.

親のボーンによって子のボーンが動かされるとき、親との相対位置をどれくらい維持するか。 0 にすると怠そうな感じになる。

  • At Zero:
    • 親との相対位置を維持しない
    • 子の位置をできるだけ維持するように角度が変化する
  • At One:
    • 親との相対位置を完全に維持する

Gravity

Amount of gravity applied to bones. Positive value pulls bones down, negative pulls upwards.

重力の影響。鉛直方向下向きが正であることに注意(DB ではワールド軸そのままだったので正負が逆だった)。次元はおそらく Pull と同じ。 性質的に 0.49 にすると真空・無摩擦の地球と同じ挙動になる気がするが果たしてどうだろうか?

  • At Zero:
    • 重力は影響しない
  • At One:
    • dT ごとに 1m/s が加算される?
    • Pull による力と相殺する
    • 性質上無限大の重力にはならない

Gravity Falloff

Rest Position からの角度に応じて Gravity の影響を減衰する。

  • At Zero:
    • どの角度でも Gravity の値を適用する。
  • At One:
    • 完全に Rest Position の角度のとき一切重力の影響を受けなくなる。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment