だいたい5倍速い!FastSpringBoneのご紹介!!

こんにちは。プログラマーのnotargsです。 実はちょっと前に、揺れものを高速化する「FastSpringBone」をリリースしていました!\な、なんだってー!/  

どうやって使うの?

config.jsonに下記の項目を追加してください。

 

動作速度の比較

試しに、アリシアソリッドちゃんを100人並べて動作速度を見てみます。

この画像には alt 属性が指定されておらず、ファイル名は SnapCrab_NoName_2019-2-27_19-51-32_No-00.png です  

こちらが従来のVRMSpringBoneで、処理におよそ5.4ミリ秒かかっています。

 

 

こちらが新しいFastSpringBoneです。なんと1/5の時間の1.142ミリ秒で処理が終わっています!

 

 

どうやっているの?

Unity2018から追加された「JobSystem」という仕組みを使っています。 髪の毛束ごとに並列で演算することで、メインスレッドの負荷を下げつつ高速化しました。  

毛束の画像
毛束

 

注意点

FastSpringBoneを有効化すると、下記のモデルについて、揺れものがプルプルするなど、多少挙動が変わってしまいます。

  • VRM Export時にPose Freezeされていないモデル
  • VRMSpringBoneのRootBonesが入れ子状に設定されてしまっているモデル

  該当する方はお手数ですが、下記の対応を行ってください。  

VRM Export時にPose Freezeされていないモデルの場合

VRM Export時にPose Freezeを行ってください。

 

 

VRMSpringBoneのRootBonesが入れ子状に設定されてしまっているモデルの場合

RootBonesが入れ子になってしまっているモデルは想定されていないため、揺らしたい房の根本のBoneのみをRootBoneとして設定する形に修正してください。