【VRChatアバター改変・軽量化基礎】FaceEmoを使った非破壊の表情変更及びメニュー自動作成とMMDモードの実装
アバター「ヒバ」を例とする。
https://furrychildren.booth.pm/items/2760457
アバターをつかっていて、表情の操作がアバターによって違っていて難しいと感じたことはないだろうか。
特に操作のなれているアバターに近いものに統一しておけばどのアバターでも表情操作が楽になる。
あるいはメニューから特殊な表情を選びたいということもあるだろう。
一部のアバターはMMDモード用のBlendShapesを持っているが、MMDの動作に重要なWritedefaultという設定がオフであるために実際のMMDモードでは機能しない状態に設定されている。
これはかつてVRChat公式がWritedefaultをオフにすることを推奨していたためである(2024/04現在はオンまたはオフに統一されていればよいということになっている)。
実際問題、Writedefaultがオンであることによる不具合はあちらこちらで報告が上がっていたこともあり、MMD用のBlendShapesだけ用意してあとはユーザーに任せるという形が取られていたのだ。
BlendShapesが用意されているのであればあとはWritedefaultをオンにするか、別途MMDモードという機能を実装すればMMDが動作する。
FaceEmoを使えばこれらすべてを一つで実装可能だ。
MMDについては別途MMDモードが用意される形になる。
ただし、これの導入に伴い元のFXレイヤーは置き換えられ無効化されるようになる。
非破壊であるためFaceEmoプレハブを除去すればすぐに元通りにできることを覚えておこう。
まずは以下からVPMリポジトリをVCC/VPMに追加する。
すでに行っている場合は飛ばして良い。
追加ができたらVCCから"Gesture Manager"と"Modular Avatar"と"FaceEmo"を追加する。
おそらく自動的に"Non-Destructive Modular Framework"も追加されるがこれも必須なので問題ない。
導入ができたらUnityでプロジェクトを開く。
これは必須ではないのだが、"Gesture Manager"を追加しておく。
これが便利なもので、いちいちアップロードしてVRChat内で確認しなくともUnity内でExpression Menuの挙動を確認できるのだ。
メニューバー(画面上部のメニュー)からツール→"Gesture Manager Emulator"を選択すればそれで準備完了だ。ヒエラルキーに勝手にGesture Managerが追加される。
ヒエラルキーにアバターが存在するとき、アバターのルートの位置にEmoとかかれたアイコンが表示されるようになる。
これがFaceEmoだ。
クリックしてみよう。
アバターに設定されている表情データを勝手に読み込んでくれる。
読み込み終わると、以下のような表示になる。
もしMMDモード追加だけが目的ならば、下の"WriteDefaultオフ (表情優先)"のラジオボタンを選択して"アバターに適用"をすれば完了だ。
表情を組み替えたい場合はこの画面でこのまま作業を行うことになる。
真ん中の"表情パターン"が表情変更セットを管理し、
右側の"表情"がセット内のジェスチャーと表情の対応を行うところになる。
"表情パターン"の上部にある「+」が描かれた用紙のアイコンをクリックすることで新しい表情パターンが追加され、
"表情"のプリセットを選択して「追加」とすることでジェスチャーに対応する空の設定をまとめて用意できる。
ジェスチャーに対応する表情設定が用意されたら、表情ビューアにカーソルを乗せることでメニューが表示され、ここから既存の表示を設定したり、新しく表情を用意したりができる。
フォルダーアイコンは既存の表情を選択するものだ。使いたい表情のアニメーションを指定すればその表情が使用可能になる。
「+」が描かれた用紙のアイコンをクリックすると新規表情を用意できる。アニメーションを名前を付けて保存したら作成画面がでるのでそこから編集する。
自分で新たな表情を作成する場合は、既存のシェイプキーを組み合わせて作ることになる。表情ビューアをよく見ながら組み合わせていこう。
0~100の段階でシェイプキーを途中まで変更することもできる。
不要なシェイプキーを追加してしまったらシェイプキーの隣りにある☓ボタンで追加したシェイプキーを削除できる。
ひととおりメニュー作成ができたら"アバターに適用"をすれば完了だ。
アバター直下に"FaceEmoPrefab"というプレハブが生成されているはず。
これがFaceEmo本体になる。完全にもとに戻したいときはこれを削除すればもとに戻る。非破壊編集の強みだ。
ここまで終わったら画面上部にある「▶」ボタンをクリックしてプレイモードに切り替えてみよう。
プレイモードに入っている状態でヒエラルキーにある"GestureManager"を選択する。
GestureManagerのインスペクターからVRChat内のメニューの操作を再現できる。
Expressions内のFaceEmoの中を確認しよう。
表情パターンというのが先程つくったジェスチャーと表情との対応セットだ。
複数作っていればこうして切り替えが効く。
"表情選択"の中には手動で表情を設定できる項目があり、これを使うことでメニューからの表情選択も可能になる。
"設定"の"ダンスギミック有効"がMMDモードとなる。これをONにした状態でMMDを開始すると口パクや表情変化が行われるようになるはずだ。
確認ができたら実際にアップロードして動作するか確認してみよう。