無料かつUnityだけで自分のアバターを顔トラ対応化させる方法【VRChat】
今回の手法の説明
本記事は、
「マイナーアバターでフェイシャルトラッキングをしたい」
「表情改変と同じ要領で顔トラしたい」
方々向けの記事となります。
上記の動画のフェイシャルトラッキングセットアップは2時間前後でした。
作業は既存のBlendShapeを流用する方法で、"全て無料"で作ります。
Unityだけ使用します。
またApple ARKit FaceTracking向けセットアップをベースとしています。
そのため、iPhone用いたParfectSync対応アプリに対応させやすい設計です。
つまり、顔トラ対応のVR機器を持ってなくても使い道がある、間口の広いアバターのセットアップとなります。
今回の作業は、アバターに新しい表情のBlendShapeを追加していく作業となります。
通常の表情改変では、AnimationClipを作成,編集する過程で、BlendShapeを微調整することが多いと思います。
今回はAnimationClipではなく、新しいBlendShapeとして新規登録していきます。
どちらの手法でもBlendShapeを調整するには違いないので、表情改変と同じ要領で行えると思います。
では実際に必要なBlendShapeの数はというと、PefectSync準拠の眉毛3種類,視線4種類,目3種類,頬2種類,鼻1種類,顎3種類,口15種類,舌1種類……。
合わせると合計30種類、Left/Rightなどで分かれるものもカウントすれば52個のBlendShapeを新規登録していきます。
「30種類で52個ものBlendShapeを設定するの…!?途方もないじゃん!」と感じるかもしれませんが、実際にはシンプルな表情が大半なので難しくありません…。たぶん…。
下記にまとめてあります。
全てのBlendShapeが用意されてなくても動くため、必要な部分だけでも大丈夫です。
(実際、VRChatで通常利用するにはいらないので私はいつも除外してるBlendShapeもあります。)
まずは眉毛を動かすところから始めてみましょう。
作業は以下の工程となります。
基本的にはBlendShapeを追加したらアップロードするだけです。やっていきましょう!
使用するUnityツール
今回は以下のツールを使用します。予め全てインポートしても構いません。
BlendShapeInserter BlendShapeを一括登録するツールです。
BlendShapeSimpleEditor BlendShapeを編集するツールです。
BlendShapeEditor BlendShapeを高度に編集するツールです。(任意)
VRCFT - Jerrry's Templates 非破壊でアバターをVRCFT対応にするアセットです。
VRCFury 海外版ModularAvatarです。上記のFT対応ツールを使用するために必要です。
1. アバターに顔トラ用BlendShapeを追加する
早速、FacialTracking用のBlendShapeを設定していきます。
トラブル防止のため、最初は改変済みではなくバニラ状態のアバターから始めるのを推奨します。
また、最初はBlendShapeが多めのアバターで試すのがオススメです。
今回私は、ちゃかぽ先生が作られたブルーアーカイブ バニーアスナに対して設定を行っていきます。
本記事では眉毛だけFacialTrackingに対応させたいと思いますので、実際にどのような表情改変をすればいいのか確認してみましょう。
眉毛は下記3種類だけです。ここではざっくり「今回はこの3種類作るんだ」ぐらいの認識で大丈夫です。
3種類ではありますが、[browDown]と[brownOuterUp]に関してはLeft/Rightも必要ですので、合計5個のBlendShapeを作成することになります。
①アバターに顔トラ用のBlendShapeを一括登録する
実際に作業をやっていきましょう。
まずはフェイシャルトラッキング用のBlendShapeをアバターに一括登録します。
BlendShapeInserterをインポートしてください。
インポートが完了したら、上部メニューのToolsから起動できます。
こちらにアクセスして「ARkitBlendShapeList」というシートを画面下部から選択してください。
そこのリストをコピペして実行すると、アバターにBlendShapeが一括登録されます。
次からは、これらBlendShapeに対して編集を行っていきます。
②BlendShapeSimpleEditorでBlendShapeを編集する
次に、登録したBlendShapeを編集していきます。
BlendShapeSimpleEditorをインポートしてください。
インポートが完了したら、上部メニューのToolsから起動します。
ここの段階で、前述の3種類5個の眉毛の表情を作成してください。
少々時間がかかるかと思いますが、前述の見本の眉毛を見返しながら、なるべく同じような表情を目指して一つづつ作っていきましょう。
「BlendShapeの種類が足りなくて見本通りに再現できないんだけど…」という場合は、後述に対策方法を記載しています。
ひとまず未完成のままアップロードして制作の流れを先に体験するのを推奨します。
2. アップロードの準備をする
もうアップロードするだけです…!
ここまでで眉毛の表情の改変が完了したら、早速アップロード…といきたいところですが、1つチェックポイントがあります。
パラメーターです。
①VRC Expression Parametersを95以下にする
これから使用するVRCFT - Jerrry's Templatesはエクスプレッションメニューのパラメーターを161も使用します。
VRChatは256が上限であるため、既存のパラメーターを最低でも95パラメータ以下にする必要があります。
Exメニューのパラメーターに関しては話が長くなるので割愛しますが、減らしてもアバターの使用に問題がないパラメーターを探して減らしましょう。
②アバターにVRCFT - Jerrry's Templatesを追加する
パラメーターの確認が完了したら、アバターに顔トラのセットアップを自動的にやってくれるVRCFT - Jerrry's Templatesをインポートします。
また、そのためにはVRCFuryが必要なので、こちらも事前にインポートしましょう。
2つのツールのインポートが完了したら「VRCFury - Face Tracking - ARKit Blendshapes」を探します。
場所はPackages >VRCFT - Jerrry's Templates > Prefabsにあります。
文字検索してもいいでしょう。
3. 完成!アップロード!
終わったら早速アップロードしていきましょう。
アップロードの際に、以下の画像の表示が出る場合があります。
VRCFuryのWrite Defaultsに関する表示です。
とりあえずSkipして、もしアバターに問題が生じた場合はAuto-fIxしましょう。
実際にアップロードしてQuetProで眉毛の動作を確認しました。
片目隠れのキャラにしてしまったので、もう片方の眉毛が確認できません😭ですが、眉毛がちゃんと動いているのがわかります。
同じ要領で全てのBlendShapeの設定を行ったのが下記の動画となります。
もしVR機器やVRCFTのフェイシャルトラッキングのセットアップが完了していなかったらそちらを行ってください。
表情アニメーションが干渉する場合
表情アニメーションと干渉したり、コントローラ操作の表情と乗算されてしまう場合などがあります。
その場合はFXのウェイトを消すなどの対応をしてしまうのが手っ取り早いです。
---------------ここからおまけ------------------
BlendShapeの種類を増やす方法
本noteの手法は既存のBlendShapeを流用する方法であるため、既存のBlendShapeの種類が少ないほど設定が難しくなっていきます。
そこで、BlendShapeの種類を増やす方法をここに紹介します。
といっても、メッシュの頂点を選択して動かす…となるともはやモデラーの作業です。
ここでは、あくまで既存のBlendShapeを高度に編集することで種類を増やす方法となります。
左右分割が必要なBlendShapeの対策方法
BlendShapeによっては、Left/Rightが用意されておらず、左右両方同時にしか動かせないものがあります…。
この場合はBlendShapeEditorを使用すれば分割可能です(Simpleの方ではない)
インポートしたら、上部メニューの"Tool"から開けます。(Toolsではない)
BlendShapeを逆方向に動作させたい時の対策方法
既存のBLendShapeによっては、動かしたい方法とは逆のBlendShapeしか用意されていないことがあります。
今回私が直面したのは上まぶたです。
上方向に上げたいのに、用意されているBlendShapeは100%で下方向に下げるものしかありませんでした。
そこで、前述でも利用したBlendShapeEditorのinverse機能で対応できます。
BlendShapeEditorのさらに詳しい使い方は下記にまとめています。
さらに効率よく作業するために
私の作業フローではありますが一部ご紹介します。
説明の都合で最初から表情を変更していきましたが、私の場合は、本当は最初から表情をいじり出すのではなく、必要なBlendShapeの値を全てメモしていきます。
メモをしながら、必要なBLendShapeには分割やInverseの編集を行い、全てのメモが揃ったらアバターへの実装を開始します。
表情をチェックしてメモする段階では、私はFaceEmoを使用しています。
他のツールなども一通り利用しましたが、編集エディタの使い勝手がとても良く、FaceEmoでBlendShapeの値をメモしていきます。
スプレッドシートは下記に公開しますので、よろしければお使いください。
必ず、パーソナルストレージにコピーしてから利用してください。
一番時間がかかるのは、やはり表情のメモの段階で、セットアップにはだいたい2時間前後にかかる想定です。
デフォルトのBlendShapeの種類が少ないアバターほど時間がかかる傾向にあります。
既存のBlendShapeの数が非常に少なかったり、出来がどうしても満足いかない場合
本記事の方法は既存の表情BlendShapeを流用する方法であるため、BlendShapeが非常に少ないアバターでは厳しめです。
その場合は、メッシュを指定して完全新規のBlendShapeを作るHaï's FaceTra Shape Creator(有料)をオススメします。
私は使用していませんが、このツールでは顔トラ用のBlendShapeを新規作成する都合上、既存の表情を流用する本記事の方法より極めればクオリティも高いはずです。
以下の記事が参考になります。
ちょっとだけ解説
VRCFTでは、認識するBlendShapeの名前が決まっています。
以下のリンクがその名称一覧です。
認識するBlendShape名があれば、VRCFTはそれを使用して表情を変えています。
今回は上記の命名規則ではなく、Appleが策定したARKit,ParfectSyncの命名規則を使用しています。
理由はBlendShapeの設定項目が少なめに抑えることができ、かつ個人的にはQuestProで十分に動く上に、PerfectSync対応のソフトウェアでも流用できるからです。
PefectSync対応なら、本noteの作り方で作成したアバターをVRMに変換して、iPhoneをカメラに流用してVtuberのような使い方にも流用できます。
ARKit,PerfectSync用BlendShapeがある3Dモデルを作成したら、VRCFT - Jerrry's TemplatesでVRCFT用に変換、VRChatで使用できる形にしてもらいます。これだけでVRChatで使用できるようになります。
ここの処理に関しては非破壊です。
QuestPro,PerfectSync,VRCFTで用いるBlendShapeの名前の違いと設定項目の数の違いは以下のスプレッドシートに乗っています。
VRCFT - Jerrry's Templatesは、PerfectSyncでもQuestProで用いるなら問題ない程度に変換してくれます。
終わりに
最後までお読みいただきありがとうございました。
余談ですが、BlendShapeExporter & ImpoterというBlendShapeだけをやり取りできるツールがあります。
メッシュからBlendShapeの値をだけを抽出するため、同じアバター所有者同士でないと復元できないはずです。
マイナーアバターを使用してるフレンドに本noteで作成したFaceTracking用のBlendShapeSettingを配布する用途にもご活用できると思います。
もしこの記事が役に立ったらいいねボタンで反応してくれると嬉しいです。(Noteに未登録でもできるらしいです。)