esperecyan / UniVRMExtensions

https://pokemori.booth.pm/items/1788660
MIT License
45 stars 3 forks source link

PhysBoneからSpringBoneへのパラメーター変換を修正 #11

Closed takecccc closed 10 months ago

takecccc commented 1 year ago
esperecyan commented 1 year ago

Pull Requestありがとうございます。 とりあえずカプセルコライダーの高さの方向が間違っていた件について取り込ませていただきました。

PancakeTorto1se commented 10 months ago

こちらのPRですが少しの間止まっているようですが、取り込みに向けてお手伝いすることは可能でしょうか? 元のコミットに対して上記のコメントを反映させた変更案を作成してみました。 https://github.com/PancakeTorto1se/UniVRMExtensions/tree/fix-converter-parameter

takecccc commented 10 months ago

コメントいただいたまま放置してしまいすみません。 @PancakeTorto1se さんに提案いただいた内容を反映しながら、コミットを整理しました。 パラメーター追加と閾値変更でコミットを分けて欲しいとのコメントがあったので、rebaseして整理してあります。

閾値の調整については当初ガンマ補正を組み合わせていましたが、 変換の根拠がなかったためリニアな範囲変換に変更しました。

各コンポーネントの値の範囲を以下にまとめました。

VRCPhysBone param min max default
pull 0 1 0.2
spring 0 1 0.2
stiffness 0 1 0.2
gravity -1 1 0
immobile 0 1 0
VRMSpringBone param min max default
stiffness 0 4 1
gravityPower 0 2 0
drag force 0 1 0.4
DynamicBone param min max default
damping 0 1 0.1
elasticity 0 1 0.1
stiffness 0 1 0.1
inert 0 1 0.1
gravity - - Vector3(0,0,0)
esperecyan commented 10 months ago

お二方とも有り難うございます。

コードを見ると問題なさそうなのですが、コミットを適用するとなぜかVRMSpringBoneからVRCPhysBoneへの変換で、重力が0になるため、調査中です。

esperecyan commented 10 months ago

↑の件修正できました

takecccc commented 10 months ago

値の代入が漏れていたのですね。ご対応ありがとうございます。

gsdoko0150 commented 2 months ago

こちらについて修正が行われていたようなので確認したのですが、Gravityについては現時点でも閾値を突破して変換されています。(添付画像1枚目がPhysBonesの設定値、2枚目が変換後のSpringboneの設定値です) 数値を見る限り、PhysBones→Springboneで本来はGravityの数値を2倍にするところ、20倍になっているようです(この逆も然りで、本来はSpringbone→PhysBonesでGrabvityの数値を1/2にする必要があるところ、1/20になっているようです) image image