VRMはヒューマノイド型3Dモデルの国産規格で、Unityで扱われることが多いと思いますが、VRM1.0以降では揺れものをはじめとしたVRM Spring Boneの挙動がVRM0.Xから大きく変わっています。VRM0だと簡単に揺らせることができたのにVRM1ではうんともすんとも動かず、困ってしまいます。
この記事では、VRMコンソーシアムのGitHubで聞いた情報をもとにVRM1.0でのSpringBoneの動かし方を説明します!
VRM0.xの揺れもの設定
以下、VRoidStudio(正式版)から出力したVRMモデルを例に述べます。
VRM0.xでは揺れもの設定を行うVRM Spring Boneコンポーネントはすべてsecondaryに集約されています。
「Bust」とか「Skirt」などコメントが書いてあるのでどこの揺れ型設定か分かる場合も多いのですが、髪の毛の揺れ方及びVRoid Studioにて髪の毛編集機能を使って作られたアクセサリその他もろもろは全て一様に「Hair」というコメントしかついていないので、耳飾りを髪の毛編集で作った場合などは「どのHairが耳飾りなのか?」を一個一個見て探す必要があります。
その代わり、Unityが再生状態になってさえいればVRM Spring Boneのパラメータを変更するだけでリアルタイムに見た目に反映されます。
VRM1.0の揺れもの設定
VRM1.0ではVRM Spring Boneのコンポーネントは髪・胸・スカートなどそれぞれのパーツに紐付けられるように変更されました。
なので、あまたある髪のSpringBoneから耳飾りなど特定のSpringBoneを探すことはやりやすくなりました。VRM1.0のSpringBoneでは、重力設定はVRM10 Spring Bone Jointというコンポーネントで行います。
その代わり、Unityを再生状態にしてSpringBoneの重力設定のパラメータを変えても、VRM0.xの時のようにリアルタイムに見た目に反映してくれません。
GitHubの開発議論で聞いてみたところ、これはVRM1.0の仕様によるもので、処理の高速化を可能にするために明示的にバッファの再構築処理を走らせないと設定が見た目に反映されないようにしたとのことでした。
つまり、バッファの再構築を走らせるスクリプトをユーザーが書いて実行しなければならないこととなります。
それってどうやるの。。?スクリプトってどう書くの。。?については、GitHubの下記投稿をご覧ください。
以上、VRM1.0のSpringBoneの仕様変更についてでした~!