VRM Spring Boneの設定におけるCenterの役割
VRMモデルのSpring boneは、コライダーがその揺れの制御に関わります。ところが、静止時ではコライダーの正常な動作が確認できても、移動時、つまり、揺れものがなびく挙動をとると、それが体を貫通することがあります。それを防ぐには、Center(日本語訳だと中心)というプロパティーが重要になります。
1. Centerプロパティーの影響
VRMフォーマットで3Dアバターの「ココちゃん」を制作中ですが、また、半日ほど作業が止まる事案が発生したので、備忘録として記事にしました。
下の画像(Fig.1)をご覧ください。clusterにアバターをアップロードし、こちらに向かって走らせている様子です。
左の図が正常で、右の図は、前髪やスカートが体を貫通しています。
Spring boneの各種パラメーターの設定では、様々なモーションを試しながら最適化を行いました。走っているモーションでも確認しましたが、ルームランナーのように、移動を伴わなかったため、clusterで走らせてみて、はじめて、上図のような問題が確認できました。
これまで、振袖モデルを中心に、アバターを制作してきましたが、その場合、長い袖がなびく様子を見せたかったので、Centerの設定は、あえて空欄にしていたことをすっかり忘れていました。
そして、久しぶり行ったスカートの揺れもの設定では、太ももに設置したコライダーが、アバターを走らせると、ほとんど効かないことが分かり、この設定を思い出すまで、予想外に時間がかかりました。
このCenterの役割については、下に示すページで解説されています。
Centerについては、VRM1.0と0.xの両バージョンに存在するプロパティーです。VRoid Studioで出力されるモデルは、デフォルト設定であれば、Centerの設定に「Root」がすでに登録されているので、特に意識する必要はありません。
このような、アバターの移動時、コライダーの効きが悪い(効かない)状況が生まれた時、Centerの設定をチェックしてみるとよいでしょう。通常、アバターの場合、 rootボーンが登録されています。
2. Blenderアドオンでの設定
ちなみに、Blenderアドオンでの「Center(中心)」の設定は以下の手順で行います。
まず、基本画面において、画面右のアウトライナー、および、プロパティーエリアの境界にある横向きのタブ(見えない場合、3Dビューポート内にマウスカーソルを置き、Nキーを押す)が見える思います。
そこに並んでいるタブのうち「VRM」をクリックします。もし、見当たらない場合は、画面上部に並んでいるタブから「編集」→「プロパティー」→「アドオン」とクリックし、「VRM Add-on for Blender」が表示されているか、そして、それがONになっているかを確認してください。
BlenderにVRMモデルがインポートされていれば、VRMタブをクリックすると、下図(Fig.2)のようなメニューが表示されます。
そして、最も下にある項目「Spring Bone」を開きます。すると下図(Fig3)のような設定画面が現れます。
VRM0.xと1.0では若干、メニュー構成が変わります。
上図(Fig.3)の黄色のラインで示した箇所が、Center(中心)を設定する項目です。通常はRootボーンを選択設定します。
ちなみに、VRM1.0のみの機能ですが、「アニメーションを有効にする」にチェックを入れると、3Dビューポート上で、揺れものの挙動を確認することができます。ただし、Spring boneの数が多くなると、かなり重くなり、最悪、Blenderがフリーズすることがあるので、ご注意ください。
3. Unityでの設定
Unityでは以下の手順になります。
通常の設定を行うように、AssetsエリアにVRMファイルをドラッグアンドドロップし、そして、Hierarchyに移します(Fig.4)。
そして、Hierarchyに持ってきたアバターを選択し、画面右エリアのInspectorにある、VRMInstanceを探します。
「VRMInstance」には3つのタブがあって、その中の「SpringBone」のタブを選びます。するとSpringsのリストが下図(Fig.6)のように展開されます。
このリストから、Center を設定したいSpringを選び、そこが青くハイライトされると、リストの下に、Centerの設定欄を見つけることができます。
欄内右の丸印をクリックすると、多数のボーンがリストとして並びます。Rootであれば、検索窓から”ro”と入れて絞り込んだ方が、早く設定できるかも知れません。
なお、今回示したUnityのバージョンは、2022.3.22f1、UniVRMはv0.128.0のVRM1.0用です。
まとめ
Centerプロパティーは、VRM Spring Bone の設定では地味な存在ですが、使用環境に持ってきて、はじめて、その必要性に気付くケースがあると思います。Vroidでは、最初から設定されているので、それを設定しないと、どのようになるのか実感が湧きにくいと思いますが、アバターを動かしてみて、コライダーが効いていないように見えたら、Centerの設定を確認してみてはどうでしょうか。
VRMフォーマットでモデリングする場合、その仕様に絡んだトラブルは、自力で解決する以外に手がないケースが多く、それゆえ、ささいなトラブルでも情報共有したいところです。
ここまでお付き合いくださり、ありがとうございました。