見出し画像

VRM Spring Boneの設定におけるCenterの役割

VRMモデルのSpring boneは、コライダーがその揺れの制御に関わります。ところが、静止時ではコライダーの正常な動作が確認できても、移動時、つまり、揺れものがなびく挙動をとると、それが体を貫通することがあります。それを防ぐには、Center(日本語訳だと中心)というプロパティーが重要になります。


1. Centerプロパティーの影響

VRMフォーマットで3Dアバターの「ココちゃん」を制作中ですが、また、半日ほど作業が止まる事案が発生したので、備忘録として記事にしました。
 下の画像(Fig.1)をご覧ください。clusterにアバターをアップロードし、こちらに向かって走らせている様子です。
 左の図が正常で、右の図は、前髪やスカートが体を貫通しています。

Fig.1
cluster内での揺れものの確認。Spring boneの設定で、Centerの項目に「Root」を登録した場合(左)と、何も登録しなかった場合(右)を並べました。

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)のようなメニューが表示されます。

Fig.2
Blender4.3.2にVRM Add-on for Blender(v2.34.1)をインストールした画面です
VRM1.0を用いている場合ですが、0.xでもほとんど同じ画面にないります

そして、最も下にある項目「Spring Bone」を開きます。すると下図(Fig3)のような設定画面が現れます。

VRM0.xと1.0では若干、メニュー構成が変わります。

Fig.3
画面左がVRM0.x 、右がVRM1.0のメニュー構成です
赤いラインを引いた項目を追っていくと、黄色のラインの「Center(中心)」を設定する項目が見つかります

上図(Fig.3)の黄色のラインで示した箇所が、Center(中心)を設定する項目です。通常はRootボーンを選択設定します。

ちなみに、VRM1.0のみの機能ですが、「アニメーションを有効にする」にチェックを入れると、3Dビューポート上で、揺れものの挙動を確認することができます。ただし、Spring boneの数が多くなると、かなり重くなり、最悪、Blenderがフリーズすることがあるので、ご注意ください。

3. Unityでの設定

Unityでは以下の手順になります。

通常の設定を行うように、AssetsエリアにVRMファイルをドラッグアンドドロップし、そして、Hierarchyに移します(Fig.4)。

Fig.4

そして、Hierarchyに持ってきたアバターを選択し、画面右エリアのInspectorにある、VRMInstanceを探します。

Fig.5

「VRMInstance」には3つのタブがあって、その中の「SpringBone」のタブを選びます。するとSpringsのリストが下図(Fig.6)のように展開されます。

Fig.6

このリストから、Center を設定したいSpringを選び、そこが青くハイライトされると、リストの下に、Centerの設定欄を見つけることができます。

Fig.7
黄色ラインで示した設定欄の右端にある丸印をクリックし、そのリストから「Root」を選択します。直接文字入力はできません

欄内右の丸印をクリックすると、多数のボーンがリストとして並びます。Rootであれば、検索窓から”ro”と入れて絞り込んだ方が、早く設定できるかも知れません。

なお、今回示したUnityのバージョンは、2022.3.22f1UniVRMはv0.128.0のVRM1.0用です。

まとめ

Centerプロパティーは、VRM Spring Bone の設定では地味な存在ですが、使用環境に持ってきて、はじめて、その必要性に気付くケースがあると思います。Vroidでは、最初から設定されているので、それを設定しないと、どのようになるのか実感が湧きにくいと思いますが、アバターを動かしてみて、コライダーが効いていないように見えたら、Centerの設定を確認してみてはどうでしょうか。
 VRMフォーマットでモデリングする場合、その仕様に絡んだトラブルは、自力で解決する以外に手がないケースが多く、それゆえ、ささいなトラブルでも情報共有したいところです。

ここまでお付き合いくださり、ありがとうございました。

いいなと思ったら応援しよう!