VRM アバター設定を行ってみる

boothで以前購入した「幽狐族のお姉様」ですが、諸事情により眠らせていました。
BeatSaber購入を機にVRゲームプレイを動画に取りたいと思い、アバターとしてこちらのキャラクターを利用することにしました。
幽狐族のお姉様はVRM未同梱!
アバターは「Virtual Motion Capture(ばきゃも)」というソフトを利用することにしました。BeatSaberと相性が良く、セットアップも簡単だったので「アルディナ」さんのVRMを取り込んだら、すぐにVRゲームの動作を作ることができました
ただ、幽狐族のお姉様はVRMが同梱されていないため、ばきゃもで使うことができません。
そこで、VRM公式マニュアルを参考に、幽狐族のお姉様のVRMファイルを作成してみることにしました
作成環境
環境は以下の通り
・Unity 2020 2.7f1
・UniVRM v0.66.0
作業手順は公式マニュアルに書かれているため、手順通りに進めていきます。
幽狐族のお姉様をVRMで出力
幽狐族のお姉様のVRM作成手順を紹介します
付属のfbxファイルをVRMとして出力
必須パッケージを読み込みます。
・「幽弧族のお姉様」のUnityPackageを読み込む
・UniVRM Ver0.66を読み込む
読み込みが完了すると「幽弧さん」フォルダとVRM0のメニューが追加されます

VRM出力設定を行います
・「幽弧さん」フォルダのmodel.fbxをシーンに配置する
・「幽弧さん」フォルダのMaterialsのシェーダーをすべて「MToon」に変更する

・UnityメニューのVRM0をクリックし、VRMエクスポート画面を表示する
・Title、Version、Authorの項目を入力し、Exportボタンを押す

ここまでの作業でVRMファイルが作成されます
ばきゃもに取り込み、動作確認
VRMファイルをばきゃもに取り込みキャリブレーションを行えば、アバターとして利用することができます

ただ、この状態では揺れ物や瞬きなどの設定は一切含まれていないため、単純に体の動きとキャラクターの動きが連動するだけになります。
次はVRMに揺れ物や表情を付ける作業を行います
幽狐族のお姉様のVRMに各種設定を行う
揺れ物の設定
VRMを出力すると、VRMファイルと一緒にプレハブも生成されます。
プレハブをUnityのシーンに取り込み、各種設定を行います。

揺れ物は「secondary」というオブジェクトにスクリプトがアタッチされていて、そこに対して設定を入れ込みます。
幽弧さんの場合、合計20個揺れ物を設定しました

Unityの再生ボタンを押せば、揺れ物がどのように動くか確認することができます

揺れ物の当たり判定の設定
このままではスカートが体を突き抜けてしまうので、揺れ物用の当たり判定を付けます。
マニュアルによると、当たり判定を設定したいボーンに「VRMSpringBoneColliderGroup」スクリプトをアタッチすればよいとのことでした
幽子さんは以下のように設定してみました。
紫が当たり判定、黄色が揺れ物制御用の当たり判定となります

合計8か所のボーンに当たり判定を組み込みました

表情の設定
マニュアルに沿って設定を行っていきます
VRM Blend Shape Proxyに設定されている「Blend Shape Avator」の設定を行います

Blend Shape Avatorを開くと、それぞれの表情に対応するボタンがあるので、一つ一つ設定していきます
(例えば、Aなら口を開けた表情 など)

ブレンドシェイプのプレビューはインスペクター下部のプレビューエリアで確認できます

新規で表情を追加する場合は「Create Blend Shape Clip」をクリックします

視線の設定を行う
視線の確認用に、視線のターゲットとなるオブジェクト、頭のボーンを設定することで視線の確認が行えます

設定内容の確認を行う
Unityのプレイボタンをクリックし、動作を確認していきます
・モデルを動かせば、揺れ物の確認ができます
・視線確認用のターゲットオブジェクトを動かすと、視線の確認ができます
・VRM Blend Shape Proxyの設定を変えると、表情の確認ができます

以上
はじめての作業だったため、半日ほどかかりましたがひとまずVRMアバターを作成することができました。
これを使用すれば、VRM対応アプリに読み込ませることができるので活用方法が広がりますね。
ばきゃもに取り込むとこんな感じで動きます

boothではいろいろなアバターが販売されていますが、幽弧さんのようにVRMファイルが付属しないモデルもあります。そんな時にVRMファイルの作成方法を知っておけば、活用方法も広がるのではと思います。