Unity
VR

VRIK(FinalIK)を適用するとVRMの揺れもの(VRM Spring Bone)の動きがおかしくなる時の対処

原因

VRIKのFixTransformsによって、揺れものの計算結果が上書きされていることによるものでした。

VRIKのFixTransformsがどういうものかというと、ソースコードには以下のように書いてありました。

If true, will fix all the Transforms used by the solver to their initial state in each Update. This prevents potential problems with unanimated bones and animator culling with a small cost of performance. Not recommended for CCD and FABRIK solvers.

IKで計算されない各Transformの値を毎フレーム初期値でリセットする機能でしょうか。
これによって、揺れもののTransform値が上書きされてしまったようです。

外せるならそれで解決しそうですが、私の場合はオフだとメッシュがプルプルしてたのでつけたままでの対処を考えました。

解決方法

Spring Boneの実行順をFixTransformsよりも後に設定する。

ProjectSetttings>ScriptExecutionOrderを以下のように設定してください。

aaaaaaa.PNG

FinalIKはインポート時にデフォルトより後に実行されるように設定されています。
なので、SpringBoneをそれよりも後に実行するように指定してやれば良いです。

その他気にするところ

Animatorが設定されている場合は、それによって制御されている場合があるので確認してみてください。
(AnimatorコンポーネントのControllerがnullなら何もしてこないはずです。)

参考

ほぼこれと同じ内容でした。